我知道这是一个基本问题,但我刚刚开始使用 GIS,但我陷入了困境。
我尝试使用具有形状函数
django.contrib.gis.geos import LineString
的shapely.ops.snap()
线串。显然它缺少形状物体的属性,我得到了 AttributeError: 'LineString' object has no attribute '_geom'
如何将 LineString 转换为形状优美的 LineString 并返回 geodjango geos LineString 以将其保存到数据库?
这似乎有点奇怪,文档说它既是 GEOS 几何图形又是可互换的(https://code.djangoproject.com/wiki/GEOSGeometry),但似乎并非如此。
问这个问题感觉很不好,但我没有找到合适的函数,而且文档似乎比我习惯的更简约(尽管库看起来很棒):(
好吧,在按照预期摆弄了太久之后,geodjango 中 GEOS 几何的属性描述如下(https://docs.djangoproject.com/en/3.1/ref/contrib/gis/geos/)
该对象可以通过调用
wkt
来输出,例如 .wkt
然后加载。
所以:
from shapely import wkt
geodjangoGeometryAsWkt = GeodjangoObject.wkt
shapelyGeom = wkt.loads(geodjangoGeometryAsWkt)
我建议使用WKB而不是WKT,并且要小心不要在使用EWKB
的转换中丢失CRSfrom shapely import wkb
django_geom = geom.hexewkb
shapely_geom = wkb.loads(django_geom)