如何使用ogr2ogr将Geofabric下载的Shapefile转换为GeoJSON
问题原因
- 命令中引用的
turkmenistan-latest-free.shp文件不存在:Geofabric提供的OSM数据Shapefile压缩包解压后是按要素类别拆分的多个独立Shapefile(建筑、道路、水系等要素各自对应一套shp相关文件),不存在覆盖全区域的单个Shapefile文件。 - 单个GeoJSON文件默认仅支持存储一个图层:你直接将包含多个图层的整个文件夹作为输入,输出为单个GeoJSON时,ogr2ogr无法在同一个GeoJSON文件中创建多个图层,因此抛出对应报错。
解决方案
方案1:合并所有要素为单个GeoJSON
如果需要将全量要素整合到同一个GeoJSON文件中,可遍历所有Shapefile逐个追加到目标文件:
# 进入解压后的Shapefile所在文件夹 cd 你的解压目录路径 # 遍历所有shp文件,追加到同一个GeoJSON for shp in *.shp; do ogr2ogr -f GeoJSON -append turk.geojson $shp; done
方案2:按要素类别输出多个GeoJSON
如果需要不同类型要素分开存储,可批量将每个Shapefile转换为独立的GeoJSON:
cd 你的解压目录路径 for shp in *.shp; do ogr2ogr -f GeoJSON ${shp/.shp/.geojson} $shp; done
转换完成后可直接将所有GeoJSON传入tippecanoe生成MBTiles:
tippecanoe -o turk.mbtiles *.geojson
方案3:跳过格式转换直接生成MBTiles
tippecanoe本身支持直接读取Shapefile文件,无需提前转成GeoJSON,可直接用所有Shapefile生成目标MBTiles:
cd 你的解压目录路径 tippecanoe -o turk.mbtiles *.shp
该方案执行效率更高,也能避免格式转换过程中可能出现的属性丢失问题。
内容的提问来源于stack exchange,提问作者vepzfe
相关产品推荐
相关产品推荐

