2012-02-01 16 views
3

基本都市(geonameid)から半径100kmを与えられたら、近くの都市を探す必要があります。都市の近くの都市(geonameid)をPythonで取得するには?

私のスクリプトはPythonで書かれています。それを見つけるためのAPIはありますか?あなたは都市のデータベースを持っている場合は

おかげ

+0

あなたはGeonamesのWebサービスを使用しているか、ローカルデータベースにダウンロードしたのですか? –

+0

私はGeonames webserviceを使用しています。 – shaikh

答えて

10

は、その特定のタスクのためのSQLクエリを構築する方法を示しthis exampleを見てみましょう。独自のデータベースや都市を持っているか、あなたは場所や特定の都市の座標を持つデータベースを作成するために喜んでいる場合

SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20; 

それではこのソリューションは、あなたのために動作します(どこかのインターネット上で利用できる場合があります)。

また、データベースがなく、GoogleマップなどのAPIを使用する場合は、特にThe Google Geacoding APIと逆ジオコーディングをご覧ください。次のようなリクエストがあります。

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.7,-73.9&sensor=false 

あなたが提供した経度と緯度の可能なアドレスが表示されます。

残念ながらGoogle Places APIが(近くの場所)のみのレストラン、ショップ、バーなどのようなもののために働く。..

+1

実際には、プレイスには、施設だけでなく、地域、国、行政単位、さらには複数のタイプも含まれています。http://code.google.com/apis/maps/documentation/places/supported_types .html –

+1

@ManoMarksはい、これらのタイプは「プレイス検索リクエスト送信時にPlaces APIでサポートされます」。 – MMM

+0

そうですね、あなたが作っているポイントは、「残念ながら、Google Places API(近くの場所)はレストラン、ショップ、バーなどのものでしか機能しません」と言われています。 –

0

私はジオコーディングAPIや場所APIのどちらも、あなたが望むように役立つだろう怖いです。

逆ジオコーディングでは、指定されたlatlngの都市が表示されますが、その周囲の都市は表示されません。 Places APIでもそうではありません。これらのAPIはさまざまな用途に使用されていますが、今は興味がないと思います。

あなたが望むAPIが見つからない限り、独自のデータベースを構築し、MMMが指摘するようなクエリを実行する必要があります。データベースを構築するには、Populated PlacesデータセットをNatural Earth's 1:10m Cultural Vectorsから使用できます。あなたはそれを処理し、あなたが都市と呼ぶ人口の多い場所から抽出するために、ある種のGISソフトウェアが必要です。

+0

OPは実際にGeonamesデータベースを使用しています –

+0

もっと簡単に、私は今日までGeonamesを見ていませんでした。 Fusion Tablesでは、お気に入りのcitiesXXXX表をインポートし、ST_INTERSECTS空間条件を使用してFusion Tables SQL APIを照会するだけで、このトリックを行うことができます。 – miguev

4

あなたはGeonamesのWebサービスを使用しているので、近くの地名を見つけるために、それに組み込まれた機能がありますように、それが見えます:

から:http://www.geonames.org/export/web-services.html

を逆ジオコーディング/近くの人口の場所を検索

Webサービスタイプ:REST URL:api.geonames.org/findNearbyPlaceName? lat、lng、lang:返される 'name'要素の言語( 疑似言語コード 'local'はローカル言語で返します) 半径:半径km(オプション)、maxRows:最大行数デフォルト: 10)スタイル:短く、中、長、大(デフォルト=中)、 の冗長性が返されます。xmlドキュメント結果: xlmドキュメントとしてlat/lngクエリに最も近い入力された場所を返します。距離要素の単位は 'km'です。例: http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo

このサービスは、JSON形式でもご覧になれます。 http://api.geonames.org/findNearbyPlaceNameJSON?lat=47.3&lng=9&username=demo

関連する問題