KML可扩展性:以KML绘制数十万个GPS点
我有一个相当大的KML文件,其中包含75000个GPS定位,如KMLKML可扩展性:以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
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的结构进行一些预先考虑。感谢您的回答。的确,按照你的建议去做是有道理的。