【问题标题】:What's the best way to compare two street addresses?比较两个街道地址的最佳方法是什么?
【发布时间】:2019-07-14 17:14:57
【问题描述】:

我想比较两个邮政地址, 将地址视为字符串并比较它们之间的相似性是否是一种不好的做法。是否有可以在我使用的编程语言中实现的标准算法? 还是有免费的 api 来做到这一点(有配额限制)? 实际上,我对任何想法或建议持开放态度,我不是在此处发布要解决的问题,而是接收指导我搜索的索引。 感谢您阅读。

【问题讨论】:

  • “比较它们”是什么意思?看看它们是否指的是同一个位置?看看字符串是否匹配?你到底想做什么?
  • 我想看看它们是否指向同一个位置

标签: javascript string-comparison street-address


【解决方案1】:

如果我没记错的话,那么你要找的是“GeoCoding”了解更多点击here

简单来说,您需要做的是将地址转换为地理编码,即类似于(纬度 37.423021 和经度 -122.083739)的经度和纬度,然后您需要将要检查的地址转换为地理编码您可以使用它像普通数组比较一样进行检查。

如果您需要检查地址是否属于特定区域,那么您将需要为每个区域提供地理编码信息,然后您可以对主机地址进行地理编码并使用任何矢量算法来检查给定点是否落入其中或不是!

【讨论】:

    【解决方案2】:

    您可以暂时将其更改为一个大字符串,例如,如果您的地址位于 1935 Eastwood Road,您可以这样做:

    var num = "1935";
    var road = "Eastwood";
    var roadname = "Road";
    
    var fullRoadName = num + " " + road + " " + roadname;
    console.log(fullRoadName);
    //Console will print out '1935 Eastwood Road'
    

    假设不是手动设置所有变量,而是从数据库等中获取它们。

    【讨论】:

    • 如果有人输入了“EastWood”和“roAd”怎么办?
    • 您可以使用名为 strtolower() 的 PHP 函数(如果使用 PHP),它将生成 roAd->road 和 ROAD->road。如果你使用 JavaScript,它是一样的。您可以使用 string.toLowerCase() 函数。
    • 哈哈..谁来保证同一条路有两个不同的名字?如果订单搞砸了怎么办?您介意将其添加到您的答案中吗?为什么解决方案不包括那个? st sebastian roadsaint sebastian road 不同吗?
    • 您可以拥有一组道路名称,或许还可以使用神经网络来破译哪条道路可能与其短名称匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2012-03-15
    • 2022-01-01
    相关资源
    最近更新 更多