【问题标题】:openlayers-3 change external wms layer stylesopenlayers-3 更改外部 wms 图层样式
【发布时间】:2015-07-09 11:08:35
【问题描述】:

是否可以更改外部 wms 图层的样式??

我正在尝试使用这一层:

https://firms.modaps.eosdis.nasa.gov/wms/?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=fires24&width=400&height=250&BBOX=-26,34,35,82

在 openlayers3 上使用此代码

var fill = new ol.style.Fill({color: 'GREEN'});
var stroke = new ol.style.Stroke({color: 'GREEN'});

var styles = [new ol.style.Style({
    image: new ol.style.Circle({
        fill: fill,
        stroke: stroke,
        radius: 5
    })
})];


var fires = new ol.layer.Image({
    name: 'fires',
    source: new ol.source.ImageWMS({
        url: 'https://firms.modaps.eosdis.nasa.gov/wms/',
        params: {
            'LAYERS': 'fires24',
            'VERSION': '1.1.1'
        }
    }),
    style: styles
});

图层显示正确,但没有我自己的样式。

是否可以这样做或替换为自定义图标?

【问题讨论】:

    标签: css openlayers-3


    【解决方案1】:

    您使用的 WMS 链接正在返回一个 PNG 文件,我相信 OpenLayers 无法在“事后”设置样式。一旦你得到它,它就是不可变的——它不是“数据”,而是覆盖在你的基础地图源之上的具有透明度的图像。

    您可以将一些参数传递给 wms 调用(正如您所做的那样),并且标准看起来可以支持您将样式传递给 WMS 服务器的调用,以使其在渲染图像时使用这些样式。

    我从 geoserver 网站(GIS 服务器)获得了可能的参数列表 - http://docs.geoserver.org/stable/en/user/services/wms/reference.html

    查看该链接,sldsld_body 参数可能有效。 SLD 类似于 OL 样式,但在 XML 中。这些样式表的详细信息在这里 - http://docs.geoserver.org/stable/en/user/styling/index.html#styling

    我已经尝试过这个 jsfiddle:https://jsfiddle.net/y7fj57dj/,但它不能正常工作 - 它可能是我的 SLD(我跟不上它的速度)或者 NASA 服务器不知道该怎么做做它/忽略它。

    您可能需要联系 NASA 服务器管理员以确认您是否可以设置 WMS 调用的样式(support@earthdata.nasa.gov,通过转到 https://firms.modaps.eosdis.nasa.gov/wms/?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities 进行检索)。

    【讨论】:

    • 非常感谢,最后我决定从他们的 ftp 服务器下载信息,然后解析到我自己的数据库中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多