Google Earth KMZ重组

问题描述

我从我公司收到了一个文件,它的坐标超过7.000。它们的排序方式很糟糕,我无法轻松访问所需的内容。例如:

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

他们按交叉点对坐标进行排序。这意味着在该国家/地区中的每一行,交叉点都在文件中彼此堆叠。没有其他指示(因为该点的名称是交叉点)。

我想要实现的是一种通过轨迹线然后交叉点对其进行重组的方法。我目前正在手动进行此操作,但这是一项无聊的工作。

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

欢迎任何想法

令人惊讶:-3票,没有人投票告诉我为什么?

解决方法

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

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

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

这是一个简单的示例,用于使用doc.kml文件解析KMZ,该文件由<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)

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