Geodjango django.contrib.gis.geos Linestring to Shapely Linestring

问题描述

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