网站首页 > 技术文章 正文
我正在尝试加载WMS层。使用当前的ISO-8601时间层显示,但我也希望能够设置不同的日期/时间。
为了使用在特定范围内的日期/时间,我需要通过例如检索时间维度来检索时间维度。此特定图层的GetCapabilities并将检索到的值放入数组中。从那时起,我可以使用updateParams来设置/更新日期/时间。
我怎样才能做到这一点?
E.g:
var WMS_DWD = new ol.layer.Image({
name: 'Radar D',
title: "Radar D",
source: new ol.source.ImageWMS({
ratio: 1,
url: 'https://maps.dwd.de/geoserver/ows?service=wms&version=1.3.0&request=GetCapabilities',
params: {
'FORMAT': "image/png",
'VERSION': '1.1.1',
'LAYERS': 'dwd:RX-Produkt',
time : '2019-02-03T15:35:00.000Z',
"exceptions": 'application/vnd.ogc.se_inimage'
}
})
});
当我在浏览器中查看URL时,生成的XML具有TAG“”......在这种情况下,对于层“dwd:RX-Produkt”。
在此TAG中,有许多可用的日期/时间显示。这些“日期/时间”我需要放入一个数组中。
我希望你能帮帮我!
编辑:低于更新的代码(thx到oicgasser)
WMSlyr = new ol.layer.Tile({
name: 'myLYR',
title: "myLYR",
preload: Infinity,
source: new ol.source.TileWMS({
url: 'https://ogcie.iblsoft.com/observations',
params: {
'FORMAT': "image/png",
'VERSION': '1.3.0'
}
}),
urlCapabilities: 'https://ogcie.iblsoft.com/observations?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0'
});
LYR = 'metar';
url = 'https://ogcie.iblsoft.com/observations?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0';
window['timeArray'] = [];
var parser = new ol.format.WMSCapabilities();
Time = '2019-02-15T17:00:00.000Z';
fetch(url).then(function (response) {
return response.text();
}).then(function (text) {
var capabilities = parser.read(text);
var currentProj = map.getView().getProjection().getCode();
var crs;
// the parser can only read the list of projections from the WMS 1.3.0 responses.
// For previous version the current projection wil be used as the default one.
// If the WMS (< 1.3.0) does not support the default projection the layer will not load.
if (capabilities.version === '1.3.0'){
crs = capabilities.Capability.Layer.CRS; // supported EPSG-numbers
}
else {
crs = [currentProj];
}
console.log('Projection WMS: ' + crs);
var layers = capabilities.Capability.Layer.Layer;
var AllLayerNames = [];
if (layers.length > 0 && crs.indexOf(currentProj) > -1){
for (var i = 0; i < layers.length; i += 1){
if ( _.isArray(layers[i]['Dimension']) && layers[i]['Dimension'].length > 0 ){
console.log(layers[i].Name);
AllLayerNames.push(layers[i].Name);
console.log(layers[i]['Dimension'][0]['values']);
}
}
}
var LYRnr = (_.invert(AllLayerNames))[LYR];
window['timeArray'] = layers[LYRnr]['Dimension'][0]['values'].split(',');
var formats = capabilities.Capability.Request.GetMap.Format;
var allformats = [];
for (var i = 0; i < formats.length; i += 1){
allformats.push(formats[i]);
}
console.log(allformats); // array with all the supported output-formats
if (window['timeArray'].indexOf(Time.substr(0,16))) { // use part of string because some WMS dimensions use milliseconds and some do not
WMSlyr.getSource().updateParams({'LAYERS': LYR, 'TIME': Time});
}
});
剩下的问题是:
- 一些WMScapabilities-XML(例如'https://maps.dwd.de/geoserver/wms?version=1.3.0&request=GetCapabilities')显示比'normal'更深的层。代码显示错误,因为找不到层LYR的维度........当我拥有该层的名称甚至更好时,如何搜索这些图层......我如何推广上面的代码实现了吗?
http://www.soinside.com/question/N6hE3zHESQ7j26VpZ3b5LM
- 上一篇: 根据年月计算当月有哪几个周,及每周的起止日期
- 下一篇: 前端学习需要多久时间呢 前端一般需要学多久
猜你喜欢
- 2025-07-06 为什么前端大佬都推荐用 performance.now() 而非 Date.now()?
- 2025-07-06 实战分享:邀请有礼产品怎么做?(邀请有礼活动)
- 2025-07-06 揭秘:视频播放网站如何精准记录用户观看进度
- 2025-07-06 第七篇 前端基础十问,看看你是否真的掌握扎实?
- 2025-07-06 下单预约送货时间功能设计及思路(预约送货怎么说)
- 2025-07-06 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
- 2025-07-06 前端代码更新,如何优雅地通知用户刷新页面?
- 2024-10-09 JS Date对象的妙用:如何更优雅的计算时间差?
- 2024-10-09 从零开始的前端请求之旅 从零开始学前端开发
- 2024-10-09 如何在上班时间利用终端控制台摸鱼??????
你 发表评论:
欢迎- 593℃几个Oracle空值处理函数 oracle处理null值的函数
- 586℃Oracle分析函数之Lag和Lead()使用
- 574℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 571℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 567℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 559℃【数据统计分析】详解Oracle分组函数之CUBE
- 546℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 540℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)