You need to enable JavaScript to run this app. 如何批量提取Google Earth中的地名为文本?满足Python项目列表比对需求
优惠活动
大模型
产品
解决方案
定价
更多

如何批量提取Google Earth中的地名为文本?满足Python项目列表比对需求

批量提取Google Earth地名的可落地方案

方案1:复用现有剪贴板内容做结构化解析(零额外操作成本)

你当前用Ctrl+C/右键复制地点的操作本身就已经拿到了全部结构化数据,不需要专门去抓界面上的显示文本:

  • 直接把剪贴板内容粘贴到新建的空白文件里,将文件后缀修改为.kmz即可——KMZ本质是ZIP压缩包,内部存储的就是带完整地点结构的KML文本
  • 你之前粘贴后看到「属性页完整源码」的情况,是因为粘贴到了富文本编辑器中,编辑器自动识别了剪贴板里携带的富文本格式内容,不影响结构化KML数据的有效性
  • 以下代码全程使用Python内置标准库,不需要安装任何第三方工具,没有环境配置门槛,新手复制粘贴就能运行:
    import zipfile
    import xml.etree.ElementTree as ET
    
    def ge_kmz_to_text(kmz_save_path):
        name_list = []
        with zipfile.ZipFile(kmz_save_path, 'r') as kmz_archive:
            # 读取KMZ内部默认主KML文件
            with kmz_archive.open('doc.kml', 'r') as kml_content:
                tree = ET.parse(kml_content)
                root = tree.getroot()
                # 匹配KML标准命名空间下的所有Placemark的name字段
                kml_ns = {'ns': 'http://www.opengis.net/kml/2.2'}
                # 全局递归匹配所有Placemark下的名称,自动覆盖嵌套子文件夹的内容
                for name_node in root.findall('.//ns:Placemark/ns:name', kml_ns):
                    node_text = name_node.text.strip() if name_node.text else ''
                    if node_text:
                        name_list.append(node_text)
        # 导出纯文本地名列表
        with open('ge_extracted_names.txt', 'w', encoding='utf-8') as out_f:
            out_f.write('\n'.join(name_list))
        return name_list
    
    # 替换为你保存的KMZ文件路径即可运行
    ge_kmz_to_text('粘贴保存的复制内容.kmz')
    
  • 代码运行后生成的ge_extracted_names.txt就是全量无格式的纯地名列表,可直接用于和本地应有列表做比对。

方案2:官方导出功能适配大文件场景

如果需要处理的地点规模达到5-10k量级,避免剪贴板内容被截断:

  • 直接在Google Earth左侧地点侧边栏,选中装所有待提取多边形的父级文件夹,右键选择「将位置另存为」,选择保存格式为KMZ
  • 后续解析流程和上述代码完全一致,该方式导出的KMZ没有内容截断风险,适配10k级别的地点规模
  • 如果遇到KML存在多层嵌套子文件夹导致漏读,只需要把代码中的匹配逻辑调整为全局遍历所有<name>节点,即可覆盖所有层级的地点内容

内容的提问来源于stack exchange,提问作者user15154115

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 20:54:03