更新 ENVIxml2csv_czh.py

main
chenzenghui 2024-01-12 00:44:54 +08:00
parent b24af1d116
commit 879f1dc09c
1 changed files with 36 additions and 36 deletions

View File

@ -1,36 +1,36 @@
import csv import csv
import sys import sys
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
if len(sys.argv)<3: if len(sys.argv)<3:
sys.argv.append("010") sys.argv.append("010")
sys.argv.append(r"D:\德清研究院加密\项目\项目文档归档\空基算法\算法验证文档\样本\地表覆盖样本\ROI #1.xml") sys.argv.append(r"D:\德清研究院加密\项目\项目文档归档\空基算法\算法验证文档\样本\地表覆盖样本\ROI #1.xml")
sys.argv.append(r"D:\德清研究院加密\项目\项目文档归档\空基算法\算法验证文档\样本\地表覆盖样本\ROI #1.csv") sys.argv.append(r"D:\德清研究院加密\项目\项目文档归档\空基算法\算法验证文档\样本\地表覆盖样本\ROI #1.csv")
# 替换为你的XML文件路径 # 替换为你的XML文件路径
roixmlcode=sys.argv[-3] roixmlcode=sys.argv[-3]
xml_file =sys.argv[-2] xml_file =sys.argv[-2]
csv_file=sys.argv[-1] csv_file=sys.argv[-1]
# 解析XML # 解析XML
tree = ET.parse(xml_file) tree = ET.parse(xml_file)
root = tree.getroot() root = tree.getroot()
# 创建CSV文件 # 创建CSV文件
with open(csv_file, 'w', newline='', encoding='UTF-8') as csvfile: with open(csv_file, 'w', newline='', encoding='UTF-8') as csvfile:
csvwriter = csv.writer(csvfile) csvwriter = csv.writer(csvfile)
# 写入CSV标题行 # 写入CSV标题行
csvwriter.writerow(['parent_id','id','covernm','roi_polygon']) csvwriter.writerow(['parent_id','id','covernm','roi_polygon'])
# 遍历每个区域并写入CSV # 遍历每个区域并写入CSV
for region in root.findall('Region'): for region in root.findall('Region'):
for GeometryDef in region.findall("GeometryDef"): for GeometryDef in region.findall("GeometryDef"):
for polygonnode in GeometryDef.findall("Polygon"): for polygonnode in GeometryDef.findall("Polygon"):
name = region.get('name') name = region.get('name')
color = region.get('color') color = region.get('color')
coord_sys_str = region.find('GeometryDef/CoordSysStr').text coord_sys_str = region.find('GeometryDef/CoordSysStr').text
# 将所有坐标连接成一个字符串,用逗号分隔 # 将所有坐标连接成一个字符串,用逗号分隔
coordinates = ', '.join([coord.strip() for coord in polygonnode.find('Exterior/LinearRing/Coordinates').text.split()]) coordinates = ', '.join([coord.strip() for coord in polygonnode.find('Exterior/LinearRing/Coordinates').text.split()])
polygonstr="POLYGON(({}))".format(coordinates) polygonstr="POLYGON(({}))".format(coordinates)
# 写入CSV数据行 # 写入CSV数据行
csvwriter.writerow([roixmlcode,roixmlcode ,name, polygonstr]) csvwriter.writerow([roixmlcode,roixmlcode ,name.replace(" ",""), polygonstr])