在已经配置好GDAL环境下,KML与SHP格式的相互转化仅仅用命令行就可以实现。
工具: 利用GDAL针对矢量数据格式转换提供的实用工具ogr2ogr(支持大约60多种格式矢量数据的读写)
Shp —> KML:
ogr2ogr -f + format_name + targetData_name + sourceData_name
ogr2ogr的使用方法如图1所示。
工具: 利用GDAL针对矢量数据格式转换提供的实用工具ogr2ogr(支持大约60多种格式矢量数据的读写)
Shp —> KML:
ogr2ogr -f "KML" D:\FromShp.kml D:\Source.shp
KML —>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。设置办法:
将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文件转化完毕'
常见问题与解决办法:
有些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
附录:
见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
附录:
# 本程序目的在于基于将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文件转化完毕'
没有评论:
发表评论