geoDjango 自动改变经度

geoDjango changing longitude automatically

我正在制作一个基于位置的 Web 应用程序,为此我正在使用 geoDjango 和 postgis。问题是每当我尝试在孟加拉国达卡附近存储某个位置(latitude/longitude)时,它会自动更改经度。经过一些调试后我发现,每当经度超过 90.00 时,geoDjango 将经度保存为 89.something .

我的模特:

from django.db import models
from django.contrib.gis.db import models as locationModels

class Advertise(models.Model):
        house_name = models.CharField(max_length=100, null=True)
        geoLocation = locationModels.PointField(geography=True, null=True)

示例:

from django.contrib.gis.geos import Point
lat, lng = 23.724609, 88.882694
pnt = Point(lat, lng)
add = models.Advertise(geoLocation=pnt,house_name='test1')
add.save()

add = models.Advertise.objects.filter(house_name='test1')

add[0].geoLocation.y 的输出是 88.882694

如果我将 lat,lng 的值更改为 23.777976, 90.010106add[0].geoLocation.y 的输出将变为 89.989894,但它应该是 90.010106

谁能告诉我哪里做错了?

您正在交换纬度和经度。您必须先指定经度 (x),然后指定纬度 (y)。

不幸的是,PostGIS 不会抛出错误,而是会尝试解释越界值,例如在地球的另一侧移动或如果纬度大于 90 度则从极点“返回”。