Geocoding OpenStreetMap/M的地理编码问题

Geocoding OpenStreetMap/M的地理编码问题,geocoding,openstreetmap,nominatim,Geocoding,Openstreetmap,Nominatim,我有一个网站,需要获得纬度和经度的地址输入的客户 Google/Bing/Yahoo对我们来说太贵了,所以我们选择了OpenStreetMap/Namingm 不幸的是,虽然它在测试期间工作正常,但它无法找到输入的大约50%的地址,这是一个大问题 有三件事我很想知道: 处理客户确实输入了错误地址的情况的最佳方法是什么?向他们发送电子邮件并要求他们更正?使用地址段直到找到某个内容 如果地址很好,但我在OpenStreetMap中找不到,那么处理这种情况的最佳方法是什么?还是我对提名的质疑有问题

我有一个网站,需要获得纬度和经度的地址输入的客户

Google/Bing/Yahoo对我们来说太贵了,所以我们选择了OpenStreetMap/Namingm

不幸的是,虽然它在测试期间工作正常,但它无法找到输入的大约50%的地址,这是一个大问题

有三件事我很想知道:

  • 处理客户确实输入了错误地址的情况的最佳方法是什么?向他们发送电子邮件并要求他们更正?使用地址段直到找到某个内容

  • 如果地址很好,但我在OpenStreetMap中找不到,那么处理这种情况的最佳方法是什么?还是我对提名的质疑有问题

  • 如果OpenStreetMap不能胜任这项任务,有人知道免费/便宜的替代方案吗?我知道这是一个开源协作,因此并不完整,但我认为它确实有很好的覆盖率,如果没有确切的位置,它会返回附近的位置——可能是,也许我用错了

  • 以下是一个例子:

    美国纽约州奥尔巴尼市利文顿大道182号,邮编:12210

    谷歌地图很容易发现这一点。
    提名找不到任何东西:

    我想你要找的是地址验证。谷歌、Namingm和其他公司只执行地址近似,这有助于在您不确定地址是什么的情况下查找地址,但结果只是最好的猜测

    我帮助开发了一个API,它根据严格的CASS验证和地理编码地址™ 称为LiveAddress的需求。我通过Google、Namingm和LiveAddress API运行了您的示例地址,结果如下:

    • 谷歌发现了这个地址,尽管在“Livingston”中有拼写错误,但无法保证它的有效性,它说,“地址是近似的。”——然后,它说,对于你尝试的几乎每个地址

    • 因为打字错误,提名找不到它。使用Nagnitm的一个缺点可能是,它不尝试补偿打字错误、验证地址的准确性或完整性等。修复打字错误返回了一些信息,但任何人都猜测必须修复什么,以及为什么查询失败

    • 由于打字错误,LiveAddress无法识别输入的地址。在“利文斯顿”中漏掉“s”是很戏剧性的,因为有一些街道被命名为“利文顿”,使得查询变得模棱两可,而且根据卡斯的说法,结果太不匹配,无法返回™ 规格。但是,使用不同的拼写“Livingstn”更改名称会产生一个有效的结果,拼写提名也不接受:

    。。。出于某种原因,我必须突破我的要点,以便代码能够正确呈现:

    [
        {
            "input_index": 0,
            "candidate_index": 0,
            "delivery_line_1": "182 Livingston Ave",
            "last_line": "Albany NY 12210-2512",
            "delivery_point_barcode": "122102512824",
            "components": {
                "primary_number": "182",
                "street_name": "Livingston",
                "street_suffix": "Ave",
                "city_name": "Albany",
                "state_abbreviation": "NY",
                "zipcode": "12210",
                "plus4_code": "2512",
                "delivery_point": "82",
                "delivery_point_check_digit": "4"
            },
            "metadata": {
                "record_type": "S",
                "county_fips": "36001",
                "county_name": "Albany",
                "carrier_route": "C011",
                "congressional_district": "21",
                "rdi": "Residential",
                "latitude": 42.66033,
                "longitude": -73.75285,
                "precision": "Zip9"
            },
            "analysis": {
                "dpv_match_code": "Y",
                "dpv_footnotes": "AABB",
                "dpv_cmra": "N",
                "dpv_vacant": "N",
                "active": "Y",
                "ews_match": false,
                "footnotes": "M#"
            }
        }
    ]
    
    分析脚注“M#”表示匹配是通过修正街道名称的拼写实现的。由此产生的DPV脚注“AABB”表明整个地址与国家ZIP+4文件中的街道+城市/州匹配。还要注意,Zip9精度是地理编码(目前)最精确的级别-精确到块(或更接近块)级别

    因此,在回答您的问题时:

  • 那要看情况。您的客户是否在网站表单上输入地址?在他们继续之前,请立即告诉他们地址无效。我们正在开发一个jQuery插件,以使每个人都能轻松地剪切和粘贴,但在此之前,您可以在我们的签出表单中看到我们的概念,它实现了一个非常灵活的系统:SmartyStreets有一个(只是复制和粘贴)。键入地址后,会自动对其进行验证。如果是错误的,他们会向上滑动一个通知,询问用户是否愿意修复它。有时,它们的地址是不明确的,返回一些有效的结果。(试试:“100,纽约,纽约”)-他们给出了一些建议,你可以选择一个。您修复了它,表单在用户获得有效地址或说“无论如何使用我的;我保证它是正确的”之前不会提交。或者,如果地址正确,他们会将标准化结果放在地址字段中,并显示绿色通知:“地址已验证!”

  • 我想我已经在上面讨论过了。你的问题很好;这似乎是提名的一个缺点

  • 按照建议,您可以尝试LiveAddress。试着用一大组你的地址来获得一个更好的想法(我承认,仅从一个地址进行比较是一个很弱的指示)——但到目前为止,就你的需要而言,LiveAddress似乎介于谷歌地图和Namingm之间


  • 对评论中问题的答复 我在评论中没有空间了

    问: 这里是另一个引起我们问题的地址“7580 E Big Cannon Drive,Anaheim Hills,Anaheim Hills,California,92808,us”甚至“7580 E Big Cannon Drive,California,92808,us”似乎与您的网站不起作用

    A: 我在USPS网站和其他一些服务提供商上做了一些研究。没有人返回任何有效的结果或建议。但我发现你提交的地址有什么问题:

    • 街道名称错误。没什么大不了的;LiveAddress将此更正为“大峡谷”

    • 主编号错误。。一般来说,计算机或人类无法推断出你真正的意思。在这些情况下,地址将无法通过验证,用户必须提供有效的信息才能继续。我在7584找到了一个有效的主号码

    • 总体规划社区,而不是市/县。阿纳海姆山是总体规划社区的名称。谷歌在其商业列表中找到了它,但这与地址无关

    • 两次“阿纳海姆山”。这让解析器感到困惑。不幸的是,有了额外的不必要的信息(特别是在单行地址中),几乎不可能分辨出其中哪些部分是可疑的。第二个“阿纳海姆山”h
      7584 E Big Cannon Drive anaheim hills ca 92808
      7584 bg cannon 92808
      7584 big cannon ave aneheim hills ca