zoukankan      html  css  js  c++  java
  • python 实现批量 WKT 转 KML

    使用ogr库实现 wkt 格式的几何数据转换为 kml 格式的简单实现。

    #!/usr/bin/env python
    
    import argparse
    import os
    from osgeo import ogr  # pip install osgeo
    
    # 读取 wkt 文件,这里只返回了第一行
    def readWktFile(filename):
    	f = open(filename)
    	data = f.readlines()
    	f.close()
    	return data[0]
    
    # 参考: https://pcjericks.github.io/py-gdalogr-cookbook/geometry.html
    
    def wkt2kml(wkt):
    	geometry = ogr.CreateGeometryFromWkt(wkt)
    	return geometry.ExportToKML()
    
    def wkt2geojson(wkt):
    	geometry = ogr.CreateGeometryFromWkt(wkt)
    	return geometry.ExportToJson()
    
    def writeFile(filename, data):
    	fo = open(filename, "wb")
    	fo.write(data)
    
    
    def main():
    	print("读取指定 wkt 文件列表(一行一个)")
    	parser = argparse.ArgumentParser(description='转换 WKT 文件为 KML')
    	parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),default=sys.stdin)
    	args = parser.parse_args()
    	wktFileList = args.infile.read().splitlines()
    
    	wktDirectory = "wkt/" # wkt 文件所在目录
    	kmlDirectory = "kml/" # kml 文件输出目录
    	
    	ogr.RegisterAll()
    
    	for wktFile in wktFileList:
    		print("处理 %s" % wktFile)
    		wkt = readWktFile(wktDirectory + filename)
    		kml = wkt2kml(wkt)
    
    		# 补全kml文件信息(这里 wkt 文件后缀名都是 .wkt )
    		prefix = '<?xml version="1.0" encoding="utf-8" ?>
    			<kml xmlns="http://www.opengis.net/kml/2.2">
    			<Document id="root_doc"><Folder><name>%s</name>
    			<Placemark>' % filename[0:-4]
    		suffix = '</Placemark></Folder></Document></kml>'
    		kml = prefix + kml + suffix
    
    		writeFile(kmlDirectory + filename[0:-4] + ".kml", kml.encode())
    
    if __name__ == "__main__":
    	main()
    
    
  • 相关阅读:
    SSLOJ 1338.逃亡路径
    文件上传与下载
    TCP协议和UDP协议
    DWR推技术在开发中需要注意的ScriptSession问题
    页面缓存-freemarker静态处理
    springMVC的工作流程
    hibernate的工作流程
    Struts2框架的大致流程
    mybatis中的多表查询
    传值乱码解决方案
  • 原文地址:https://www.cnblogs.com/oloroso/p/14864093.html
Copyright © 2011-2022 走看看