【问题标题】:Mappoint - prioritise post code over street name in FindAddressResults()Mappoint - 在 FindAddressResults() 中将邮政编码优先于街道名称
【发布时间】:2012-07-12 09:28:58
【问题描述】:

我们提供路线优化服务,这些路线通常涉及每天多次在一个小区域内进行 100 多个送货,很多送货可能存在于同一个邮政编码中。

因此,当我们使用 MapPoint 添加航点并优化邮政编码和街道名称/门牌号的运行时。

问题是,如果您使用错误的街道名称但有效的邮政编码调用 MapPoints FindAddressResults() 函数,它会忽略邮政编码并尝试在其他地方查找街道名称,通常是在数百英里外的随机城镇。

现在,虽然我们可以要求商店提高他们的数据质量,但这永远不会可靠地完成。

我的问题:当调用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[] 中的第一个(最佳匹配)项目超过该阈值,则默认为仅邮政编码搜索 - 但这将是一个拙劣的最好的。

编辑 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

【问题讨论】:

    标签: geocoding mappoint


    【解决方案1】:

    是的,您已经提出了我会建议的结果:

    1. 查询街道地址
    2. 检查 ResultsQuality 是否有歧义/错误,然后...
    3. ...仅使用邮政编码执行第二个查询

    另一种提高英国地址的 FindAddressResults 质量的方法是尝试对 FindAddressResults 进行几次不同的调用,直到找到一个提供“良好”质量结果的调用。每次调用的参数都会略有不同。英国地址非常灵活,例如房屋名称可能是 1 号线(使 2 号线成为街道);并且可能有不止一个地方(美国用语中的“城市”) - 例如。一个村庄和一个城市/城镇。在地址中。

    首先运行一些测试数据;并找到表现最佳的组合。然后,您的呼叫序列将从最佳组合、次佳组合等开始,直到找到“好”结果。最后,如果没有结果,您可以尝试使用 Postcode-only 调用,如上。

    【讨论】:

    • 干杯,目前它是一个单线程应用程序(旧版 VB6 应用程序),它可以满足对 FindAddressResults() 的 1 次调用的需求,但是我将把它重写为一个多线程应用程序而不是接下来的几个月 - 届时我将研究 FindAddressResults() 的递归使用 - +1 并再次感谢。
    • 对不起,我并不是要暗示使用多线程。我的代码是单线程的,并连续调用 FindAddressResults。如果第一个不起作用,请尝试下一个。您可以根据测试数据中的成功率选择顺序,以便在第一次调用而不是最后一次调用中最有可能成功 - 这对速度有很大帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多