Google Reverse Geocoding - 如何在street_address或路线之间进行选择?

问题描述 投票:0回答:1

我一直在车辆跟踪应用程序中使用Google的反向地理编码API,将纬度/经度信息转换为“地址”至少5年。最近,这种转换已经开始产生一些令人惊讶的结果。

例如,lat / lon对,36.7653111,-121.74852,当插入谷歌地图时,产生“CA-156,Castroville,CA 95012”作为地址。这是理想的答案。

跟踪应用程序产生“11298 Haight St,Castroville,Monterey County,CA,95012,US”问题是JSON结果包含两个“street_address”和一个“route”类型。选择结果中出现的第一个street_address或路由的哑算法不再有效。现在的问题是如何确定哪种可能性与给定的lan / lon更好匹配?纬度/经度明显位于CA-156路线上。 Haight St.根本没有穿越CA-156。

这种情况的特别之处在于,车辆不是在两个“street_address”类型的街道上行驶,而是在路线的街道上行驶。在这种情况下,路由应该优先于两个street_address类型。

我现在已经检查了数百个反向geocodings的结果。似乎没有任何简单的算法方法来选择最佳结果。例如,反向地理编码37.31674,-122.0472125仅返回两个结果:

Type: premise 
Address: Child Development Center, Cupertino, Santa Clara County, CA 95014, US
location_type: ROOFTOP
37.316425,-122.0460558 Distance: 354.7286202778164 Feet

Type: route 
Address: CA-85, Cupertino, Santa Clara County, CA 95014, US
location_type: GEOMETRIC_CENTER
37.3145586,-122.0461306 Distance: 855.4738140974437 Feet

车辆在CA-85上行驶。选择第一个结果(前提)或距离最小的结果不会产生最佳结果。

这里的根本问题是对于“路线”类型,到GEOMETRIC_CENTER的距离不会告诉您是否“在路线上”(0距离)或者如果您“离开路线”,距离有多远。

我已经向Google提交了一个案例。如果我得到有用的回复,我会在这里发布。

reverse-geocoding
1个回答
1
投票

如果您是来自车载设备的反向地理编码lat / lon信息,则有两个接近,可以显着改善结果。讨论假设您将结果限制为类型:“前提”,“street_address”或“路线”,如果您对其他类型感兴趣,则可能需要进行一些实验。

首先,如果车载设备返回速度以及纬度/经度,则在速度高于某个阈值时选择“路线”结果(如果存在)。否则,选择距离纬度/经度最小的“street_address”或“premise”。您可能需要尝试使用速度阈值来找到合理的值。对我来说,25英里/小时似乎做得不错。

其次,如果您没有速度或其他指示车辆停止或移动,请尝试以下“黑客”。

将结果扫描到第一次出现的“路线”,并在“前提”或“street_address”类型中确定与纬度/经度距离最小的那个。记住“路线”,如果找到了。

然后1.如果不存在“route”结果,则返回距离lat / lon最小距离的“premise”或“street_address”。 2.否则a。如果“route”具有与正则表达式“[A-Z] + - [0-9] +”匹配的“route”名称,则返回路径作为最佳结果。湾否则,如果存在最小距离“前提”或“street_address”,则将其作为最佳结果返回。 C。否则,返回“路线”作为最佳结果。

这远非完美,但似乎对美国来说足够好,这就是我现在所关心的。由于路线名称因国家而异,因此可能需要进行一些改进。

© www.soinside.com 2019 - 2024. All rights reserved.