日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

ArcGIS JS API加载GeoServer发布的WFS服务

發布時間:2025/3/21 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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服务的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。