Geodjango django.contrib.gis.geos 线串到 Shapely 线串

问题描述 投票:0回答:2

我知道这是一个基本问题,但我刚刚开始使用 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 shapely
2个回答
1
投票

好吧,在按照预期摆弄了太久之后,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)

0
投票

我建议使用WKB而不是WKT,并且要小心不要在使用EWKB

的转换中丢失CRS
from shapely import wkb
django_geom = geom.hexewkb
shapely_geom = wkb.loads(django_geom)
© www.soinside.com 2019 - 2024. All rights reserved.