对于我尝试进行地理编码的某些地址,Google会返回不恰当的结果。
以下是一个示例,但它不是一个孤立的事件。第一个返回的结果是完全匹配,但谷歌将其标记为“partial_match”:
Street address: 16160 Frederick Rd City: Gaithersburg State: MD Zip code: 20877
我的问题在于确定哪个是正确匹配。在这种情况下,“部分匹配”标志没有用,因为它在所有匹配结果上设置为“true”。在这种情况下,我可以测试街道地址,城市,州和/或邮政编码的相等性,但是,如果我发送谷歌和我得到的回复之间的拼写差异很小,那么也没工作。 (例如:“Road”vs“Rd”)。
我在这里做错了吗?有没有一种结论性的方法来区分我不熟悉的完全匹配?
谢谢!
答案 0 :(得分:3)
Google在地址近似方面做得非常出色。你要找的是地址验证。 SmartyStreets提供了一个地址验证API,该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",
"state_abbreviation": "MD",
"zipcode": "20877",
"plus4_code": "4011",
"delivery_point": "60",
"delivery_point_check_digit": "4"
},
"metadata": {
"record_type": "S",
"county_fips": "24031",
"county_name": "Montgomery",
"carrier_route": "C004",
"congressional_district": "08",
"latitude": 39.12162,
"longitude": -77.17619,
"precision": "Zip9"
},
"analysis": {
"dpv_match_code": "Y",
"dpv_footnotes": "AABB",
"dpv_cmra": "N",
"dpv_vacant": "N",
"ews_match": false
}
}
]
请注意,“dpv_match_code”为“Y”。那是USPS-代表经过验证的交付点 - 你知道这是一个真正的地址。 SmartyStreets使用官方的当前USPS数据,是CASS认证的软件提供商。
API对于非营利机构,教育机构和低使用率用户是免费的。一旦您收到SmartyStreets的结果,您就可以将其与Google进行地理编码。完全披露:我是SmartyStreets的开发人员。
编辑:添加了纬度/经度字段(新发布)