【问题标题】:GeoDjango Point fields widget does not show coords properlyGeoDjango Point 字段小部件无法正确显示坐标
【发布时间】:2020-03-21 15:16:14
【问题描述】:

在 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 属性(模型、管理站点、表单、小部件),仍然无法正常工作...

谢谢,RA

【问题讨论】:

  • 您的问题解决了吗?我也有同样的问题。
  • 很遗憾没有。

标签: python django gis geodjango


【解决方案1】:

我假设您使用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/

更新进展情况。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2014-08-20
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多