web-dev-qa-db-ja.com

アドレス(テキストとして)をgps座標に変換する方法は?

私がテキストとしてアドレスを持っているとしましょう:

901 Cherry Ave. San Bruno、CA 94066 USA

この住所のGPS座標(経度と緯度)を特定するのに役立つ無料のサービスはありますか? (アプリケーションで使用するので、何らかのAPIにする必要があります)

テキストは任意の言語にすることができます。

13
LA_

住所を地理座標に変換するプロセスが呼び出されますgeocodingと呼ばれます。

データの使用方法に応じて、Googleから入手できるAPIがあります。詳細 ここ 。幸運を!

19
nihilogist

どのフレームワークを使用するかは実際にはわかりません。何か大きなものが必要な場合は、大きな驚きがあります。後で使用するためにこれらの情報をxmlに保存しない場合に備えて、1日あたり2.5Kリクエストの制限があります。したがって、現時点では、これをローカリゼーション用のOSM機能と組み合わせるより良い方法を見つけることができます。

3
HellBaby

このグーグルマップAPI3サービスを確認してくださいこれはグーグルマップAPIの逆ジオコーディングサービスです

http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding

http://googlegeodevelopers.blogspot.com/2010/03/introducing-new-google-geocoding-web.html

2
Pratik

以下は私が使用するコードです。 voncoxコードに基づいて準備しました(ありがとう)。 Zendを使いたくなかっただけです。
複数の住所をジオコーディングする必要がある場合は、このコードを任意の種類のループで閉じるだけですが、おそらくもっと速い方法があります。私はそれを約100のアドレスにのみ使用し、処理に約30秒かかりました。

$street="Lwowska 4"; $postcode="00-658"; $city="Warszawa"; $region="mazowieckie";

$a=$street.", ".$postcode.", ".$city.", ".$region;
$address = urlencode($a);
$link = "http://maps.google.com/maps/api/geocode/xml?address=".$address."&sensor=false";
$file = file_get_contents($link);

if(!$file)  {
  echo "Err: No access to Google service: ".$a."<br/>\n";
}else {
  $get = simplexml_load_string($file);

  if ($get->status == "OK") {
      $lat = (float) $get->result->geometry->location->lat;
      $long = (float) $get->result->geometry->location->lng;
      echo "lat: ".$lat."; long: ".$long."; ".$a."<br/>\n";
  }else{
    echo "Err: address not found: ".$a."<br/>\n";
  }
}
1
Marcin

参考までに、MapQuestのコミュニティライセンスには「オープン」APIがあり、裏側でnominatim/OpenStreetMapを使用します。

これは、コミュニティの「ライセンス済み」APIと同じAPI(インターフェースに関して)であり、後で簡単に移行できます。

オープンバージョンでは、アドレスが少し正確すぎる必要があることがわかりました。展開後の初日に、いくつかのアドレスを「見逃しました」。サービスがダウンしていると思いましたが、通りの名前には方向(SWなど)などの詳細がほとんど欠けていたことがわかりました。

ライセンス版を試してみたところ、スペルミスのあるアドレスも返されました。

コミュニティライセンスライセンスデータバージョンも無料ですが、Googleのものとほぼ同じ条件で制限されています。あなたが望むものであなたがすることができる「オープン」データ。

あなたがお金を払うことになろうとしているなら、YahooのBoss/Geoapiは少量で最も安いようです。彼らはただ無料版を持っていません。

0
Gerard ONeill

PhpとZendFrameworkを使用できる/使用する意思がある場合、ほとんどのGoogle MapsAPIはZend_Http_Clientを使用して抽象化されます。

例えば:

$address = '69 Some Road, Somewhere, NW1 8UJ';

$http = new Zend_Http_Client('google_maps_url');
$http->setParameterGet(array('address' => $address, 'sensor' => 'false'));
$get = $http->request();
$get = json_decode($get->getBody());

if ($get->status == self::GOOGLE_MAPS_SUCCESS) {
    $lat = (float) $get->results[0]->geometry->location->lat;
    $long = (float) $get->results[0]->geometry->location->lng;
}
0
voncox