KML可扩展性:以KML绘制数十万个GPS点

KML可扩展性:以KML绘制数十万个GPS点,gps,kml,google-earth,Gps,Kml,Google Earth,我有一个相当大的KML文件,其中包含75000个GPS定位,如KMLPlacemarks,在Google Earth中显示后,程序基本停止工作/变得无响应或速度非常缓慢。我想一次策划50万个补丁 KML文件如下所示(遵循中的样式): 。。。 2014-03-17T08:47:15+01:00至2014-03-26T13:59:49+01:00 2014-03-17T08:47:15+01:00 #MarkerStyle 10.198022417724133,60.01997647900134 2

我有一个相当大的KML文件,其中包含75000个GPS定位,如KML
Placemark
s,在Google Earth中显示后,程序基本停止工作/变得无响应或速度非常缓慢。我想一次策划50万个补丁

KML文件如下所示(遵循中的样式):

。。。
2014-03-17T08:47:15+01:00至2014-03-26T13:59:49+01:00
2014-03-17T08:47:15+01:00
#MarkerStyle
10.198022417724133,60.01997647900134
2014-03-17T08:47:16+01:00
#MarkerStyle
10.19811805523932,60.020018765702844
...
我的问题是:是否有KML特性可以更有效地显示此跟踪?我不能只使用
路径
,因为我需要动画的时间信息

或者,是否有更好的工具显示随时间变化的大型GPS跟踪


谢谢

有效扩展大型KML文件的大量功能的关键是使用和使用较小KML文件的集合。嵌套的深度取决于特征的数量

如果不重组KML,您不可能一次在Google Earth中显示50万个地名。您可以将数据拆分为段,并一次显示一个子集。更先进的方法是创建类似于热图的超级特征,用给定区域中的点数量的给定颜色表示100或1000个附近点。放大到给定区域可以使用网络链接和区域的组合加载该区域的“原始”点

这是一个显示Google Earth中KML存在问题的例子,当KML文件中有大量的特性,这些特性都可以一次加载时

您可能需要解析KML文件,或者更好地使用原始数据重新生成一系列具有适当数据分组的新KML文件

数据是基于时间的,因此,如果数据在每个时间间隔内具有相对正态分布的“点”,则您可以简单地根据时间间隔将KML文件分成组,以便将10-50K个位置添加到每个KML文件中。如果数据覆盖较大的地理区域,则可以将数据拆分为网格中规则间隔的单元格区域和/或随时间变化的区域

主根KML文件将具有一系列网络链接,并引用每个子文件。为了防止Google Earth一次加载所有文件,您需要在每个NetworkLink上设置,并在根KML文件的最外层文档上设置较小的初始间隔

<kml xmlns="http://www.opengis.net/kml/2.2">
 <Document>
  <name>Group #1</name>
  <TimeSpan>
        <begin>2012-08-12T01:00:00Z</begin>
        <end>2012-08-12T01:59:59Z</end>
  </TimeSpan>

  <Placemark>
      <TimeStamp>
        <when>2012-08-12T01:00:00Z</begin>
      </TimeStamp>
  </Placemark>
  ...
 </Document>
</kml>
根KML看起来像这样:

<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
    <name>Parent Document</name>
    <open>1</open>
    <!-- use interval for first time span as initial period to load -->
    <TimeSpan>
            <begin>2012-08-12T01:00:00Z</begin>
            <end>2012-08-12T01:59:59Z</end>
    </TimeSpan>

    <NetworkLink>
      <name>Group #1</name>
      <TimeSpan>
            <begin>2012-08-12T01:00:00Z</begin>
            <end>2012-08-12T01:59:59Z</end>
      </TimeSpan>
      <Link>
        <href>group_0100.kml</href>
      </Link>
    </NetworkLink>

    <NetworkLink>
      <name>Group #2</name>
      <TimeSpan>
            <begin>2012-08-12T02:00:00Z</begin>
            <end>2012-08-12T02:59:59Z</end>
      </TimeSpan>
      <Link>
        <href>group_0200.kml</href>
      </Link>
    </NetworkLink>
    ...
</Document>
</kml>

父文档
1.
2012-08-12T01:00:00Z
2012-08-12T01:59:59Z
第1组
2012-08-12T01:00:00Z
2012-08-12T01:59:59Z
组_0100.kml
第2组
2012-08-12T02:00:00Z
2012-08-12T02:59:59Z
组_0200.kml
...
为保持一致性,组kml文件的时间跨度应与父kml文件的NetworkLink中定义的时间跨度相同

<kml xmlns="http://www.opengis.net/kml/2.2">
 <Document>
  <name>Group #1</name>
  <TimeSpan>
        <begin>2012-08-12T01:00:00Z</begin>
        <end>2012-08-12T01:59:59Z</end>
  </TimeSpan>

  <Placemark>
      <TimeStamp>
        <when>2012-08-12T01:00:00Z</begin>
      </TimeStamp>
  </Placemark>
  ...
 </Document>
</kml>

第1组
2012-08-12T01:00:00Z
2012-08-12T01:59:59Z
2012-08-12T01:00:00Z
...

重新考虑您的方法,通常一天中只有一辆车的位置被导出/显示为kml


Kml不适合海量数据显示。

我最终使用了Google extensions
gx:Track
gx:MultiTrack
,其中每个
gx:MultiTrack
单独放在一个
Placemark
中,每天拆分。如果每个地点标记的可见性被禁用,如果您不同时显示它们,Google Earth会整齐地处理数百万个点。

谢谢您的详细回答!我来看看。与此同时,我发现了一个仅限谷歌的KML功能,这在我的案例中非常有用(gx:MultiTrack和gx:Track):gx:Track对于基于时间的功能非常有用,但绘制超过75K-500K的点仍然需要对KML的结构进行一些预先考虑。感谢您的回答。的确,按照你的建议去做是有道理的。