基于 ArcGIS Maps SDK for JavaScript 如何对接 WMS / WMTS 服务? |
您所在的位置:网站首页 › wfs怎么读 › 基于 ArcGIS Maps SDK for JavaScript 如何对接 WMS / WMTS 服务? |
前言
为了应对波诡云谲的国际形势,国家大力推进信创平台建设,国内各大地理信息软件开发企业的国产化服务数据已经趋于多元化。对于使用以ArcGIS Maps SDK for JavaScript为地图框架的项目,将不得不对其进行国产化的数据兼容加载。 最近在做第三方系统地图服务数据对接中,就遇到了要兼容超图、众智、宏图等厂商提供的WMS服务 / WMTS服务。以下就对于这些国产化数据平台服务的对接进行总结归纳。 ArcGIS Enterprise 支持 OGC开放地理空间联盟 (OGC) Web 服务使地图和数据以国际公认的开放格式在 Web 上可用。 OGC 用于定义相关规范,可使具有受支持客户端应用程序的任何人均可在 Web 上使用地图和数据,无论该应用程序是基于 Web(例如,位于 ArcGIS Enterprise 门户的 Map Viewer 中)还是富桌面客户端(例如 ArcGIS Pro)。 OGC 用于定义多种服务类型,分别用于提供不同类型的数据和地图。 ArcGIS Enterprise 支持以下 OGC 服务类型: Web 地图服务 (WMS),用于以地图图像的方式提供一组图层 Web 地图切片服务 (WMTS),用于以缓存地图切片的形式提供地图图层 Web 要素服务 (WFS),用于以矢量要素的形式提供数据 网络覆盖服务 (WCS),用于以栅格 coverage 的形式提供数据(不要与 ESRI 的 ArcInfo coverage 格式相混淆) 网络处理服务 (WPS),用于提供地理空间处理功能具体的内容可以参考ArcGIS官网提供的 ArcGIS Enterprise 支持 OGC 超图超图是一款专业的GIS软件,提供多种数据格式和服务类型,包括WMS和WMTS服务。 它具有强大的数据处理和分析能力,可以用于城市规划、土地利用、资源管理等领域。 在arcgis api中,可以通过使用WMSLayer和WMTSLayer类来加载超图的WMS和WMTS服务。 html文件通用的前端html页面,下同。 WMTSLayer | WMTSLayer | ArcGIS Maps SDK for JavaScript 4.26 html, body, #viewDiv { padding: 0; margin: 0; height: 100%; width: 100%; } .esri-layer-list { width: 310px; } 复制代码 示例地址 WMS: iserver.supermap.io/iserver/ser… WMTS: iserver.supermap.io/iserver/ser… WMSLayer加载 完整代码下面为index.js文件的完整代码,自此之后展示的代码为关键代码,可以以此做参考。 require([ "esri/Map", "esri/views/MapView", "esri/layers/WMTSLayer" ], (Map, MapView, WMTSLayer) => { const layer = new WMSLayer({ url: "https://iserver.supermap.io/iserver/services/maps/wms130", sublayers: [ { name: "长春市区图" } ] }); const map = new Map({ layers: [layer], }); view = new SceneView({ container: "viewDiv", map: map, }); view.when(function () { view.extent = layer.fullExtent; var layerList = new LayerList({ view: view, }); view.ui.add(layerList, "bottom-left"); }); }); 复制代码 加载效果示例地址: iserver.supermap.io/iserver/ser… const layer = new WMTSLayer({ url: "https://iserver.supermap.io/iserver/services/map-china400/wmts-china", activeLayer: { id: "China", tileMatrixSetId: "ChinaPublicServices_China" }, }); 复制代码 加载效果该说不说,航天宏图、众智软件的国产化服务,我还是第一次见🤣 WMSLayer加载航天宏图发布的WMS服务是完全遵循OGC规范的,但是 ArcGIS Maps SDK for JavaScript的WMSLayer服务比较特殊,在1.3.0版本时,四至范围bbox跟wkid有关系,wkid在落在如下图一所示的范围时,四至范围bbox会发生改变(如下图二)。 图一:
特殊的方案加载可以利用ArcGIS Maps SDK for JavaScript的webTileLayer类来定义切片方案。 ArcGIS Maps SDK for JavaScript的SceneView模式和MapView模式对切片的支持是有区别的,MapView模式可以支持对切片的方案的动态投影矫正,但是SceneView模式并不支持。具体可以看 官方网站 解释。 众智发布的wms服务是兼容ArcGIS Maps SDK for JavaScript加载的,所以ArcGIS Maps SDK for JavaScript的WMSLayer类可以直接加载其wms服务。 关键代码 // 保密需要,ip和port根据需求加载 const layer = new WMSLayer({ id: `wms-dltb`, title: 'dltb', url: `http://${ip}:${port}/WiseMap/mapagent/mapagent.fcgi?SERVICENAME=dltb&service=wms&request=GetCapabilities`, version: '1.1.0', sublayers: [ { title: 'dltb', name: 'dltb' } ], imageFormat: 'image/png' }); 复制代码 加载效果通过这次数据对接的经历,我对OGC规范有了更深层次的理解。 踩坑了不少,总的来说归纳为: SceneView模式切片方案要注意保持一致。 在加载1.3.0版本的WMS服务时,要注意坐标系的范围,特定的范围会导致四至范围的值变换。码字不易,希望这次经验对大家有所帮助。 未经本人许可,不得转载本文,谢谢! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |