与えられた:
- 街
- ジオポイント
質問:指定されたジオポイントが都市に属しているかどうかを確認します。
私の現在の解決策は簡単です:
- 逆ジオコーディングを行います(私はpython googlemapsパッケージを使用しています)。これにより、結果ディクショナリが生成されます。
- 結果[' Placemark '][0]['AddressDetails']を調べて、 LocalityNameキーワードを探します。
- 見つかったLocalityNameが都市の名前と等しい場合、指定されたジオポイントは都市内にあると見なされます。
ここまでは順調ですね。最高のアルゴリズムでなくても、確かに最も単純です。ただし、問題があります。たとえば、次のようにします。
- 英国、アバディーン。
- lat = 57.14369、lng = -2.22314
GoogleMaps.reverse_geocode(57.14369, -2.22314)
次の結果が得られます。
{ u'Placemark': [ { u'AddressDetails': { u'Accuracy': 6,
u'Country': { u'CountryName': u'UK',
u'CountryNameCode': u'GB',
u'Thoroughfare': { u'ThoroughfareName': u'A944'}}},
u'ExtendedData': { u'LatLonBox': { u'east': -2.2200414,
u'north': 57.1480762,
u'south': 57.1453783,
u'west': -2.2239393}},
u'Point': { u'coordinates': [-2.221984, 57.1467683, 0]},
u'address': u'A944, Aberdeen, Aberdeen City AB15, UK',
u'id': u'p1'}],
u'_id': 7635459717214061L,
u'loc': [-2.2231, 57.1437]}
問題は、フォーマットされたアドレス(A944, Aberdeen, Aberdeen City AB15, UK
)が詳細に分割されていないことです-返されたアドレスAddressDetails
は本質的に役に立たないです。
したがって、返さaddress
れたものを手動で解析する必要があるように見えます。これは、一般的なケースでは実際のPITAのようです。
他の人がこの問題をどのように解決するのか知りたいです。GoogleMapsWebサービスAPIの使用は必須ではありません。
ありがとう。