我正在制作一个基于位置的web应用程序,为此我使用了geoDjango和postgis。问题是,每当我尝试存储孟加拉国达卡周围的某个位置(纬度/经度)时,它会自动更改经度。在做了一些调试之后,我发现只要经度超过90.00,geoDjango就会将经度保存为89.thing。
我的模型:
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.010106,add[0].geoLocation.y的输出将变成89.989894,但它应该是90.010106
谁能告诉我我哪里做错了?
发布于 2020-10-26 21:18:05
您正在交换纬度和经度。必须先指定经度(x),然后指定纬度(y)。
不幸的是,PostGIS不会抛出错误,而是会尝试解释越界的值,比如在地球的另一边移动,或者在纬度> 90度的情况下从极点“往回移动”。
https://stackoverflow.com/questions/64533550
复制相似问题