GDAL:KML文件处理

Keyhole Markup Language(KML)是一种基于XML的文件格式,主要由Google Earth使用。GIS用户经常希望将数据导出到KML,以便在Google Earth中可视化。还可能希望从KML文件中提取数据,或将其转换为GIS中使用的其他格式。GDAL KML驱动程序可以读写KML文件,并提供许多选项使转换兼容。我们这里介绍如何将数据导出为KML文件、KML转其他格式、使用LIBKML驱动程序

(1)将数据导出到KML文件

从数据包的文件metro _ stations spatial _ query . gpkg 中提取图层,并将其导出为KML文件:metro _ stations.KML

cd D:\GDALLearn\gdal-tools
ogr2ogr -f KML metro_stations.kml spatial_query.gpkg metro_stations

KML Export without NameField

当上述命令工作时,能够注意到当在Google Earth中打开结果文件时,每个要素的地标没有任何标签。这是因为KML格式要求图层中有一个名为Name的字段,用作每个地标的标注。但数据图层没有这样的字段,可以使用-dsco metro_stations station提供将用作标注的备用字段名称。该图层有一个名为的字段,我们可以将其用作名称字段。

ogr2ogr -f KML metro_stations.kml spatial_query.gpkg metro_stations -dsco NameField=station

KML Export with NameField

(2)KML转其他

KML文件格式支持在同一个KML文件中包含多个数据图层。现在学习如何提取特定的数据层并将其转换为shp。GDAL支持使用虚拟文件系统从URL读取数据,可以使用前缀vsicurl/从互联网上读取KML文件。

ogrinfo /vsicurl/https://developers.google.com/kml/documentation/KML_Samples.kml

接下来读取图层的路径。

ogrinfo /vsicurl/https://developers.google.com/kml/documentation/KML_Samples.kml Paths

要从这个 KML 文件中提取图层,我们可以使用ogr2ogr 。默认选项在输出中创建许多不需要的字段。我们可以使用Paths -select选择输入字段的子集。

ogr2ogr -f "ESRI Shapefile" paths.shp /vsicurl/https://developers.google.com/kml/documentation/KML_Samples.kml Paths -select "NAME,Description"

也可以将KML图层转换为CSV文件。GDAL CSV驱动程序能够支持提取要素的几何,并将图层从转换为CSV文件,其中包含从几何图形中提取的X、Y和Z列。

ogr2ogr -f CSV points.csv /vsicurl/https://developers.google.com/kml/documentation/KML_Samples.kml Placemarks -lco GEOMETRY=AS_XYZ

(3)KML与LIBKML驱动程序

如果电脑安装的 GDAL 二进制文件是在支持 LIBKML 驱动程序的情况下编译的,则最好使用它而不是 KML 驱动程序。 LIBKML 驱动程序支持更多选项,并允许创建功能齐全的 KML。下面是使用 LIBKML 驱动程序进行数据转换的示例。 为了指定名称字段,LIBKML 驱动程序使用一个名为LIBKML_NAME_FIELD的环境变量,可以使用--config指定变量。

ogr2ogr -f LIBKML metro_stations.kml spatial_query.gpkg metro_stations --config LIBKML_NAME_FIELD station

如果你的GDAL版本同时有KML和LIBKML驱动,OGR会更喜欢LIBKML驱动。要强制OGR使用KML驱动程序读取文件,可以添加:--config OGR_SKIP LIBKML

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值