0

与えられた:

  • ジオポイント

質問:指定されたジオポイントが都市に属しているかどうかを確認します。

私の現在の解決策は簡単です:

  1. 逆ジオコーディングを行います(私はpython googlemapsパッケージを使用しています)。これにより、結果ディクショナリが生成されます。
  2. 結果[' Placemark '][0]['AddressDetails']を調べて、 LocalityNameキーワードを探します。
  3. 見つかった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の使用は必須ではありません。

ありがとう。

4

1 に答える 1

1

http://maps.googleapis.com/maps/api/geocode/json?latlng=57.14369,-2.22314&sensor=falseの 逆ジオコーディングWebサービス

Pythonパッケージから投稿したよりもはるかに多くのデータが生成されます。

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "A944",
               "short_name" : "A944",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Aberdeen City",
               "short_name" : "Aberdeen City",
               "types" : [ "administrative_area_level_2", "political" ]
            },
...

これは法案に合うようです。あなたは「アバディーン市」を手に入れます。

于 2012-04-24T11:49:55.780 に答える