2016-06-23 14 views
1

私は別の有料ジオコーディングサービスの顧客で、現在GoogleのジオコーディングAPIを評価しています。私は既に多くの質問があることを知っていますが、私は答えを見つけていません。Google Geocode API - 関連性

問題を理解するために、このクエリを自分で実行してください。

正しい通りは "semptstr"です。小さなtypoを使ってクエリを実行すると、 "semstr"が混乱する結果になります。

https://maps.googleapis.com/maps/api/geocode/json?address=semstr. 21 85457 woerth Germany&key={{YOUR KEY}} 

上記のアドレスをジオコーディングすると、直接一致すると見なされるlocation_type "ROOFTOP"が印刷されます。

アドレスジオコード

{ 
"results" : [ 
    { 
    "address_components" : [ 
     { 
      "long_name" : "21", 
      "short_name" : "21", 
      "types" : [ "street_number" ] 
     }, 
     { 
      "long_name" : "Seestraße", 
      "short_name" : "Seestraße", 
      "types" : [ "route" ] 
     }, 
     { 
      "long_name" : "Rettenbach", 
      "short_name" : "Rettenbach", 
      "types" : [ "locality", "political" ] 
     }, 
     { 
      "long_name" : "Oberpfalz", 
      "short_name" : "Oberpfalz", 
      "types" : [ "administrative_area_level_2", "political" ] 
     }, 
     { 
      "long_name" : "Bayern", 
      "short_name" : "BY", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
      "long_name" : "Deutschland", 
      "short_name" : "DE", 
      "types" : [ "country", "political" ] 
     }, 
     { 
      "long_name" : "93191", 
      "short_name" : "93191", 
      "types" : [ "postal_code" ] 
     } 
    ], 
    "formatted_address" : "Seestraße 21, 93191 Rettenbach, Deutschland", 
    "geometry" : { 
     "location" : { 
      "lat" : 49.07218, 
      "lng" : 12.45707 
     }, 
     "location_type" : "ROOFTOP", 
     "viewport" : { 
      "northeast" : { 
       "lat" : 49.07352898029149, 
       "lng" : 12.4584189802915 
      }, 
      "southwest" : { 
       "lat" : 49.07083101970849, 
       "lng" : 12.4557210197085 
      } 
     } 
    }, 
    "partial_match" : true, 
    "place_id" : "ChIJHdXdJbnhn0cRgImKyuFq2UM", 
    "types" : [ "street_address" ] 
    } 
], 
"status" : "OK" 
} 

を次のようにあなたは結果を見れば、それはROOFTOPを言うと精度についてのフィールドがありません。私はROOFTOPと完全に一致すると考えています。

実際には、クエリの場所を閉じることさえありません。郵便番号93191は別の都市にあり、約150キロ離れています。

関連性のパラメータを探しています。私は近似を知っていますが、INTERPOLATEDは存在しますが、この場合、結果には表示されません。

このような結果は、私が追加のクエリパラメータを見逃していない限り、私のケースでは深刻な生産または商用アプリケーションには使用できません。

私は都市の座標を持っていないので、境界ボックスは使用できません。それは私が2倍のコストと2倍の使用につながるクエリを2回実行させるでしょう。

郵便番号を比較すると、関数の動作が非常に厳密になります。

したがって、アドレスが完全一致ではないことをクエリに基づいてどのように知ることができますか?私が逃したパラメータはありますか?

+0

あなたは&components = country:Germanyなどのようなクエリでコンポーネントフィルタリングを使用できます。ちなみに私はGoogle geocode apiであなたのアドレスを試してみると、結果として近似しています。この住所を渡してもよろしいですか? – Hakunamatata

+0

ご返信ありがとうございます。ご覧ください:http://i.imgur.com/3AtZ9gT.png - それは私のために "ROOFTOP"を表示します。私はあなたに同意します "近似"はここで正しいはずです。 – user3606329

+0

私のために「APPROXIMATE」を表示 –

答えて

0

公式の文書は見つかりませんでしたが、このコミュニティの回答の中には、ROOFTOPが最も正確な結果であることがわかりました。 API屋上、GEOMETRIC_CENTER、RANGE_INTERPOLATEDまたは近似のいずれかを返します

- 答えによると

herehereを掲載しました。 屋上は本質的に「死んでいる」 - APIが住所を建物に解決しました。それ以外に、あなたは "近い"程度に変化します。

「ROOFTOP」 - > 9 [他のすべて] - > 4〜8(テキスト文字列別名にも「GARBAGE」を読むかもしれない)

+0

住所は建物に解決されますリターン・パラメーターでそのことを伝えることなく、まったく別の都市で実行できます。住所の存在を確認したい場合、APIは別の都市の住所のROOFTOPを返します。 components = postal_code:85457を使用すると、結果はこの郵便番号に限定されます。小さな間違い85455は、ZERO_RESULTSになります。これは深刻な商用アプリケーションには使用できません。ここでmapは関連性パラメータ(0.00-1)を持っていますが、1に近い値はわずかな修正を加えた正確な一致です。 – user3606329

0

アドレスが完全に一致したかどうかを調べるための素晴らしい方法アドレス検証を使用することです。 MelissaData、Everything Location、SmartyStreetsなど、これを提供する多くのサービスがあります。ここで

は出力がSmartyStreets

A.からどのように見えるかの例ですsemstr. 21 85457 woerth Germany

B. Bアドレスが完全に検証されたことを示し、したがって、より正確Aよりもどのsemptstr. 21 85457 woerth Germany

注意。 (分析のセクションを見てください)。

アドレスが検証されているかどうかの情報は、アドレスが完全一致であるかどうかを示します。

免責事項:私はSmartyStreetsの仕事をしています。

0

apiを使用している場合、結果をバウンドボックスに制限することができます。その計算結果はおおよその結果となります。ボックス内に見つからない場合、結果は返されません。地域に制限することもできます: "& region = zyx" コンポーネントを使用して制限することもできます。コンポーネントは、郵便番号、郵便番号のようなものにすることができます。そのトリックは、結果が見つからない場合、API自体はコンポーネント自体の結果を返します。そして、私はそれがここで起こっていると思います。 あなたのステータスコードが「OK」を返し、正しい結果が得られているとシステムが判断したことがわかります。 管理と政治の境界が明確であることを確認するために、フィルタリングコンポーネントを変更する必要があります。

関連する問題