我希望能够确定 GPS 位置是在有人居住的区域还是无人居住的区域。
我已经尝试了几个反向地理编码 API,比如 Nominatim,但都没有得到好的结果。它总是返回最近的可能地址,即使我选择了森林中间的位置。
有没有办法以合理的准确性确定这一点?是否有任何数据库或网络服务?
我希望能够确定 GPS 位置是在有人居住的区域还是无人居住的区域。
我已经尝试了几个反向地理编码 API,比如 Nominatim,但都没有得到好的结果。它总是返回最近的可能地址,即使我选择了森林中间的位置。
有没有办法以合理的准确性确定这一点?是否有任何数据库或网络服务?
由于您使用的是 Nominatim,因此您将在回复中获得最近地址的坐标。
由于可以计算两个坐标之间的距离,因此您可以使用它来计算到找到的最近地址的距离,并从中确定您是否靠近人口稠密的地区。
如果您必须自己计算,那么有趣的事情就开始了:
一个地区是否有人居住的信息存储在“ Land_Use
”层的数字地图中。有森林、水、工业、墓地等的值。
您必须将这些 Land_use 多边形导入一个特殊的 DB ( PostGres
)。这样的空间数据库提供了快速的地理索引,用于仅搜索相关的多边形。
一些国家可能也适合主内存,但是您需要某种地理空间索引,例如Quad-Tree
或k-d tree
存储多边形。
导入多边形后,它就是一个简单的“多边形中的点”查询,或“半径 r 内的多边形”。epolygon 的拼写表示土地用途。
OpenStreetMap 免费提供这些多边形。
否则,您必须从TomTom
或可能从 NavTeq ( Nokia Maps
) 购买它们。但这仅对大公司有意义。