Python,SQLAlchemy:为GPS坐标创建边界圆?

时间:2011-07-27 03:32:15

标签: python sql gps sqlalchemy gis

我希望能够将GPS坐标(纬度和经度)放入python函数中,并使其返回纬度和经度范围,这些范围将与原始点相距一定距离。

我最终想做的是使用GPS坐标并使用SQLAlchemy进入我的GPS坐标数据库并返回一定范围内的坐标,例如1英里内的坐标。

是否有任何框架可以做到这一点,或者你有什么建议来解决这个问题?

4 个答案:

答案 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留下的评论中的链接答案实际上是我采用的解决方案:

MySQL Great Circle Distance (Haversine formula)

答案 3 :(得分:0)

我认为geoalchemy会解决您的问题