【回顾】上篇交代了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等。