1

有一个关于 Google 地球(或其他可能对 KML 友好的客户端)中的叠加层和时间线的问题。

我有一天中每一分钟的数据,表示地图上各个区域的数值,我想以基本上看起来像天气雷达图的方式显示这些数据。所以,对于每一分钟,我基本上都有一个纬度/经度边界框的大列表,每个边界框都有一个相关的数值;显示将涉及在有界区域上绘制多边形,并且多边形的颜色将取决于该数值。

我可以在一瞬间看到许多这样做的方法;要么为整个地图区域构建一个带有 ImageMagick 之类的 PNG 并覆盖位图,要么直接在地图上绘制多边形......不过,问题是我如何设置它以便可以选择时间范围用户,并且所有适合该时间范围的叠加层都将显示出来。它必须尽可能地响应迅速,因此效率是关键。

例如,可以预渲染大量 PNG 文件,每个时间片一个;还是使用多边形会更好,还是...?

最后——谷歌地球是最好的客户端吗?或者我可能会用别的东西更好?

谢谢!!

4

2 回答 2

3

用于提供地图的开放地理空间联盟 WMS 标准定义了对 TIME 参数的支持,该参数允许支持时间请求。提供这种支持的 WMS 服务称为 WMS-T。据我所知,在开源地图服务器中,只有Mapserver和部分Geoserver提供对 WMS-T 的支持(我可能对此非常错误,因为我只是根据个人经验发言)。查看此页面以获取有关设置 WMS-T 服务的所有详细信息:

http://mapserver.org/ogc/wms_time.html

通过查看以下 URL,您可以轻松了解请求的工作方式:

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?LAYERS=nexrad-n0r-wmst&TRANSPARENT=true&FORMAT=image%2Fpng&TIME=2005-08-29T13%3A00%3A00Z&SERVICE= WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,22.5,-67.5,45&WIDTH=256&HEIGHT=256

请注意 TIME 参数如何从2005-08-29T13%3A00%3A00Z更改为2005-08-30T13%3A00%3A00Z(时间格式根据 ISO 8601 规范)。

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?LAYERS=nexrad-n0r-wmst&TRANSPARENT=true&FORMAT=image%2Fpng&TIME=2005-08-30T13%3A00%3A00Z&SERVICE= WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,22.5,-67.5,45&WIDTH=256&HEIGHT=256

在客户端,虽然 Google 地球可以充当 WMS 客户端,但我认为它不支持 WMS 请求的时间维度。另一方面,使用OpenLayers构建支持它们的 Web 客户端非常容易,这是一个开源 Javascript Web 映射框架,如以下示例所示:

http://dev.openlayers.org/releases/OpenLayers-2.8/examples/wmst.html

希望这能给你一些线索。


编辑:您可以定义多个时间值、单个范围或多个范围。例如,对于单个范围,URL 将是:

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?LAYERS=nexrad-n0r-wmst&TRANSPARENT=true&FORMAT=image%2Fpng&TIME=2005-08-30T13%3A00%3A00Z/ 2005-09-01T13%3A00%3A00Z&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,22.5,-67.5,45&WIDTH=256&HEIGHT=256

注意 TIME 参数是2005-08-30T13%3A00%3A00Z/2005-09-01T13%3A00%3A00Z

于 2010-01-22T09:42:02.193 回答
2

KML 的时间特征有据可查,包括时间跨度。我建议您尝试使用基于矢量和图像的方法,具体取决于用户的缩放程度:

  • 当用户缩小(小比例)时,需要绘制大量单元格,从而更有效地使用图像。PNG 可以打包在一个 kmz 文件中,该文件只是一个压缩目录。
  • 当用户放大近距离(大比例)时,需要绘制的单元格更少,使矢量成为最有效的方法。谷歌地球可以绘制大量的矢量,没有太多麻烦,但也有限制。

谷歌地球作为一个非常用户友好的通用查看器非常棒。但是,时间序列工具更复杂,因此取决于用户的复杂程度。它对您的项目的适用程度取决于您拥有的数据类型和您想要的输出类型。使用闪光灯可能会获得更好的效果。

于 2010-01-22T23:50:04.847 回答