2012-11-18 29 views
8

特定の地理座標が都市のリストからどのくらい離れているかを知りたい(「遠い」は座標と都市の間のユークリッド距離を意味し、道路を考慮しない)。このためには、イスラエルのすべての都市のためのバウンディングボックスを見つける必要があります。都市のバウンディングボックスを取得する

This postについては、国境のボックスについて説明していますが、都市レベルで必要です。

マップ上で手書きで四角形を描き、座標を抽出する以外に、長いリストの都市についてこの情報を取得する方法はありますか?

答えて

10

これらの都市のバウンディングボックスはwww.mapdevelopers.com/geocode_bounding_box.phpにあります。都市に入ると地図上にボックスが表示され、それぞれの緯度と経度が表示されます。うまくいけばそれはあなたに必要な情報を与えるでしょう。

1

私は、あなたは境界ボックスを必要としないが、都市の境界を考える。バウンディングボックスでは分析が非常に粗く、バウンディングボックスを取得するためには、まず境界が必要です。

都市のリストだけがあれば、すべての都市の境界である空間データを取得する必要があります。このデータを見つけるには、this linksを試してみてください。オープンストリートマップをチェックすることをお勧めします。次に、GISソフトウェア(例えば、オープンソースのQuantum GIS)を使用して、あなたのポイントと都市境界の間のユークリッド距離を計算することができます。

これが役に立ちます。

3

長いリストの都市については、Google Geocoding serviceを使用してください。セットアップが完了したら、任意の言語を使用してREST APIにアクセスできます。たとえば、一般的な標準のrequestsライブラリをPythonに使用できます。

また、Google独自のGoogleマップJava API,Python APIまたはJavaScript APIを使用することもできます。いずれにもGoogleジオコーディングサービスが含まれています。

ここでPythonとJavaライブラリの簡単な例を参照してください:https://developers.google.com/maps/documentation/webservices/client-library。ここで

は、ジオコーディングの結果のスキーマです:

results[]: { 
types[]: string, 
formatted_address: string, 
address_components[]: { 
    short_name: string, 
    long_name: string, 
    postcode_localities[]: string, 
    types[]: string 
}, 
partial_match: boolean, 
place_id: string, 
postcode_localities[]: string, 
geometry: { 
    location: LatLng, 
    location_type: GeocoderLocationType 
    viewport: LatLngBounds, 
    bounds: LatLngBounds 
} 
} 

バウンディングボックスがgeometry>viewport変数に位置し、この

"viewport" : { 
      "northeast" : { 
       "lat" : 37.4238253802915, 
       "lng" : -122.0829009197085 
      }, 
      "southwest" : { 
       "lat" : 37.4211274197085, 
       "lng" : -122.0855988802915 
      } 
     } 
のように見えます
関連する問題