首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google Earth:动态参数化的KML可能吗?

Google Earth:动态参数化的KML可能吗?
EN

Stack Overflow用户
提问于 2013-01-30 17:57:38
回答 2查看 1.2K关注 0票数 1

我制作了一个大约23 MBytes长的大型KML文件。谷歌地球渲染它的时间非常长,滞后并占用1 1GB的RAM甚至更多。在速度较慢的计算机上,也可能不渲染某些区域。

因此,我们的想法是对服务器使用参数化的GET请求,仅返回具有指定边界的区域的kml数据。

GoogleEarth可以发起和使用这样的请求吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-30 22:10:55

你所要求的都可以通过NetworkLink来完成。如果您从servlet、web服务、脚本等动态生成KML,则可以指示Google Earth发送其视图的边界框,您可以从中生成要返回的KML。这种方法需要在应用程序服务器/web服务器上托管一个自定义“服务”,该服务可以生成KML以响应Google Earth发送的请求。

在根级servlet中,您需要定义refreshMode=onChange,以便在视图更改时重新进行刷新,同时还需要定义servlet的URL。建议使用viewRefreshTime元素设置viewRefreshMode=onStop,这样在用户停止缩放/移动后1秒才会获取数据,否则会不断刷新数据。此外,还需要viewFormat来指示Google Earth返回视图的边界框。在本例中,BBOX参数被添加到在HTTP GET请求中发送给servlet的HTTP参数中。

代码语言:javascript
运行
复制
<Link>
      <href>servlet-url</href>
      <refreshMode>onChange</refreshMode>
      <viewRefreshMode>onStop</viewRefreshMode>
      <viewRefreshTime>1</viewRefreshTime>
      <viewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]</viewFormat>
</Link>

如果您的数据跨越很大的区域,那么您可以将数据拆分到单独的KML文件中,然后在父KML文件中指定基于区域的NetworkLinks。这种方法允许您将数据作为静态KML文件生成一次,并且只提供基于用户视图的“活动”数据。

相关教程:

https://developers.google.com/kml/documentation/regions#regionbasednl

参考资料:

https://developers.google.com/kml/documentation/kmlreference#networklink https://developers.google.com/kml/documentation/kmlreference#region https://developers.google.com/kml/documentation/kmlreference#viewformat

票数 2
EN

Stack Overflow用户

发布于 2013-01-30 22:13:56

是的,这根本不是问题。您可以在Google Earth中将KML的源URL添加为带参数的URL,然后将其作为多个单独的源进行加载。使用这种方法,您只是在将KML添加到GE时“动态”提供标准,从那时起,它看起来就像您加载的任何其他静态KML文件。

编辑我现在看到(登录到GE)它实际上调用了@JasonM1描述的这些网络链接(在Add->NetworkLink下)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14601097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档