问题描述
我知道这是一个基本问题,但我才刚开始使用 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)