我希望能够将GPS坐标(纬度和经度)放入python函数中,并使其返回纬度和经度范围,这些范围将与原始点相距一定距离。
我最终想做的是使用GPS坐标并使用SQLAlchemy进入我的GPS坐标数据库并返回一定范围内的坐标,例如1英里内的坐标。
是否有任何框架可以做到这一点,或者你有什么建议来解决这个问题?
答案 0 :(得分:2)
您可以使用PostGIS为PostgreSQL添加地理支持。 ST_DWithin
功能可让您找到距离另一个点一定距离的点:
SELECT name
FROM some_table
WHERE ST_DWithin(
geography_1,
geography_2,
distance_in_meters
);
GeoAlchemy为SQLAlchemy添加了用于处理空间数据库的扩展。您可能想尝试将其与PostGIS结合使用。
答案 1 :(得分:1)
您也可以使用'边界框'方法。它基本上围绕给定点绘制一个(〜方形)框,并找到该框中的所有点。
对于max_distance(英里)和z作为纬度和经度点,您可以使用:
dist_range = max_distance / 69.172
lat_range = (z.latitude-dist_range, z.latitude+dist_range)
lon_range = (z.longitude-dist_range, z.longitude+dist_range)
然后,您的查询可以包含坐标在此范围内的条目。
这不是很准确,并且随着max_distance的增加,其准确度会下降。但是,对于简单的地理查询,它运行良好,不使用任何特定于位置的扩展。
答案 2 :(得分:0)
Carl留下的评论中的链接答案实际上是我采用的解决方案:
答案 3 :(得分:0)
我认为geoalchemy会解决您的问题