2011-12-30 10 views
1

私は緯度と経度を見つけるのに約10万レコードあります。現在、私はgeokit-railsをジオコーディングに使用しています。レールでバッチジオコーディングを行う方法3

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

助けてください!

+0

これを行うperlのサンプルリンクが見つかりましたhttp://code.activestate.com/ppm/Geo-Coder-Bing-Bulk/私はそう思います。私たちはルビーでこのようなことをしていますか? –

答えて

0

私は考えることができる唯一の改善は、それはそれらを介して、時間とループで500個のオブジェクトをロードしますfind_each

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

を使用しています。私はあなたがそれよりもはるかに優れているとは思わない、それを行うネイティブメソッドがあっても、パフォーマンスは同じだと私は思う。

0

私はそれを行うより速い方法はないと思います。私は@Robinに同意します。おそらくあなたはこの小さな改善を行うことができますが、パフォーマンスを大幅に改善することはできません。

私はシステムを改善するために、レール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でこれを行うには、いくつかの編集が必要です。

+0

これを行うperlのサンプルリンクが見つかりました。http://code.activestate.com/ppm/Geo-Coder-Bing-Bulk/私はそう思います。ルビーにはこういうものがありますか –

+0

面白いです。はい、使用しているジオキットの宝石はすでに同じ作業をしていて、それはperlのプラグインと似ています! - > https://github.com/andre/geokit-gem –

関連する問題