我尝试使用GeoDjango将lat/lon存储在PointField
中,然后查询两个PointField
之间的距离(以公里为单位)。导致距离计算返回几何距离而不是地理距离的操作不起作用。我在模型中使用了geography=True
,但它似乎没有帮助。我用的是postgis
和postgresql
型号:
from django.contrib.gis.db import models
class Customer(models.Model):
location = models.CharField(max_length=100)
gis_location = models.PointField(u"longitude/latitude",
geography=True,
blank=True,
null=True)
测试:
^{pr2}$输出:
Customer 1: SRID=4326;POINT (-79.2999999999999972 43.6000000000000014)
Customer 2: SRID=4326;POINT (-89.2000000000000028 48.3999999999999986)
Distance: 11.002272492535353
这只返回两点之间的几何距离,而不是地理距离。有谁能给我一些建议,让它返回球面上的KMs距离?在
谢谢!在
通过阅读文档,我发现GEOSGeometry类中的这种距离计算不考虑SRID,并且与PostGIS数据库直接提供的距离计算不同。在
我使用了python库geopy,它提供了计算距离的
distance
方法。在不幸的是,我仍然无法使用Django的GIS库来计算两个
Point
的距离。在相关问题 更多 >
编程相关推荐