如何在KML中为gx:track指定间隔?

时间:2019-04-17 19:48:40

标签: kml

我在一段时间内定期使用仪器输出来生成数百个项目的<gx:track>信息。当我生成KML时,所有项目都具有完全相同的<when> ...值数组,并且所有值都是简单且可预测的-但因为我需要<when> ...在每个Track上,我的文件最终都是数十GB,这太大了,无法渲染,并且在回放数据时也无法通过Internet进行传输-即使我要切换到流式传输数据的方法。

根据文档,<when> ...值的数量必须完全等于坐标的数量。

https://developers.google.com/kml/documentation/kmlreference#gxtrack

我当然愿意接受想法,但是我现在所拥有的是:

  1. 配置一些我无法通过网络搜索找到的Time<X>对象,该对象允许我将<when>指定为开始时间,停止时间和间隔
<gx:track>
   <WhenCollection 
      starttime="2019-01-01T00:00:00.000Z" 
      stoptime="2019-01-01T12:00:00.000Z" 
      interval_ms="1000" />
   <gx:coord>...</gx:coord>
   ...
</gx:track>

OR

  1. 以某种方式编写一次<when>,然后在所有<gx:track>中引用它
<gx:WhenCollection id="masterTimeline">
   <when>...</when>
   ...
</gx:WhenCollection>

...
<gx:track>
   <when ref="#masterTimeline" />
   <gx:coord>A...</gx:coord>
   ...
</gx:track>
<gx:track>
   <when ref="#masterTimeline" />
   <gx:coord>B...</gx:coord>
   ...
</gx:track>

OR

  1. 创建一种特殊的流拦截器方法,在此方法中,我可以发送一次<when>,然后在每次需要时将其输入到KML流中
//save the <when>
String w = input.when;

//loop through items and build each track on the client side
while(...) {
  String track = generateTrack(input.next(), w);
  output.write(track);
}

通过重用<when> ...值或以其他方式压缩它们(通过ZIP或间隔定义),我可以一口气将文件大小/传输数据大致减半。

感谢您的见解和专业知识。

0 个答案:

没有答案