GeoDjango点域窗口小部件无法正确显示坐标

问题描述 投票:0回答:1

在Django应用程序中,我使用PointField

point = models.PointField(_('Point'), null=False, blank=False)

我使用正常的长纬度系统,所以我认为在捷克共和国,[50, 15]应该是欧洲的重点。但是在管理部门中,有一个很好的交互式窗口小部件,其中带有地图,该地图显示了红海中某个地方的位置。当我检查小部件代码中的值时,它说坐标完全不同(一些数字以百万计),但是当我想将坐标输出到控制台时,它说通常[50, 15]

print(Datapoint.objects.get(pk=pk).point)
# Output: SRID: 4326; Point(50, 15)

有人知道这里可能出什么问题吗?

我知道还有更多的SRID,但是即使我更改了每个可能的SRID属性(模型,AdminSite,表单,小部件),仍然无法使用...

谢谢,RA

python django gis geodjango
1个回答
0
投票

我假设您使用django.contrib.gis.admin.OSMGeoAdmin作为您的管理类的基类。该问题与阅读和显示经度和纬度顺序的不同标准有关。 GeoJSON假定坐标元组中的第一个元素是经度,第二个纬度。较旧的系统采用相反的纬度和经度。如今,在互联网时代,经纬度似乎已经赢得了胜利。

因此,很可能是显示问题,而不是数据问题。由于某些原因,OSMGeoAdmin适用于较早的订单。带有更新的LeafletGeoAdmin。

尝试安装django-leaflet,然后使用基类leaflet.admin.LeafletGeoAdmin。我认为它更令人愉快,并且仍然有更多选择。

我记得的步骤:

  1. pip install django-leaflet
  2. 添加到settings.py中的INSTALLED_APPS中:'leaflet',

来源:django-leaflet:https://pypi.org/project/django-leaflet/

更新进度。

© www.soinside.com 2019 - 2024. All rights reserved.