文章目录

  • 前言
  • 主要代码
  • 总结
  • 参考链接

前言

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>

几个需要注意的地方在下面的总结中!

总结

  1. 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 ;
  2. 在API文档里面是有直接通过 new WFSLayer(options) 创建图层的方法,但是经过测试后发现并不行,具体原因不明。而在官方给出的示例中也没有采用new WFSLayer(options),是采用的layer.fromJson(options);
  3. 网络请求有些慢,关键是本身服务的数据量并不大,只有几十个点,不知道是不是和代理有关系;
  4. 关于一些参数可以通过 WFS Url + ?service=WFS&request=GetCapabilities 查看,如 https://data.wien.gv.at/daten/geo?service=WFS&request=GetCapabilities , 主要用到的是name图层名称、wkid坐标系id。
  5. API支持三种坐标系3857 | 4326 | 3785 , 否则可能报错 WFSLayer: could not project geometry.

参考链接

http://www.opengeospatial.org/standards/wfs

ArcGIS JS API加载GeoServer发布的WFS服务相关推荐

  1. Vue+OpenLayers学习系列(十一)使用axios加载GeoServer发布的WFS服务

    一.问题 1.之前用下面官网的方法 source.addFeatures() 将查询的图层信息加载到 source 里面,但是不知道为啥,死活出不来,也不报错,就很奇怪. var source = n ...

  2. 使用ArcGIS JS API加载WMTS图层的两种方式

    文章目录 前言 方式一 方式二 前言 某些项目可能多方参与,每一方使用的GIS平台有时会有所不同,这时为了统一各方地图服务,通常会发布OGC标准的WMTS地图服务供各方使用.ArcGIS API fo ...

  3. leaflet 加载 geoserver 发布的 wms 服务

    1. 安装 geoserver 服务:略 2. 启动 geoserver: 3. 登录 geoserver 控制台:( 默认账号.密码为 admin.geoserver ) 4. 新建工作区: 5. ...

  4. Leaflet中加载Geoserver发布的WMS服务显示地图

    场景 Openlayers下载与加载geoserver的wms服务显示地图: Openlayers下载与加载geoserver的wms服务显示地图_BADAO_LIUMANG_QIZHI的博客-CSD ...

  5. openlayers加载超图发布的wfs服务

    首先要阅读wfs文档,跟当初cesium加载wmts一样. http://support.supermap.com.cn:8090/iserver/services/data-world/wfs100 ...

  6. cesium加载geoserver发布的mvt服务

    cesium 本身并不支持矢量切片的加载,所以需要借助其他工具进行解析.在Canvas中把矢量瓦片绘制好了,以图片形式像WMTS一样向Cesium提供图片服务就行了,当然也可以采用中间件的形式在后台把 ...

  7. World Wind Java开发之十三——加载Geoserver发布的WMS服务(转)

    这篇是转载的平常心博客,原地址见:http://www.v5cn.cn/?p=171 1.WMSTiledImageLayer类说明 一个WMSTiledImageLayer类对象只能对应一个WMS发 ...

  8. Vue中使用Openlayers加载Geoserver发布的TileWMS

    场景 Openlayers下载与加载geoserver的wms服务显示地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114 ...

  9. 高德地图 sdk 加载 geoserver 发布的瓦片地图服务

    前言 最近,碰到了需求,想要在高德 sdk 中使用在 geoserver 里面发布的瓦片地图. 还好经过一番研究,在其官方文档中发现,从新版本(v1.4.3开始)的高德 sdk 开始,已经支持加载第三 ...

最新文章

  1. 新版微信对付款码截屏做处理 防止被骗
  2. 二元查找树变双向链表
  3. PHP两种不同的快递运单号查询
  4. 条件随机场(CRF)相对于HMM,MEMM的优势
  5. 如何用AR升级星巴克体验?阿里工程师祭出了“三板斧”
  6. 1.2w 星!火爆 GitHub 的 Python 学习 100 天
  7. c# 指定打开某个路径下的CMD_【自学C#】|| 笔记 25 文件的操作
  8. python机器学习案例系列教程——K最近邻算法(KNN)、kd树
  9. FFmpeg之wav转mp3(二十四)
  10. 报表的查询条件只能在数据上方吗?
  11. eplan2.5安装教程
  12. matlab中的uicontrol,Matlab的uicontrol出错
  13. AI前言技术,一文带你深入了解语音识别的前世今生
  14. 2022数学建模国赛A题赛后总结
  15. android: Apostrophe not preceded by \ 错误
  16. 30款Linux 高性能网络开发库开源软件
  17. docker: error pulling image configuration
  18. 百度语音合成模型Deep Voice3
  19. Axure RP快捷键指令汇总
  20. 分享些常用的工具网站

热门文章

  1. 斯坦福大学深度学习与自然语言处理第二讲:词向量
  2. SQLite数据库存储
  3. Markdown 语法说明 (简体中文版)
  4. 20_集合_第20天(Map、可变参数、Collections)
  5. ISP采用的 ISIS链接状态路由协议
  6. CSS选择器分类与优先级
  7. SVN不是配置管理系统
  8. 【转载】数据库范式那些事
  9. @import和@class的区别
  10. matlab强制数据类型转换