python小工具- KML文件提取数据编辑数据后保存到新的txt文件中(使用遍历文件夹,打开文件编辑数据,保存到新的文件夹为txt文件的过程)

InSAR工作:

  1)通过奥维互动地图,下载重庆市38个区县的行政区域KML文件(相当于由很多点组成的一个范围)。按照行政区命名另存成google(KML)文件与文件夹中。

  2)然后将XML文件中的点数据提取出来进行编辑:

    (1)将“,0”替换成‘ ’空格,在将‘,’也替换成空格。

  3)然后将编辑好的数据保存到新的txt文件中,放到新的文件夹里。

  ps:将此过程人工替换转换为程序替换增加了效率。

from xml.dom.minidom import parse
import os
import time

def get_path():
    path = input("输入文件路径:")
    if not os.path.isdir(path):
        print("路径不正确")
        return get_path()
    return path


def parse_xml(path, file):
    old_path = path
    path = os.path.join(path, file)
    print('正在解析: ',path)
    doc = parse(path)
    root = doc.documentElement
    coordinates = root.getElementsByTagName("coordinates")[0]
    old_data = coordinates.childNodes[0].data
    new_data = " ".join([old.replace(",", " ") for old in old_data.split(",0")])
    #new_data = (old.replace(',0',' ')).replace(',',' ') 效果一样
    coordinates.childNodes[0].data = new_data
    text = file.split(".")[0] + ".txt"
    new_path = os.path.join(old_path,'new_xml')

    if not os.path.exists(new_path):
        os.mkdir(new_path)
    text_path = os.path.join(new_path,text)
    with open(text_path, "w+") as f:
        f.write(new_data)


if __name__ == '__main__':
    file_path = get_path()
    files = os.listdir(file_path)
    for f in files:
        if os.path.splitext(f)[-1] == ".kml":
            parse_xml(file_path, f)
        time.sleep(0.3) #避免一次性操作导致程序卡死

PS: 这个程序可以用pyinstaller 打包成exe。发给其他人使用。打包流程在文章pyInstaller里面。https://www.cnblogs.com/Hubery-Liu/articles/12023374.html

posted @ 2019-12-11 16:52  Hubery_Liu  阅读(782)  评论(0编辑  收藏  举报