【问题标题】:Google Earth KMZ reorganizingGoogle 地球 KMZ 重组
【发布时间】:2020-08-11 20:28:04
【问题描述】:

我从我的公司收到了一份包含超过 7000 个坐标的文件。它们的排序方式很糟糕,我无法轻松访问我需要的东西。例如:

  1. 我们有轨道线:L75
  2. 我们有一个交叉点:OW 34
  3. 我们有一个公里点:45

他们通过交叉点对坐标进行排序。这意味着对于该国的每一行,交叉点在文件中彼此堆叠。没有其他迹象(因为点的名称是交叉点)。

我想要实现的是一种通过轨道线然后交叉点重新组织它们的方法。我目前正在手动操作,但这是一项重复无聊的工作。

我试过拖放,但一次一个似乎有点可笑。

【问题讨论】:

    标签: excel geolocation kml google-earth kmz


    【解决方案1】:

    如果您愿意尝试一些编码,您可以编写一个简单的脚本来解析您的 KML/KMZ 文件,对地标进行任何您想要的排序,然后完全按照您的需要输出一个新的 KML 或 KMZ 文件。

    python pykml 模块是最简单的入门方法之一,这里是 tutorial

    在 stackoverflow 中发布了一些使用 pykml 的示例。您可以在开始时将 pykml 问题发布到 stackoverflow 中。只需在问题中添加“pykml”标签即可。

    这是一个解析 KMZ 文件的示例,该文件的 doc.kml 条目由 <Document> 和一组子 <Placemark> 元素组成。代码打开 KMZ 文件并遍历地标,打印每个地标的名称字段及其点坐标。

    from os import path
    from pykml import parser
    from zipfile import ZipFile
    
    kml_file = "test.kmz"
    kmz = ZipFile(kml_file, 'r')
    with kmz.open('doc.kml', 'r') as f:
      doc = parser.parse(f)
    for pm in doc.getroot().Document.Placemark:
      print(pm.name, pm.Point.coordinates)
    

    您也可以将每个地标添加到集合(列表或字典对象)中,然后对其进行排序。

    【讨论】:

    • 好吧,我的编程技巧不太好。仅仅为此而学习一门全新的语言似乎有点矫枉过正。我目前正在使用 vscode 手动将文件编辑为不同的文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多