哪里是一个好的地址解析器

28 c# parsing opensocial street-address

我正在寻找一个好的工具,可以采用完整的邮件地址,格式化显示或与邮件标签一起使用,并将其转换为结构化对象.

例如:

// Start with a formatted address in a single string
string f = "18698 E. Main Street\r\nBig Town, AZ, 86011";

// Parse into address
Address addr = new Address(f);

addr.Street; // 18698 E. Main Street
addr.Locality; // Big Town
addr.Region; // AZ
addr.PostalCode; // 86011
Run Code Online (Sandbox Code Playgroud)

现在我可以使用RegEx来做到这一点.但棘手的部分是保持它足够通用,以处理世界上的任何地址!

我确信必须有一些可以做到的东西.

如果有人注意到,这实际上是opensocial.address对象的格式.

Tom*_*man 24

Googlemaps API非常适用于此.例如,假设您被给予字符串"120 w 45 st nyc".将其传递到Googlemaps API,如下所示:http://maps.google.com/maps/geo?q=120+w+45+st+nyc您会得到以下回复:

{
  "name": "120 w 45 st nyc",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [ {
    "id": "p1",
    "address": "120 W 45th St, New York, NY 10036, USA",
    "AddressDetails": {"Country": {"CountryNameCode": "US","CountryName": "USA","AdministrativeArea": {"AdministrativeAreaName": "NY","Locality": {"LocalityName": "New York","Thoroughfare":{"ThoroughfareName": "120 W 45th St"},"PostalCode": {"PostalCodeNumber": "10036"}}}},"Accuracy": 8},
    "ExtendedData": {
      "LatLonBox": {
        "north": 40.7603883,
        "south": 40.7540931,
        "east": -73.9807141,
        "west": -73.9870093
      }
    },
    "Point": {
      "coordinates": [ -73.9838617, 40.7572407, 0 ]
    }
  } ]
}
Run Code Online (Sandbox Code Playgroud)

  • 我想我想知道Google是如何做到的. (9认同)
  • 每天限制约15,000个请求.所以要尊重并小心并检查使用条款http://econym.org.uk/gmap/geomulti.htm (3认同)
  • 这适用于已关闭的旧API v2.有关v3,请参阅https://developers.google.com/maps/documentation/geocoding/.免费api现在限制为每天2500. (2认同)

liu*_*gbo 7

如果您正在寻找一个简单解决方案的地址解析器,请尝试以下方法:

http://usaddress.codeplex.com/

好:1.无需数据库2.无需互联网查询3.非常准确

错误:1.无法确认它是否是真实地址2.仅适用于美国地址3.在C#中,使用.NET 3.5或更高版本


Jon*_*ver 5

如前所述,这不是一个小问题。最大的问题之一——除了国际地址——是地址没有标准格式,而且地址不能告诉你它是否格式正确,即它不像信用卡号那样自我验证.

因此,您必须依靠外部事实来源来确保地址是真实的。这就是地址验证服务的用武之地。根据您的业务需求和应用程序要求,您可能正在查看地址列表的一次性“批量”清理,或者可能是实时/实时地址验证服务。有许多优秀的提供商(成本各不相同)可以轻松解决此问题。

我应该提到我是 SmartyStreets 的创始人。我们做CASS 认证的地址验证。我们会将您的未格式化/原始地址转换为经过清理、标准化和验证/确认的地址。根据清单的大小,成本通常只有几美元,而且周转时间几乎是即时的——通常是几分钟。


Ste*_* B. 4

您可以尝试Experian 地址验证。虽然有问题,但基本上和宣传的一样有效。