python读取kml为geojson
试过用ogr读取kml,地理数据读取没问题,但是kml里面的属性数据读取我还没找到方法,后来在github上找到了一个叫做fastkml的类库:
https://github.com/LawAlias/fastkml
在这里还要借助shapely用于将读取出的kml数据进行geojson的结构化
一、类库引用
from fastkml import kml
from fastkml import geometry
from shapely.geometry import mapping
二、将用到的操作封装了一下:
https://github.com/LawAlias/kml2geojson
Shapely 安装以后出现下面这个错误:
from shapely.coords import CoordinateSequence
File "C:\ProgramData\Anaconda3\envs\db\lib\site-packages\shapely\coords.py", line 8, in <module>
from shapely.geos import lgeos
File "C:\ProgramData\Anaconda3\envs\db\lib\site-packages\shapely\geos.py", line 155, in <module>
_lgeos = CDLL(os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll'))
File "C:\ProgramData\Anaconda3\envs\db\lib\ctypes\__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] 找不到指定的模块。
解决方案:
根据错误提示,打开 C:\ProgramData\Anaconda3\envs\db\lib\site-packages\shapely\geos.py 155 行 打印出 os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll')路径
在我安装的shapely C:\ProgramData\Anaconda3\envs\db\Lib\site-packages\shapely\DLLs 这个文件夹中包含 geos_c.dll 等dll ,将这几个dll 复制到 os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll') 这个文件所在的文件夹中就好了