1

私たちはルート最適化サービスを運営しています。これらのルートは通常、小さな地域で 1 日に数回 100 件以上の配達を伴います。多くの配達が同じ郵便番号に存在する場合があります。

そのため、MapPoint を使用してウェイポイントを追加し、郵便番号と通り名/番地で実行を最適化します。

問題は、FindAddressResults()不適切な通りの名前で有効な郵便番号を指定して MapPoints 関数を呼び出すと、郵便番号が無視され、別の場所 (多くの場合、数百マイル離れたランダムな町) で通りの名前が検索されることです。

現在、ショップにデータの品質を改善するよう依頼することはできますが、これが確実に行われることは決してありません。

私の質問:を呼び出すときにFindAddressResults()、郵便番号よりも通り名を優先するデフォルトの動作とは対照的に、通り名よりも郵便番号を優先させる方法はありますか?

使用例(これはVB6で書かれています(尋ねないでください)-しかし、例/情報は役に立ちます):

'#### GeoCode using postcode & streetname
Set oResults = oMap.FindAddressResults(rsRequest("Request_Address"), , , , rsRequest("Request_Postalcode"))
If oResults.Count = 0 Then
    '#### Nothing was found, GeoCode using postcode only
    Set oResults = oMap.FindAddressResults(, , , , rsRequest("Request_Postalcode"))
End If

私が考えることができる唯一のことは、「最大距離」変数を設定することです.oResults []の最初の(最も一致する)アイテムがそのしきい値を超えている場合、デフォルトで郵便番号のみの検索になりますが、それはせいぜい失敗です.

EDIT 1 - これを思いついたところ、問題なく動作するようです:

Set oResults = oMap.FindAddressResults(rsRequest("Request_Address"), , , , rsRequest("Request_Postalcode"))
If oResults.ResultsQuality <> geoFirstResultGood Then
    echo (rsRequest("Request_Address") & " + " & rsRequest("Request_Postalcode") & " had poor results (" & CStr(oResults.ResultsQuality) & "), using postcode only instead...")
    Set oResults = oMap.FindAddressResults(, , , , rsRequest("Request_Postalcode"))
End If
4

1 に答える 1

1

はい、あなたは私が提案したであろう結果を思いついたでしょう:

  1. 番地でクエリを実行する
  2. あいまい/不良の場合はResultsQualityを確認してから...
  3. ...郵便番号だけで2番目のクエリを実行します

英国の住所でFindAddressResultsの品質を向上させる別の方法は、「良好な」品質の結果が得られるものが見つかるまで、FindAddressResultsへのいくつかの異なる呼び出しを試すことです。呼び出しごとに、パラメーターのバリエーションがわずかに異なります。イギリスの住所はかなりわかりやすいです。たとえば、家の名前は1行目(2行目を通りにする)のようになります。また、複数の場所(米国の用語では「都市」)が存在する場合があります。たとえば、村と都市/町。アドレスで。

まず、いくつかのテストデータを実行します。最高のパフォーマンスを発揮する組み合わせを見つけます。次に、「良好な」結果が見つかるまで、呼び出しシーケンスは最良の組み合わせ、2番目に良いなどから始まります。最後に、結果がない場合は、上記のように郵便番号のみの呼び出しを試すことができます。

于 2012-07-12T12:57:28.040 に答える