我目前正在尝试使用Virtual Earth / Bing Maps网络服务来反转地理编码一系列纬度/经度坐标。虽然我可以成功检索这些位置的地址,但我还需要能够找到该位置最近的重要人口中心,这样我才能显示到最近的城镇/城市/大都市中心的航向和距离等。这是为了位置在位置之间行进的情况,例如在高速公路/高速公路上。
有没有人有任何想法如何做到这一点,因为我已经对它持续了几天,我已经无处可去了!
提前干杯......
答案 0 :(得分:2)
尝试使用此处记录的维基百科位置服务 http://www.geonames.org/export/wikipedia-webservice.html
答案 1 :(得分:2)
我认为可以安全地假设最近的城市与地球的大小相比总是非常接近,所以你可以使用一个简单的毕达哥拉斯三角形。
假设您位于(lat0,long0)且试用城市位于(lat1,long1)。
水平(EW)距离大致为
d_ew = (long1 - long0) * cos(lat0)
这乘以cos(lat0)来说明经度线在高纬度地区越来越靠近。
垂直(NS)距离更容易
d_ns = (lat1 - lat0)
所以两点之间的距离是
d = sqrt(d_ew * d_ew + d_ns * d_ns)
您可以针对更严格的任务优化此方法,但这对于最近的城市来说应该足够了。
为了比较距离,可以比较d平方,这意味着你可以省略sqrt操作。
答案 2 :(得分:0)
如果你能找到主要人口中心的坐标列表,这里有一些code用于根据坐标计算大圆距离。
答案 3 :(得分:0)
答案 4 :(得分:0)
我会做以下事情:
表1:
T_CityPopulation
字段:
CityTownInfo,人口,LonLat
然后计算表1中每条记录的当前LonLat之间的距离,使用阈值忽略城镇/城市超过x英里。然后按人口排序结果。
编辑:
即使你不想维护一个表,它也必须存放在某个地方,我想如果你自己维护它至少你可以控制它,而不是依赖另一个服务。