打开图层3读取ECMWF WMS图层

时间:2016-02-21 22:02:12

标签: openlayers-3 wms

我正在努力让WMS提要工作,这里解释了提要:

https://software.ecmwf.int/wiki/display/MACSUP/Accessing+public+CAMS+WMS+products

检索图层的示例网址是:

https://apps.ecmwf.int/wms/?token=public&request=GetMap&layers=composition_aod550,grid,foreground&width=600&bbox=-180,-90,180,90

但是,我不知道如何让Open Layers 3 WMS API读取这一层,我现在正在做:

var layer_to_return = new ol.layer.Tile({
  preload: Infinity,
  visible: true,
  source: new ol.source.TileWMS(({
    url: 'https://apps.ecmwf.int/wms/',
    params: {'LAYERS': 'composition_aod550', 'token':'public'},
    serverType: 'geoserver',
    crossOrigin: 'anonymous'
    }))
});

map.addLayer(layer_to_return);

除了'grid'元素和边界框之外,其中似乎包含大部分URL。我不确定为什么它不会在OL3中渲染。

1 个答案:

答案 0 :(得分:1)

我通过调整两件事来解决这个问题:

  • HTTPS给了我一个跨域问题
  • 然后,磁贴服务器返回未知投影(URL请求默认为EPSG:3587)

如果它可以帮助您,作为参考,我得到的两个:将您的代码添加到ol3地图;试图加载它;使用浏览器开发工具查看正在生成的磁贴请求的URL;在单独的标签中打开其中一个网址;读取从WMS服务器返回的XML中的错误消息。

我查看了您链接到的网站上的功能文件,它似乎表明EPSG:4326可行。所以我尝试了这个并且它有效:

var layer = new ol.layer.Tile({
    preload: Infinity,
    visible: true,
    source: new ol.source.TileWMS({
        url: 'http://apps.ecmwf.int/wms/',
        params: {'LAYERS': 'composition_aod550', 'token':'public'},
        serverType: 'geoserver',
        crossOrigin: 'anonymous',
        projection: 'EPSG:4326'
    }),
    opacity: 0.5
});

请注意,我添加了0.5的不透明度。这样您就可以将其覆盖在另一个地图源上以查看国家/地区边界,例如打开的街道地图。

我在这里提出了一个有效的例子,透明度:

http://www.freytag.org.uk/snippets/cams.html