对于我尝试进行地址解析的某些地址,谷歌返回了不恰当的不确定结果。
以下是示例,但这不是孤立的事件。返回的第一个结果是完全匹配,但是google将其标记为“ partial_match”:
街道地址:16160 Frederick Rd城市:盖瑟斯堡州:MD邮政编码:20877
我在这里的问题是确定哪个是正确的匹配。在这种情况下,“部分匹配”标志没有用,因为在所有匹配结果上它都设置为“ true”。在这种情况下,我可以测试街道地址,城市,州和/或邮递区号是否相等,但是,如果我向Google发送的邮件与作为响应得到的邮件之间在拼写上存在细微差别,那也不行。 (例如:“道路”与“公路”)。
我在这里做错什么了吗?是否有一种确定性的方法可以区分我不熟悉的确切匹配?
谢谢!
Google在逼近地址方面做得很棒。您正在寻找的是地址验证。 SmartyStreets提供了一个包含在结果中的地址验证API。这是该地址的SmartyStreets API返回的内容:
输入:
输出:
[
{
"input_index": 0,
"candidate_index": 0,
"delivery_line_1": "16160 Frederick Rd",
"last_line": "Gaithersburg MD 20877-4011",
"delivery_point_barcode": "208774011604",
"components": {
"primary_number": "16160",
"street_name": "Frederick",
"street_suffix": "Rd",
"city_name": "Gaithersburg",
"default_city_name": "Gaithersburg",
"state_abbreviation": "MD",
"zipcode": "20877",
"plus4_code": "4011",
"delivery_point": "60",
"delivery_point_check_digit": "4"
},
"metadata": {
"record_type": "S",
"zip_type": "Standard",
"county_fips": "24031",
"county_name": "Montgomery",
"carrier_route": "C004",
"congressional_district": "06",
"rdi": "Commercial",
"elot_sequence": "0057",
"elot_sort": "A",
"latitude": 39.12113,
"longitude": -77.17568,
"precision": "Zip9",
"time_zone": "Eastern",
"utc_offset": -5,
"dst": true
},
"analysis": {
"dpv_match_code": "Y",
"dpv_footnotes": "AABB",
"dpv_cmra": "N",
"dpv_vacant": "N",
"active": "N"
}
}
]
注意“ dpv_match_code”为“ Y”。那是USPS所说的经过验证的交付点-您知道它是那时的真实地址。 SmartyStreets使用官方的最新USPS数据,并且是经过CASS认证的软件提供商。
API对非营利组织,教育机构和低使用率用户免费。收到SmartyStreets的结果后,您就可以使用Google对其进行地理编码。完全披露:我是SmartyStreets的开发人员。
编辑:添加的纬度/经度字段(新发布)