0

ユーザーが入力した大量の住所をジオコーディングしており、返される精度レベルに関心があります。私の目標は、特定の住所について可能な限り最高の精度スコアを取得することです。

http://maps.google.com/maps/geo?q= {address}&output=csv&sensor=false&key=xxに従って geocder API を呼び出します 。

施設名の有無にかかわらず、同じ住所に対して精度レベルが返されるようになりました

  1. q = Key Arena, 305 Harrison Street, Seattle, WA 98109 (精度は 5)
  2. q = 305 Harrison Street Seattle, WA 98109 (精度は 8)
  3. q = Key Arena, Seattle, WA 98109 (精度は 9.)

上記から明らかなように、通りの名前に施設/会場が追加されている場合、Google サーバーは最高の精度を返しません。

問題は:)完全なアドレスを(前提名/つまりケース1で)渡し、最大精度を取得する方法はありますか。(または、住所が施設/建物名と通り名で渡されたことをGoogleサーバーに伝える方法)

(ケース3だけを使用しない理由を考えている場合、答えは、これらはユーザーが入力した住所であり、前提として正確な住所で「私のお母さんの家」と入力できます。この場合、精度は5ではなく8になります)

4

2 に答える 2

0

非常に簡単です。if ステートメントを実行して精度を確認するだけです。低すぎる場合は、施設名なしで goecode してみてください。以下の私のケースでは、ユーザーが addr_1 に名前を入力した状況を説明するために、addr_2 と addr_3 を試しています。

$addr_1 = urlencode($row["addr_line1"]);
$addr_2 = urlencode($row["addr_line2"]);
$addr_3 = urlencode($row["addr_line3"]);
$city = urlencode($row['addr_city']);
$state = urlencode($row['addr_state']);
$postal = urlencode($row['addr_postalcode']);
$country = urlencode($row['addr_country']);

$address = format_address($addr_1, $city, $state, $postal, $country);
$base_url = "http://" . MAPS_HOST . "/maps/geo?output=json&key=" . KEY;

$request_url = $base_url . "&q=" . $address;
$geocode = geocode_address($request_url);

// check geocode accuracy and try again with different data if needed
if ($geocode['accuracy'] < 6) {
      // bad geocode, try addr_2
      $address2 = format_address($addr_2, $city, $state, $postal, $country);
      $request_url2 = $base_url . "&q=" . $address2;
      $geocode = geocode_address($request_url2);

      if ($geocode['accuracy'] < 6) {
        // bad geocode, try addr_3
        $address3 = format_address($addr_3, $city, $state, $postal, $country);
        $request_url3 = $base_url . "&q=" . $address3;
        $geocode = geocode_address($request_url3);
      }
}
// process results in $geocode below

format_address() と geocode_address() で行っていることの詳細については、PHP/MySQL を使用した住所のジオコーディングを参照してください。

于 2010-06-11T18:17:41.553 に答える
0

さて、今日、住所「Key Arena, 305 Harrison Street, Seattle, WA 98109」を確認したところ、9 という精度が返されました。ジオコーディング サービスに問題があったか、Google がアルゴリズムを変更したかのどちらかだと思います。

于 2010-06-30T20:53:00.797 に答える