当前位置: 首页 > news >正文

geoserver解析元数据获取图层相关参数

需求:

1、通过geoserver地址获取所有图层名称;

2、加载wms服务,实现自动定位。

获取图层名和范围视图有两种思路:

1、调取geoserver的rest接口。缺点就是需要验证登录。

rest接口官方文档:GeoServer API Docs

2、通过GetCapabilities接口解析元数据。元数据是xml格式的,在JavaScript中,可以使用DOM解析器来解析XML文本数据

为了简单起见选择第二种。话不多说,直接上代码:

// 使用fetch发送GetCapabilities请求
fetch(`/geoserver/hd/wms?service=WFS&version=1.0.0&request=GetCapabilities`).then(response => response.text()).then(text => new DOMParser().parseFromString(text, 'text/xml')).then(xml => {const layerList = []// 解析XML获取图层信息const featureTypeList = xml.childNodes[0].getElementsByTagName('FeatureTypeList')[0].getElementsByTagName('FeatureType')for (let i = 0; i < featureTypeList.length; i++) {const element = featureTypeList[i];const layerName = element.getElementsByTagName('Name')[0].textContent; // 获取图层名称const minx = element.getElementsByTagName('LatLongBoundingBox')[0].getAttribute('minx')const miny = element.getElementsByTagName('LatLongBoundingBox')[0].getAttribute('miny')const maxx = element.getElementsByTagName('LatLongBoundingBox')[0].getAttribute('maxx')const maxy = element.getElementsByTagName('LatLongBoundingBox')[0].getAttribute('maxy')layerList.push({layerName,minx,miny,maxx,maxy})}console.log(layerList) // 打印图层信息}).catch(error => console.error('Error fetching GetCapabilities:', error));

获取结果如下:

通过请求获取XML数据的字符串。然后,使用DOMParserparseFromString方法将这个字符串解析成一个XML文档对象。接着,使用getElementsByTagName方法找到名为'节点名称'的元素,并通过textContent属性获取其文本内容。


http://www.mrgr.cn/news/57953.html

相关文章:

  • perl双引号内字符串的反斜线转义
  • CZX前端秘籍2
  • HTTP安全么?如何更好的保护您的网站
  • python学习之路 - python进阶【闭包、装饰器、设计模式、多线程、socket、正则表达式】
  • 电脑技巧:Rufus——最佳USB启动盘制作工具指南
  • 【深度学习代码调试5】标准化数据集:TensorFlow Datasets (TFDS)自动化数据加载与预处理
  • 零基础Java第九期:一维数组(二)和二维数组
  • Java题集练习3
  • 一文带你入门Flink CDC
  • 十、Linux 故障排除专业案例分享
  • java抽象类和接口
  • 【Fargo】14: sockaddr_in 、 sockaddr 、sockaddr_storage 区别及转换
  • 论文思路 标书 水文
  • css知识点梳理
  • Zypher Network Layer3 主网上线,“宝藏方舟”活动是亮点
  • 深度学习_循环神经网络_预测平安中国股价(文末附带数据集下载链接, 长期有效, 如果有大佬愿意帮忙, 我先在这磕一个,感谢)
  • Vue弹窗用也可以直接调用Js方法了
  • 博饼代码【Python】
  • V4L2驱动框架
  • Unreal Engine5安装Niagara UI Renderer插件
  • phpstorm中使用FTP功能和自动上传配置介绍
  • 部署前后端分离若依项目--CentOS7Docker版
  • 数字隔离器市场崛起,老牌射频芯片企业“HOPERF”迎风启航
  • Android 两种方式实现类似水波扩散效果
  • Shell编程-小结
  • Python os模块详解