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), По сути, полигон, который я возвращал, проецировался в другой формат, который мне не нужен.

Другие вопросы по тегам