django-rest-framework-gis GeoFeatureModelSerializer возвращает измененные / неправильные координаты при сериализации
В настоящее время у меня есть GeometryField
, который держит Polygon
, который является GEOSGeometry
, Я печатаю координаты многоугольника, и они кажутся нормальными именно там, где я указал. Затем я сохраняю экземпляр модели, а затем десериализую с помощью GeoFeatureModelSerializer
только для того, чтобы узнать, что координаты моего многоугольника были изменены на что-то очень маленькое и близко к экватору.
Это GEOSGeometry
хранится в GeometryField
Первоначально это хранится в базе данных.
POLYGON ((-79.94751781225206 40.44287206073545,
-79.94751781225206 40.44385187931003,
-79.94502872228624 40.44385187931003,
-79.94502872228624 40.44287206073545,
-79.94751781225206 40.44287206073545))
Это после этого сериализуется с GeoFeatureModelSerializer
и вернулся.
[[-0.000718176362453, 0.000363293553554],
[-0.000718176362453, 0.000363316438548],
[-0.000718135112337, 0.000363316438548],
[-0.000718135112337, 0.000363293553554],
[-0.000718176362453, 0.000363293553554]]
Я понятия не имею, что может быть причиной этого.
Заранее большое спасибо.
1 ответ
Это было решено путем указания SRID. Согласно Django Docs, SRID является
Выбор подходящего SRID для вашей модели является важным решением, которое разработчик должен тщательно продумать. SRID - это целочисленный спецификатор, который соответствует проекционной системе, которая будет использоваться для интерпретации данных в пространственной базе данных. ( https://docs.djangoproject.com/en/2.0/ref/contrib/gis/model-api/)
Я выполняю операции над полигонами с определенным SRID и возвращаю другой полигон с другим SRID. Мне просто нужно было "привести" многоугольник, который я возвращал к SRID, который я хотел, с GEOSGeometry(polygon, srid=some_value)
, По сути, полигон, который я возвращал, проецировался в другой формат, который мне не нужен.