GeoDjango - osm2geojson - IllegalArgumentException: Shell不是一



当我试图将osm json转换为osm2geojson时,Django正在抛出IllegalArgumentException: Shell is not a LinearRing。该异常仅在osm2geoson试图从关系中创建MultiPolygon时抛出。它返回一个geojson,但没有坐标。点被正确转换。

我的设置:MAC OS, IntelliJ,但是项目是在conda环境下运行的。

奇怪的是:我的同事正在使用conda环境进行完全相同的项目,安装了相同的软件包并且没有出现错误。唯一的区别是他在Linux上工作。但这不应该有任何影响,对吧!

我们解决了!

我们发现Shapely抛出了异常。

然后我们在shape文档中发现了以下条目。https://pypi.org/project/Shapely/

源分布:

pip install shapely --no-binary shapely

在不带二进制文件的shape安装之前,您必须卸载它。

在没有二进制文件的情况下安装后,出现了以下错误:

OSError at / dlopen(/usr/local/lib/libgeos_c.so, 6): image not found

libgeos_c失踪。so on OSX

…告诉我们重新安装geos等

然后给django.setting指定一个geos_library_path。

GEOS_LIBRARY_PATH="/usr/local/Cellar/geos/3.9.1/lib/libgeos_c.dylib"

但是,仍然找不到图像。只有在我们将lib文件夹复制到conda lib文件夹之后。

之后,它终于工作了!

最新更新