GeoDjango - osm2geojson - IllegalArgumentException: Shell 不是 LinearRing

GeoDjango - osm2geojson - IllegalArgumentException: Shell is not a LinearRing

当我尝试使用 osm2geojson 将 osm json 转换为 geojson 时,Django 抛出 IllegalArgumentException: Shell is not a LinearRing。 仅当 osm2geoson 试图从关系中创建 MultiPolygon 时才会抛出异常。它 returns 一个地理 json,但没有坐标。 点已正确转换。

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

奇怪的事情: 我的同事正在使用 conda Environment 开展完全相同的项目,安装了相同的软件包并且没有出现任何错误。唯一的区别是他在 Linux 上工作。 不过应该没什么影响吧?!

我们解决了!

我们发现 Shapely 抛出了异常。

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

来源分布:

pip install shapely --no-binary shapely

在安装没有二进制文件的 shapely 之前,您必须卸载它。

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

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

missing libgeos_c.so on OSX

...告诉我们重新安装 geos 等

然后我们必须将 geos_library_path 分配给 django.setting。

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

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

之后终于成功了!