Geo Django Виджет полей точек не отображает координаты должным образом - PullRequest
0 голосов
/ 21 марта 2020

в приложении Django Я использую PointField

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

Я использую обычную систему длинных лат, поэтому [50, 15] должна быть точкой в ​​Европе, в Чешской Республике c Я думаю. Но тогда в администрации есть симпатичный интерактивный виджет с картой, которая показывает точку где-то на Красном море. Когда я проверяю значение в коде виджета, он говорит, что координаты совершенно разные (некоторые цифры в миллионах), но когда я хочу вывести координаты на консоль, он говорит, что обычно [50, 15]

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

Кто-нибудь знает, что может go здесь не так?

Я знаю, что есть больше SRID, но даже когда я изменяю все возможные атрибуты SRID (Model, AdminSite, Form, Widget), все равно это не так. работа ...

Спасибо, РА

1 Ответ

1 голос
/ 27 марта 2020

Я предполагаю, что вы используете django.contrib.gis.admin.OSMGeoAdmin в качестве базового класса для класса администратора. Проблема связана с различными стандартами для чтения и отображения порядка долготы и широты. Geo JSON предполагает, что первый элемент в кортеже координат - это долгота и вторая широта. Старые системы принимают противоположность, широту, а затем долготу. Теперь, в возрасте rnet, кажется, что долгота-широта победила.

Таким образом, это, скорее всего, проблема с отображением, а не с данными. OSMGeoAdmin почему-то идет со старым порядком. LeafletGeoAdmin с более новой версией.

Попробуйте установить django -leaflet, а затем использовать базовый класс leaflet.admin.LeafletGeoAdmin. На мой взгляд, он более приятен и в любом случае имеет больше опций.

Шаги, насколько я помню:

  1. pip install django-leaflet
  2. добавьте к INSTALLED_APPS в настройках. py: 'leaflet',

Источник: django -leaflet: https://pypi.org/project/django-leaflet/

Обновить, как это происходит.

...