代码之家  ›  专栏  ›  技术社区  ›  DanM

kml+google earth:带有时间线选择器的大型复杂覆盖图?

  •  1
  • DanM  · 技术社区  · 16 年前

    在GoogleEarth(或可能是其他对KML友好的客户)中有一个关于覆盖和时间线的问题。

    我有一天中每一分钟的数据,代表地图上不同区域的数值,我想以一种基本上类似于天气雷达图的方式显示这些数据。所以,对于每一分钟,我基本上都有一个大的lat/lon边界框列表,每个框都有一个相关的数值;显示将涉及在边界区域上绘制一个多边形,多边形的颜色将取决于该数值。

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

    可以预先渲染大量的PNG文件,例如,每个时间片一个;或者最好使用多边形,或者…?

    最后,谷歌地球是最好的客户吗?或者我可以做点别的更好吗?

    谢谢!!

    2 回复  |  直到 10 年前
        1
  •  3
  •   amercader    16 年前

    这个 Open Geospatial Consortium WMS standard 对于服务映射,定义了对时间参数的支持,这允许对时间请求的支持。提供此支持的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

    注意时间参数如何从 2005年8月29日13%3a00%3a00z 2005年8月30日13%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

    在客户端,虽然谷歌地球可以充当WMS客户端,但我认为它不支持WMS请求的时间维度。另一方面,构建支持它们的Web客户端非常容易 OpenLayers ,一个开源的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

    注意时间参数是 2005-08-30t13%3a00%3a00z/2005-09-01t13%3a00%3a00z

        2
  •  2
  •   Matthew Snape    16 年前

    KML的时间特征是 well documented 包括时间跨度。我建议您尝试使用基于矢量和基于图像的方法,这取决于用户的缩放程度:

    • 当用户缩小(小比例)时,需要绘制大量的单元格,从而使图像的使用效率更高。PNG可以打包成一个kmz文件,它只是一个压缩目录。
    • 当用户在近距离(大范围)缩放时,需要绘制的单元格较少,因此矢量法是最有效的方法。GoogleEarth可以绘制大量矢量图,不需要太多麻烦,但也有局限性。

    谷歌地球是一个非常好的通用浏览器,非常用户友好。但是,时间序列工具更复杂,因此它将取决于用户的复杂程度。它对项目的适用性取决于您拥有的数据类型和所需的输出类型。使用flash可能会获得更好的效果。

    推荐文章