【回顧】上篇交代了Map是各類圖層(無論是實際上的圖層仍是由圖層構成的對象)的容器,是數據的容器,並不做顯示(由視圖類繪製)。並重點講解了由圖層構成的複雜圖層——高程屬性ground和底圖屬性basemap。html
這一篇結合OGC標準,講一下可操做圖層的類型、生成。前端
注意:若是看不懂這篇,能夠先跳過,可是你不知道在JsAPI中用什麼圖層加載什麼數據的時候,這篇須要複習。本篇屬於字典類型的教程,方便之後查閱。數據庫
轉載註明出處,博客園/CSDN/B站/知乎:秋意正寒windows
真正的地理數據仍然在服務端,服務端怎麼可能把那麼龐大的數據傳給你?它根據前端的請求,在須要幾何形狀的時候傳幾何座標點過來,在須要屬性表的屬性時再傳字段和字段值過來。緩存
那如何鏈接服務器端的數據和前端瀏覽器呢?API用圖層(Layer)的概念,把你看到的東西和雲端服務器的數據鏈接在一塊兒了。服務器
在Esri家族的產品中,有一個產品叫ArcGIS Enterprise,裏面有個組件叫ArcGIS for Server,Server就是經過一個簡單的URL(統一資源定位符)連通服務器端和瀏覽器端,這個URL又被稱做REST URL。網絡
大多數圖層都遵循了OGC組織制定的規範。ide
OGC全稱開放地理信息系統聯盟。正是OGC制定的各類規範,使得GIS服務有序可循。url
第2節就簡單說幾個規範,第3節則將經常使用的可操做圖層對應的ArcGIS Server的服務對應起來。
【!】注意,本節若是看不懂能夠先跳過,之後會有大量的例子會用到。
網絡地圖服務,WebMapService。
以ArcGIS爲例,一個mxd,就很完整地對應了一個「地圖」,由於一個mxd就能夠製做一幅多圖層、多符號、帶標註的地圖。能夠簡單地理解,將mxd文檔總體發佈到ArcGIS Server上,這個服務是遵照了WMS規範的。
在ArcGIS Server上,這種服務叫MapService。
在其餘開源軟件(如QGIS)和開源地理服務器上(如GeoServer和MapServer),WMS有其餘的實現,ESRI只不過本身細化、拓展了WMS,成爲自家的地圖服務。
也就是說,WMS≠MapService。可是MapService能夠提供WMS服務——這就說明,一個mxd發佈的MapService能夠包含WMS服務,相似於WMS派生出了MapService。
【注】ESRI也提供了WMS的支持,在發佈MapServer和ImageServer時能夠啓用WMS。見3.1和Server幫助文檔。】
在本人的實踐中,GeoServer和ArcGIS Server這兩大主流地理服務器都支持WMS,WMS最終向前端發來請求返回的,是請求地理範圍內的一張圖片。
有關WMS還有更詳細的各路請求參數,如下WFS、WCS、WPS也是,有能力的朋友能夠到OGC官網找到相關標準自行閱讀,此處暫不展開。
網絡要素服務,WebFeatureService。
ESRI將其拓展爲FeatureService(即FeatureService≠WFS),可是也對原生的WFS提供了支持,見3.1。
FeatureService支持從文件發佈(CSV、Excel、Shapefile),也支持從地理數據庫發佈,還支持從mxd發佈(在發佈MapService時啓用FeatureService)。
與返回整張圖片的WMS不一樣,WFS返回的是帶有幾何和屬性信息的實際要素,客戶端(瀏覽器)能夠將這些要素與屬性用於任何類型的地理空間分析。
WFS 服務也支持過濾器,由此用戶能夠在數據上執行空間查詢和屬性查詢。
在ArcGIS Server發佈WFS時,ArcGIS Server會自動忽略柵格圖層。WFS僅支持企業地理數據庫發佈,或者從一個mxd發佈。
網絡表面服務,WebCoverageService。也叫網絡覆蓋服務,主要是柵格影像。ArcGIS Server上的MapService、ImageService和GeoDataService都可使用從屬它們的子一級WCS服務。
用mxd發佈MapService時啓用WCS(WCS只會識別柵格圖層,矢量圖層等其餘圖層會被忽略),固然也能夠單獨拿一幅柵格影像發佈ImageService時啓用WCS,也能夠在發佈GeoDataService時啓用WCS。
WCS 的數據源應爲下列任一數據形式:
【注】WCS中的C=Coverage,可是不等於ArcGIS早期版本的Coverage數據。
儘管WCS的數據源不少,可是都繞不開一個核心詞:Coverage,也即覆蓋數據,也即柵格數據,能夠是影像柵格,也能夠是普通含義上的柵格。
網絡瓦片(切片)地圖服務,WebMapTileService。
這個在發佈MapService和ImageService的緩存服務時,進行多級別切圖便可調用WMTS,無需開啓WMTS(由於切圖默認就是WMTS)。
有關如何在發佈MapService或ImageService時建立做緩存服務,請參考:點我
目前,JsAPI和OpenLayers支持ArcGIS Server的WMTS。
與WMS最大的區別就是WMTS能夠將地圖切成多個網格,在不一樣的比例尺下切出N套緩存小方片,把WMS返回的整張大圖切開,有利於網絡傳輸。
網絡處理服務,WebProcessService。
即在服務器端進行地理處理任務,結果再返回到客戶端。在ArcGIS Server中拓展爲GPService(即Geoprocess Service)。
一樣,在發佈GPService時能夠啓用WPS服務。可是此文講的是可操做圖層,這裏就不展開了,待到後期講GPService和Task時會展開。
目前,uDig、Openlayers均支持ArcGIS Server上的WPS。而JsAPI使用的是GPService自己。
注意!並非全部的圖層都用Server上的服務建立(如GraphicLayer、GeoJSONLayer、CSVLayer等),也並非全部的服務都是拿來建立圖層的(如後期學到的Task要用到NAService等)。
ps:Server上的服務不單單能夠在JsAPI調用,Runtime SDK開發的產品也能用。
須要說明的是,OGC各類標準的支持以下圖所示。
有關更詳細的ArcGIS Server發佈這些經常使用OGC服務的教程,請看ArcGIS Server在線幫助。
在3.x中(3.25),建立WMSLayer、ArcGISDynamicMapServiceLayer舉例:
// 3.25 jsAPI建立WMS圖層
var map = new Map('map', { basemap: 'streets', center: [-96, 37], zoom: 4 }); var wmsLayer = new WMSLayer('https://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer', { resourceInfo: resourceInfo, visibleLayers: ['1', '2'] }); map.addLayers([wmsLayer]);
以上爲WMSLayer,如下是ArcGISDynamicMapServiceLayer。
// 3.25 建立獨有的ArcGIS動態地圖服務圖層
var map = new Map("mapDiv", { sliderOrientation : "horizontal" }); var dynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer", { "opacity" : 0.5, "imageParameters" : imageParameters }); map.addLayer(dynamicMapServiceLayer);
在4.x中(4.8),建立MapImageLayer、PointCloudLayer舉例:
// jsAPI版本4.8 建立獨有的地圖圖像圖層
var layer = new MapImageLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer" }); map.add(layer);
以上爲MapImageLayer,如下是PointCloudLayer。
// jsAPI 4.8 利用場景服務建立獨有的點雲圖層
var layer = new PointCloudLayer({ url: "https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/BARNEGAT_BAY_LiDAR_UTM/SceneServer" }); map.add(layer);
注意,jsAPI的圖層類型有不少,除了MapImageLayer和PointCloudLayer這兩種圖層外,大多數圖層不只能夠用ArcGIS Server上的服務建立,也能夠用PortalID建立。
見Server的幫助文檔。Server上不只有數據類型的服務(上表),還有處理類型的服務,例如用於支持網絡分析的NAServer等。