当我试图将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文件夹之后。
之后,它终于工作了!