ArcGIS JS API加载GeoServer发布的WFS服务
文章目录
- 前言
- 主要代码
- 总结
- 参考链接
前言
WFS(Web Feature Service),OGC标准下的要素服务。其支持的主要操作如下:
- GetCapabilities (discovery operation)
- DescribeFeatureType (discovery operation)
- GetPropertyValue (query operation)
- GetFeature (query operation)
- GetFeatureWithLock (query & locking operation)
- LockFeature (locking operation)
- Transaction (transaction operation)
- CreateStoredQuery (stored query operation)
- DropStoredQuery (stored query operation)
- ListStoredQueries (stored query operation)
- DescribeStoredQueries (stored query operation)
该服务可以直接在ArcGIS Server上发布,只需要在正常发布服务流程上勾选上WFS的选项就可以,也可以通过其他平台发布,如开源GIS平台GeoServer。在实际项目中WFS服务用到的还是比较少的,一般来说如果甲方采购GIS平台的话,如ArcGIS平台,会直接发布Feature Layer服务来进行要素的增删改操作;SuperMap平台的话,会直接发布数据服务。也就是各自平台所特有的要素数据服务,而不会去采用WFS服务的方式。个人感觉虽然各个GIS平台厂商对OGC标准下的服务都有支持,但支持并不是那么的友好,毕竟不是自家的。该篇博客主要说如何通过ArcGIS JS API加载GeoServer发布的WFS服务,只要是WFS服务就可以,无论哪个平台发布的,以GeoServer平台的为例。
主要代码
API地址
:https://developers.arcgis.com/javascript/3/jsapi/wfslayer-amd.html
官方示例
: https://developers.arcgis.com/javascript/3/jssamples/layers_wfs.html
下面是自己发布的WFS服务
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>ArcGIS叠加GeoServer发布的WFS图层</title>
</head>
<link rel="stylesheet" href="https://js.arcgis.com/3.27/esri/css/esri.css">
<style>html, body, #map {height: 100%;margin: 0;padding: 0;}
</style>
<script src="https://js.arcgis.com/3.27/"></script>
<script>var map;require(["esri/map", "esri/InfoTemplate", "esri/layers/WFSLayer","esri/config", "esri/geometry/Extent", "dojo/domReady!"
], function(Map, InfoTemplate, WFSLayer, esriConfig, Extent) {map = new Map("map");esriConfig.defaults.io.proxyUrl = "http://localhost/Java/proxy.jsp";//设置代理var opts = {"url": "http://localhost:8090/geoserver/wfs_point/wfs","version": "1.1.0","name": "Points",//图层名称"wkid": 4326,//Supported WKIDs: 3857 | 4326 | 3785."maxFeatures": 1000};var layer = new WFSLayer();//经测试使用new WFSLayer(opts)失败layer.fromJson(opts);//只能用fromJsonmap.addLayer(layer);map.setExtent(new Extent(116.92277568843764,36.6065212736288,117.16265171209778,36.70398132446974,map.spatialReference));
});
</script>
<body><div id="map"></div>
</body>
</html>
几个需要注意的地方在下面的总结中!
总结
- WFSLayer requires using a proxy page.需要设置代理,否则在控制台会输出
esri.config.defaults.io.proxyUrl 尚未进行设置。如果向启用了 CORS 的服务器发出请求,请将域推送到 esri.config.defaults.io.corsEnabledServers。
关于如何设置代理可以参考:https://developers.arcgis.com/javascript/3/jshelp/ags_proxy.html ; - 在API文档里面是有直接通过
new WFSLayer(options)
创建图层的方法,但是经过测试后发现并不行,具体原因不明。而在官方给出的示例中也没有采用new WFSLayer(options)
,是采用的layer.fromJson(options)
; - 网络请求有些慢,关键是本身服务的数据量并不大,只有几十个点,不知道是不是和代理有关系;
- 关于一些参数可以通过
WFS Url + ?service=WFS&request=GetCapabilities
查看,如 https://data.wien.gv.at/daten/geo?service=WFS&request=GetCapabilities , 主要用到的是name
图层名称、wkid
坐标系id。 - API支持三种坐标系
3857 | 4326 | 3785
, 否则可能报错WFSLayer: could not project geometry.
参考链接
http://www.opengeospatial.org/standards/wfs
ArcGIS JS API加载GeoServer发布的WFS服务相关推荐
- Vue+OpenLayers学习系列(十一)使用axios加载GeoServer发布的WFS服务
一.问题 1.之前用下面官网的方法 source.addFeatures() 将查询的图层信息加载到 source 里面,但是不知道为啥,死活出不来,也不报错,就很奇怪. var source = n ...
- 使用ArcGIS JS API加载WMTS图层的两种方式
文章目录 前言 方式一 方式二 前言 某些项目可能多方参与,每一方使用的GIS平台有时会有所不同,这时为了统一各方地图服务,通常会发布OGC标准的WMTS地图服务供各方使用.ArcGIS API fo ...
- leaflet 加载 geoserver 发布的 wms 服务
1. 安装 geoserver 服务:略 2. 启动 geoserver: 3. 登录 geoserver 控制台:( 默认账号.密码为 admin.geoserver ) 4. 新建工作区: 5. ...
- Leaflet中加载Geoserver发布的WMS服务显示地图
场景 Openlayers下载与加载geoserver的wms服务显示地图: Openlayers下载与加载geoserver的wms服务显示地图_BADAO_LIUMANG_QIZHI的博客-CSD ...
- openlayers加载超图发布的wfs服务
首先要阅读wfs文档,跟当初cesium加载wmts一样. http://support.supermap.com.cn:8090/iserver/services/data-world/wfs100 ...
- cesium加载geoserver发布的mvt服务
cesium 本身并不支持矢量切片的加载,所以需要借助其他工具进行解析.在Canvas中把矢量瓦片绘制好了,以图片形式像WMTS一样向Cesium提供图片服务就行了,当然也可以采用中间件的形式在后台把 ...
- World Wind Java开发之十三——加载Geoserver发布的WMS服务(转)
这篇是转载的平常心博客,原地址见:http://www.v5cn.cn/?p=171 1.WMSTiledImageLayer类说明 一个WMSTiledImageLayer类对象只能对应一个WMS发 ...
- Vue中使用Openlayers加载Geoserver发布的TileWMS
场景 Openlayers下载与加载geoserver的wms服务显示地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114 ...
- 高德地图 sdk 加载 geoserver 发布的瓦片地图服务
前言 最近,碰到了需求,想要在高德 sdk 中使用在 geoserver 里面发布的瓦片地图. 还好经过一番研究,在其官方文档中发现,从新版本(v1.4.3开始)的高德 sdk 开始,已经支持加载第三 ...
最新文章
- 新版微信对付款码截屏做处理 防止被骗
- 二元查找树变双向链表
- PHP两种不同的快递运单号查询
- 条件随机场(CRF)相对于HMM,MEMM的优势
- 如何用AR升级星巴克体验?阿里工程师祭出了“三板斧”
- 1.2w 星!火爆 GitHub 的 Python 学习 100 天
- c# 指定打开某个路径下的CMD_【自学C#】|| 笔记 25 文件的操作
- python机器学习案例系列教程——K最近邻算法(KNN)、kd树
- FFmpeg之wav转mp3(二十四)
- 报表的查询条件只能在数据上方吗?
- eplan2.5安装教程
- matlab中的uicontrol,Matlab的uicontrol出错
- AI前言技术,一文带你深入了解语音识别的前世今生
- 2022数学建模国赛A题赛后总结
- android: Apostrophe not preceded by \ 错误
- 30款Linux 高性能网络开发库开源软件
- docker: error pulling image configuration
- 百度语音合成模型Deep Voice3
- Axure RP快捷键指令汇总
- 分享些常用的工具网站