Python GeoDjango+;PostGIS计算错误的距离

Python GeoDjango+;PostGIS计算错误的距离,python,django,postgis,geodjango,srid,Python,Django,Postgis,Geodjango,Srid,我刚用GeoDjango安装了PostGIS。一切都很好,但现在我有一个问题,无法找到原因 我有这样的模型: from django.contrib.gis.db import models class Shop(models.Model): name = models.CharField(max_length=80) point = models.PointField(null=True, blank=True) objects = models.GeoManager

我刚用GeoDjango安装了PostGIS。一切都很好,但现在我有一个问题,无法找到原因

我有这样的模型:

from django.contrib.gis.db import models

class Shop(models.Model):
    name = models.CharField(max_length=80)
    point = models.PointField(null=True, blank=True)
    objects = models.GeoManager()
pnt = fromstr('POINT(50.084068 8.238381)')
我把它的点设置到这个位置(49.794254,9.927489)。然后我创建一个点,如下所示:

from django.contrib.gis.db import models

class Shop(models.Model):
    name = models.CharField(max_length=80)
    point = models.PointField(null=True, blank=True)
    objects = models.GeoManager()
pnt = fromstr('POINT(50.084068 8.238381)')
这些点之间的距离应约为125 km,但当我这样做时:

results = Shop.objects.distance(pnt)
print results[0].distance.km
pnt.distance(shop.point)
在我的结果中,我总是跑了大约60公里,所以它返回190公里!我的两点SRID都是4326。。。可能有什么问题

也许还有一个有趣的事实,当我这么做的时候:

results = Shop.objects.distance(pnt)
print results[0].distance.km
pnt.distance(shop.point)
它返回1.713790。。。结果,

我做错了什么?我可以使用python+django吗?如果有更好的解决方案,我就不需要使用PostGIS

希望你能帮助我

Chris

我刚刚在以下位置运行了此查询:

结果实际上是190.50,所以你的190公里成绩似乎没有什么问题

与此相同的结果,有一个简单的解释如何计算这个距离

1.713790。。。结果似乎与srid的单位相同,或者换句话说,该数字不是以米为单位的

编辑 哦,我刚刚看到了你的问题,你错放了纬度和经度,在WKT格式中,经度是第一位的,所以真正的查询应该是:

select round(CAST(ST_Distance_Sphere(ST_GeomFromText('POINT(9.927489 49.794254)',4326), ST_GeomFromText('POINT(8.238381 50.084068)',4326)) As numeric)/1000.0,2) as distance_km;
 distance_km 
-------------
      125.10
所以点应该像这样创建

POINT(9.927489 49.794254)
POINT(8.238381 50.084068)

谢谢你的回复,我试着交换观点,但在我读到某个地方之前,我已经试过了。当我交换它们时,我得到了5000左右的值,奇怪的东西!有什么想法吗?您发布的查询工作正常,如果我在geodjango中找不到解决方案,我将手动执行查询…如果我只交换其中一个查询,我将获得5925.95公里,准确地说,因此您存储的查询似乎是错误的。