1

緯度と経度を見つける必要がある約 100,000 のレコードがあります。現在geokit-rails、ジオコーディングに使用しています。

私が今やっていることは、レコードを 1 つずつループして緯度と経度を見つけることです。しかし、それは非常に時間がかかります。これを一括で行う方法はありますか?バッチ処理方法など。

助けてください!

4

2 に答える 2

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 に答える
0

私が考えることができる唯一の改善は、使用することですfind_each

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

一度に 500 個のオブジェクトをロードし、それらをループします。それ以上のことはできないと思いますが、本来のやり方があったとしても、パフォーマンスは同じだと思います。

于 2011-12-30T15:03:42.253 に答える