1

目前,我有一个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]]

我不知道是什么原因造成的。

提前非常感谢。

4

1 回答 1

3

这已通过指定 SRID 解决。根据 Django 文档,SRID 是

为您的模型选择合适的 SRID 是开发人员应仔细考虑的重要决定。SRID 是一个整数说明符,对应于将用于解释空间数据库中的数据的投影系统。(https://docs.djangoproject.com/en/2.0/ref/contrib/gis/model-api/

我对具有特定 SRID 的多边形执行操作并返回具有不同 SRID 的另一个多边形。我只需要将要返回的多边形“投射”到我想要的 SRID,使用GEOSGeometry(polygon, srid=some_value). 基本上,我返回的多边形被投影为我不想要的其他格式。

于 2018-06-27T16:19:19.037 回答