Почему печать показывает SRID 3847 в Geodjango?
Я разрабатываю приложение с использованием Geodjango и PostGIS. В административной области моего сайта все полигоны отображаются правильно с SRID (по умолчанию) 4326, например
SRID=4326;POLYGON ((0.6564331054687499 52.13854550670472, 0.6289672851562499 52.08456959594681, 0.7553100585937497 52.08456959594681, 0.6564331054687499 52.13854550670472))
Почему, когда я print
захожу на веб-сервер/консоль, SRID отображается в 3857? Приведенный выше полигон области администрирования печатается как:
SRID=3857;POLYGON ((73073.79904062848 6825215.129639958, 70016.31790922143 6815431.190019455, 84080.73111369385 6815431.190019455, 73073.79904062848 6825215.129639958))
Я не знаю, могу ли я продолжать работать с многоугольниками, поскольку в настоящее время я не могу быть уверен в их проекции.
Итак, отвечаю на свой собственный вопрос. Это потребовало много зубодробительных усилий, и я не уверен, что я просто тупой или здесь есть какая-то ошибка. Для тех, кому это нужно, официальную документацию Django по геопространственным полям можно найти здесь.
Насколько я понимаю, "геопространственные вещи" (использую этот термин широко) в Django по умолчанию используют WGS84 (SRID 4326). Это, как я понимаю, означает, что если вы не будете из кожи вон лезть, чтобы переопределить аргумент/атрибут, то по умолчанию будет использоваться 4326. По какой-то причине это не относится к полям формы GeoDjango.
В то время как выше в своем вопросе я указал свое геопространственное поле как:
class jobForm(forms.ModelForm):
location = PolygonField(
widget=OSMWidget(
attrs={'map_width': 800,
'map_height': 500,
'map_srid': 4326,
'template_name': 'gis/openlayers-osm.html',
'default_zoom':8,
'default_lat': 52,
'default_lon': 0.5}))
Что я должен был сделать, так это явно задать аргумент SRID. Таким образом, это должно быть:
class jobForm(forms.ModelForm):
location = PolygonField(
srid=4326,
widget=OSMWidget(
attrs={'map_width': 800,
'map_height': 500,
'map_srid': 4326,
'template_name': 'gis/openlayers-osm.html',
'default_zoom':8,
'default_lat': 52,
'default_lon': 0.5}))
В документации Django я не нашел упоминания о том, почему, если вы не указываете SRID в поле геометрии формы, она начинает выдавать координаты в 3857. Но это происходит по... причинам. Если есть законная причина, почему так происходит - возможно, я что-то упустил в документации - то я бы искренне хотел знать, что происходит.