搜索此博客

2017年9月28日星期四

Mutual Transformation berween KML and SHP(相当快捷与方便)

在已经配置好GDAL环境下,KML与SHP格式的相互转化仅仅用命令行就可以实现。
工具: 利用GDAL针对矢量数据格式转换提供的实用工具ogr2ogr(支持大约60多种格式矢量数据的读写)

Shp —> KML:
ogr2ogr -f "KML" D:\FromShp.kml D:\Source.shp
KML —>Shp :
ogr2ogr -f "ESRI Shapefile" D:\FromShp.shp D:\Source.kml

格式说明:
ogr2ogr -f + format_name + targetData_name + sourceData_name


ogr2ogr的使用方法如图1所示。
Fig.1 ogr2ogr 的使用方法

常见问题与解决办法:
有些KML文件在利用上面的语句进行格式转换的时候可能转化失败,这是由于ogr2ogr将KML文件作为GML文件进行编译的原因,有两种方法可以对此进行修改:
方法1:
可以通过如下数据设置让其跳过GML drive。设置办法:

ogr2ogr -f "ESRI Shapefile" overlay.shp overlay.kml --config GDAL_SKIP GML --debug on
方法2:
step forum网站上的问题求助链接:
http://forum.step.esa.int/t/kml-to-shapefile-problems-ogr2ogr/7232/5

另关于转化失败我在Geographical Information Systems 论坛上的问题求助链接:https://gis.stackexchange.com/questions/256861/kml-to-shapefile-problems-ogr2ogr/256889?noredirect=1#comment405723_256889

附录:
将KML文件转化为Feature Class Python代码:

# 本程序目的在于基于将Sentinel-1影像自带的KML文件转化为ArcGIS可读的图层文件
# 将多幅影像的KML文件在ArcGIS中打开,便于快速分析影像的地理位置
# 输出文件命名与原始影像名保持一致,以便于保留影像的成像日期

import arcpy,fnmatch,os

rootPath = r'G:\test'
pattern = '*.kml'

out_dir = os.path.join(rootPath,'KML文件转换为要素类')
os.makedirs(out_dir)
# 遍历根目录(root)、根目录下文件夹(dirs)以及根目录下的文件(files)
for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        # 寻找文件下所有的kml文件
        kml_file = os.path.join(root, filename)
        # 裁剪出文件名用于命名输出的Feature Class,便于分析影像的成像时间
        name = root[-80:-13]
        arcpy.KMLToLayer_conversion(kml_file,out_dir,name,include_groundoverlay = 'GROUNDOVERLAY')
print 'KML文件转化完毕'

没有评论:

发表评论

LibSVM Chinese Brief Infroduction

Reference: [1]  https://blog.csdn.net/v_july_v/article/details/7624837 [2]  https://wenku.baidu.com/view/c402e983336c1eb91b375d37.html?fr...

  • Word (2)