Python postgis距离函数和google maps距离计算器结果之间存在显著差异的原因是什么?
我正在构建一个基于python/django的应用程序,在该应用程序中,测量两个给定地理点之间的距离非常重要,精度至少在10米左右 问题是postgis距离函数和谷歌地图距离计算器(两个引脚之间)的结果差别很大 我在谷歌地图上放置了两个坐标(52.162919 20.99999 8)和(52.163557 20.997626)的图钉,通过右键单击->测量距离来测量距离,我还使用postgis距离函数在代码中计算结果Python postgis距离函数和google maps距离计算器结果之间存在显著差异的原因是什么?,python,django,postgresql,postgis,Python,Django,Postgresql,Postgis,我正在构建一个基于python/django的应用程序,在该应用程序中,测量两个给定地理点之间的距离非常重要,精度至少在10米左右 问题是postgis距离函数和谷歌地图距离计算器(两个引脚之间)的结果差别很大 我在谷歌地图上放置了两个坐标(52.162919 20.99999 8)和(52.163557 20.997626)的图钉,通过右键单击->测量距离来测量距离,我还使用postgis距离函数在代码中计算结果 from django.contrib.gis.db.models.functi
from django.contrib.gis.db.models.functions import Distance
from django.contrib.gis.geos import GEOSGeometry
qs = queryset.annotate(distance=Distance(
GEOSGeometry(f'SRID=4326;POINT(52.162919 20.999998)'),
GEOSGeometry(f'SRID=4326;POINT(52.163557 20.997626)'),
spheroid=True)) \
.values_list('id', 'distance', named=True)
return qs
class XXXSerializer(serializers.ModelSerializer):
class Meta:
model = XXX
fields = ('id', 'distance')
distance = serializers.SerializerMethodField()
def get_distance(self, obj):
return obj.distance.m
数据库基础计算结果为270.868624085953米,而谷歌地图基础计算结果为175,13米
这些结果之间的差异是巨大的
你知道原因是什么吗,哪个结果是正确的,以及如何调整我的代码,使其与Google Maps距离结果相匹配?在其中一个计算中,你指定的纬度和经度是错误的。您可以对其进行测试,以检查在切换值时结果是否可重复。实际上,它只是确保您知道哪个值是纬度,哪个值是经度,并将其正确地指定给两个API
我不使用这个库,但是考虑到这个错误有多容易,这个库似乎没有很好的记录。你可以在谷歌地图使用空间参考系统(SRID)3857中看到更多信息。很难相信错误如此简单。现在它很有魅力,谢谢你的回答。我在地图上查到经纬度是正确的。不过,Django的计算结果与google或其链接网站的计算结果相差约1.5亿