当前,我有一个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]]
我不知道是什么原因造成的。
非常感谢。
答案 0 :(得分:2)
此问题通过指定SRID来解决。根据Django文档,SRID为
为模型选择适当的SRID是开发人员应仔细考虑的重要决定。 SRID是一个整数说明符,对应于将用于解释空间数据库中数据的投影系统。 (https://docs.djangoproject.com/en/2.0/ref/contrib/gis/model-api/)
我对具有特定SRID的多边形执行操作,然后返回具有不同SRID的另一个多边形。我只需要使用GEOSGeometry(polygon, srid=some_value)
将要返回的多边形“投射”到想要的SRID。基本上,我要返回的多边形被投影成我不想要的其他格式。