我有大约100,000条记录,我需要找到纬度和经度。目前我正在使用geokit-rails
进行地理编码。
我现在要做的是逐一循环记录以查找纬度和经度。但这非常耗时。有办法批量生产吗?任何批处理方法或类似的东西
请帮忙!
我能想到的唯一改进是使用find_each
Model.find_each :batch_size => 500 do |model|
#geocode
end
它将一次加载500个对象并循环遍历它们。我不认为你能做得比这更好,即使有一个本地方法来做,我认为性能也会是一样的。
我认为没有比这更快的方法了。我同意@Robin的观点,也许你可以做一点小小的改进,但是你不可能提高很多性能。
我建议,为了改进系统,插入,就像我以前在Rails 2上做的那样,几行代码来自动检测记录的经度和纬度,给定记录的地址和城市,一旦你必须创建一个新记录。这样,您就不会像您写的那样进行耗时的循环了!
@shop = Shop.new(params[:shop])
@coordinates = []
seek_str = @shop.city + "," + @shop.address
@coordinates = Geocoding.get(seek_str)
@shop.lat = @coordinates[0][:latitude]
@shop.lng = @coordinates[0][:longitude]
纬度和经度现在通过城市和地址进行地理编码。将记录的城市和地址与表单一起插入。考虑到这是Rails 2,也许你应该做一些编辑来让它在Rails 3上工作!