Ruby Gem Geocoder が Rails の郵便番号に誤った緯度値を与える
概要
郵便番号をジオコーディングするためにレールを使用しています。テストとして、次のコードを使用して郵便番号 60601 のコードを使用しました。
Geocoder.search(60601).first.latitude
ただし、この結果は 9.42233953846154 となり、これは正しくありません。正しい値は 41.something である必要があります。だからそれはかなり外れています。
正確な結果を得るより良い方法はありますか?
解決策
試してみてください、
Geocoder.search(60601)[1].latitude
この特定の「60601」郵便番号には地球上に複数の場所があるため、ここのハッシュから特定の住所を見つける必要があります。60601 を検索すると、そこに合計 3 つの場所があることを確認できます。
Geocoder.search(60601)
=>
[#<Geocoder::Result::Nominatim:0x00007faaf0440ac8
@cache_hit=nil,
@data=
{"place_id"=>328970067,
"licence"=>"Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"lat"=>"9.42233953846154",
"lon"=>"-84.15445643076923",
"class"=>"place",
"place_rank"=>21,
"importance"=>0.22500009999999993,
"addresstype"=>"postcode",
"name"=>"60601",
"display_name"=>"Quepos, Cantón Quepos, 60601, Puntarenas Province, Costa Rica",
"address"=>{"town"=>"Quepos", "county"=>"Cantón Quepos", "postcode"=>"60601", "province"=>"Puntarenas Province", "ISO3166-2-lvl4"=>"CR-P", "country"=>"Costa Rica", "country_code"=>"cr"},
"boundingbox"=>["9.2623395", "9.5823395", "-84.3144564", "-83.9944564"]}>,
#<Geocoder::Result::Nominatim:0x00007faaf04407d0
@cache_hit=nil,
@data=
{"place_id"=>331500121,
"licence"=>"Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"lat"=>"41.838471146546546",
"lon"=>"-87.80685671291292",
"class"=>"place",
"type"=>"postcode",
"place_rank"=>21,
"addresstype"=>"postcode",
"name"=>"60601",
"display_name"=>"Riverside, Riverside Township, Cook County, 60601, Illinois, United States",
"address"=>
{"village"=>"Riverside",
"municipality"=>"Riverside Township",
"county"=>"Cook County",
"postcode"=>"60601",
"state"=>"Illinois",
"ISO3166-2-lvl4"=>"US-IL",
"country"=>"United States",
"country_code"=>"us"},
"boundingbox"=>["41.6784711", "41.9984711", "-87.9668567", "-87.6468567"]}>,
#<Geocoder::Result::Nominatim:0x00007faaf04404d8
@cache_hit=nil,
{"place_id"=>331343428,
"licence"=>"Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"lat"=>"52.41794258392857",
"lon"=>"16.910198301785712",
"class"=>"place",
"type"=>"postcode",
"place_rank"=>25,
"importance"=>0.12500009999999995,
"addresstype"=>"postcode",
"name"=>"60-601",
"display_name"=>"Sołacz, Poznan, 60-601, Greater Poland Voivodeship, Poland",
"address"=>{"suburb"=>"Sołacz", "city"=>"Poznan", "postcode"=>"60-601", "state"=>"Greater Poland Voivodeship", "ISO3166-2-lvl4"=>"PL-30", "country"=>"Poland", "country_code"=>"pl"},
"boundingbox"=>["52.2579426", "52.5779426", "16.7501983", "17.0701983"]}>]