1

我有大约 100,000 条记录,我需要找到纬度和经度。目前我正在使用geokit-rails地理编码。

我现在正在做的是逐个循环记录以查找纬度和经度。但这非常耗时。有没有办法批量做到这一点?任何批处理方法或类似的东西。

请帮忙!

4

2 回答 2

0

我能想到的唯一改进是使用find_each

Model.find_each :batch_size => 500 do |model|
   #geocode
end

它将一次加载 500 个对象并循环遍历它们。我认为你不能做得比这更好,即使有本地方法可以做到这一点,我认为性能也是一样的。

于 2011-12-30T15:03:42.253 回答
0

我认为没有更快的方法来做到这一点。我同意@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 上运行!

于 2011-12-30T15:24:51.180 回答