【问题标题】:geoDjango changing longitude automaticallygeoDjango自动更改经度
【发布时间】:2021-02-08 11:58:33
【问题描述】:

我正在制作一个基于位置的 Web 应用程序,为此我正在使用 geoDjango 和 postgis。问题是每当我尝试在孟加拉国达卡周围存储一些位置(纬度/经度)时,它会自动更改经度。在做了一些调试后,我发现,每当经度超过 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.010106,则add[0].geoLocation.y 的输出变为89.989894,但应该是90.010106

谁能告诉我哪里做错了?

【问题讨论】:

    标签: django postgresql geolocation postgis geodjango


    【解决方案1】:

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

    不幸的是,PostGIS 不会抛出错误,而是会尝试解释超出范围的值,例如在地球的另一边移动或在纬度 > 90 度时从极点“向后”移动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      相关资源
      最近更新 更多