python - Django - 确定地理坐标是否在圆内

标签 python django gis geodjango geopy

django 是否有任何东西可以查看地理坐标(十进制纬度/经度)并确定是否位于具有特定半径(假设 100 公里)的圆内?

我有某种类型的数据,每个数据都有一个纬度/经度,我想在数据库中进行搜索,看看该数据是否位于具有指定半径大小的圆内部。

我可能可以自己写一些东西来处理这个问题,但是我想知道是否已经写了一些东西可以处理这个问题。

最佳答案

如果你不介意非常好的精度,这个问题可以用纯 SQL 来解决。

您可以使用以下特定 SQL 查询查找 GPS 位置周围的点:

# find point around :
latitude = 46.2037010192871
longitude = 5.20353984832764
query= "SELECT ID, NOM, LAT, LON, 3956 * 2 * ASIN(SQRT(POWER(SIN((%s - LAT) * 0.0174532925 / 2), 2) + COS(%s * 0.0174532925) * COS(LAT * 0.0174532925) * POWER(SIN((%s - LON) * 0.0174532925 / 2), 2) )) as distance from POI  having distance < 50 ORDER BY distance ASC " % ( latitude, latitude, longitude)

这将为您提供 50 公里区域内所有带有 GPS 记录的记录。

您可以轻松地将其插入 django 中:

from django.db import connection
cursor = connection.cursor()
cursor.execute( query )
rows = cursor.fetchall()

或使用 django raw queries

关于python - Django - 确定地理坐标是否在圆内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4610717/

相关文章:

python - 如何在Python插件中使用多个窗口

python - 使用 wxpython 绑定(bind)事件

python - 在 App Engine 上使用 djangoforms 进行唯一值验证

python - 如何获取同一地理数据框中的多边形与其他多边形的交集?

python - 权限被拒绝的 Django 静态文件

python - Tornado 上的 Django : 'module' object has no attribute 'wsgi'

database - 计算邮政编码之间的距离...和用户。

django - 两个 gunicorn 应用程序(django 和tilestache)的Nginx conf

python - Python 中的内存高效变量类型

python - PyQt中如何在两个窗口之间进行通信或切换?