使用GDAL ogr2ogr转换KML文件时生成空文件问题求助
解决Mac OS 10.12下ogr2ogr转换谷歌位置历史KML输出为空的问题
我之前也碰到过一模一样的情况——谷歌位置历史导出的KML用了特殊的扩展标签,默认ogr2ogr根本识别不到数据,给你几个一步步排查的方案:
1. 开启GX扩展标签解析(最核心的解决办法)
谷歌位置历史的KML里,轨迹点是存在<gx:Track>这类Google专属的扩展标签里的,默认GDAL不会解析这些标签,所以直接转换会输出空文件。你需要在命令里添加-oo GX_PARSE=YES参数来开启解析:
举个转GeoJSON的例子:
ogr2ogr -f "GeoJSON" output.geojson your_location_history.kml -oo GX_PARSE=YES
转Shapefile的话:
ogr2ogr -f "ESRI Shapefile" output.shp your_location_history.kml -oo GX_PARSE=YES
2. 先验证KML本身是否有数据
有时候可能是你导出位置历史时没选对时间范围,导致KML本身是空的。用文本编辑器打开KML文件,搜索<gx:coord>或者<coordinates>,如果能看到一串经纬度坐标,说明数据是存在的,继续往下排查。
3. 用ogrinfo确认图层是否能被识别
先运行命令查看KML里的可识别图层:
ogrinfo your_location_history.kml -oo GX_PARSE=YES
如果输出里能看到类似Tracks或者Placemarks的图层,说明数据已经被识别。如果转换还是有问题,可以指定具体图层名称转换,比如:
ogr2ogr -f "GeoJSON" output.geojson your_location_history.kml -oo GX_PARSE=YES Tracks
4. 检查GDAL版本
Mac OS 10.12上如果是通过Homebrew安装的GDAL,可能版本较旧,对GX标签支持不足。先查看版本:
ogrinfo --version
如果版本低于2.0,建议更新GDAL:
brew update && brew upgrade gdal
(如果是通过其他方式安装的GDAL,比如MacPorts,对应换成port upgrade gdal即可)
5. 排除权限问题
确保你有输出目录的写入权限,比如如果是系统目录,可能需要加sudo来运行命令,或者换成自己用户目录下的路径输出。
内容的提问来源于stack exchange,提问作者supercontra




