4

ベース都市 (geonameid) から半径 100 KM の場合、近くの都市を見つける必要があります。

私のスクリプトはpythonです。それを見つけるためのAPIはありますか?

ありがとう

4

3 に答える 3

10

都市のデータベースがある場合は、その特定のタスク用の SQL クエリを作成する方法を示すこの例を見てください。

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 を使用したい場合は、特にGoogle Geacoding APIと Reverse Geocoding をご覧ください。次のようなリクエスト:

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

指定した経度と緯度の可能な住所が表示されます。

残念ながら、Google Places API (近くの場所) は、レストラン、ショップ、バーなどでしか機能しません.

于 2012-02-01T11:43:53.307 に答える
4

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

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

近くの人口密集地を探す / リバース ジオコーディング

Web サービス タイプ: REST URL: api.geonames.org/findNearbyPlaceName? パラメータ : lat,lng, lang: 返された 'name' 要素の言語 (疑似言語コード 'local' は、ローカル言語でそれを返します)、radius: km 単位の半径 (オプション)、maxRows: 行の最大数 (デフォルトは 10)スタイル: SHORT、MEDIUM、LONG、FULL (デフォルト = MEDIUM)、返された xml ドキュメントの詳細度 結果: 緯度/経度クエリの最も近い人口の場所を xml ドキュメントとして返します。距離要素の単位は「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

于 2012-02-01T19:14:31.597 に答える
0

GeocodingAPIもPlacesAPIもあなたが望む方法であなたを助けてくれないのではないかと思います。

逆ジオコーディングを使用すると、特定の緯度の都市が表示されますが、その周辺の都市は表示されません。それでもAPIを配置しません。これらのAPIはさまざまな用途に使用されますが、今は興味がないと思います。

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

于 2012-02-01T16:05:02.603 に答える