有没有一个Python模块,我可以在其中创建具有地理位置坐标(纬度和经度)的对象,并在所有对象中查询距离给定坐标5 5km (即半径)的对象?
我一直在尝试将纬度和经度作为键存储在字典中(因为它们是通过键进行索引的),并使用一些距离查找算法来查询它们。但这感觉像是一次可怕的黑客攻击。
本质上类似于PostgreSQL的PostGIS,但都在我的Python应用程序的记忆中。
发布于 2012-01-31 19:36:38
是的,试试geopy。
import geopy
import geopy.distance
pt1 = geopy.Point(48.853, 2.349)
pt2 = geopy.Point(52.516, 13.378)
dist = geopy.distance.distance(pt1, pt2).km
# 878.25
之后,您可以查询您的点列表:
[pt for pt in points if geopy.distance.distance(orig, pt).km < 5.]
发布于 2012-01-31 20:00:15
我知道这不是您想要的,但是您可以将GeoDjango与内存中的SQLite数据库一起使用。它是作为Web应用程序公开的一整套GIS工具,这使其成为快速开发GIS应用程序的瑞士军刀,特别是用于小型即席查询。
发布于 2012-01-31 20:20:14
你的字典想法听起来并没有那么糟糕,尽管你也需要检查属于“相邻”字典关键字的点。
如果你找不到合适的工具,就像编码算法一样,你可以实现一个二进制空间分区树,afaik是实现类似事情的一种不那么麻烦的方法。
https://stackoverflow.com/questions/9078776
复制相似问题