ArcGIS API for JavaScript 入门教程[6] 再讲数据——Map类之可操作图层

【回顾】上篇交代了Map是各种图层(不管是实际上的图层还是由图层构成的对象)的容器,是数据的容器,并不作显示(由视图类绘制)。并重点讲解了由图层构成的复杂图层——高程属性ground和底图属性basemap。

这一篇结合OGC标准,讲一下剩下的——可操作图层的类型、生成。

转载注明出处,博客园/CSDN/B站/知乎:秋意正寒

目录:https://www.cnblogs.com/onsummer/p/9080204.html

1. 它不是真的

什么意思?不是真的?

对,真正的地理数据仍然在服务端,服务端怎么可能把那么庞大的数据传给你?它根据异步请求,在需要几何形状的时候传几何坐标点过来,在需要属性表的属性时再传字段和字段值过来。

所以这不是真的,毕竟一个Chrome一个火狐就够占内存的了,整那么大数据进一个网页里,体验极差!

那如何连接服务器端的数据和前端浏览器呢?

在Esri家族的产品中,有一个产品叫ArcGIS Enterprise,里面有个组件叫ArcGIS for Server,Server就是通过一个简单的URL连通服务器端和浏览器端,这个URL又被称作REST URL。

所有的可操作图层,包括后面会提到的GP服务,都遵循了OGC这个组织制定的规范,在此规范基础上拓展。

2. OGC与GIS服务解释

OGC全称开放地理信息系统联盟。我觉得没必要跟你解释什么是RESTAPI,也没必要跟你说服务器端和浏览器的协议是什么,内部如何交换数据。

但是你必须知道,不以规矩,不成方圆。

正是OGC制定的各种规范,使得GIS服务有序可循。第2节就简单说几个规范,第3节则将常用的可操作图层对应的ArcGIS Server的服务对应起来。

2.1 WMS

网络地图服务,WebMapService。

以ArcGIS为例,一个mxd,就很完整地对应了一个“地图”,因为一个mxd就可以制作一副多图层、多符号、带标注的地图(制图)。

可以简单地理解,将mxd文档整体发布到ArcGIS Server上,形成的服务是遵守了WMS规范的。

在ArcGIS Server上,这种服务叫MapServer。

在其他开源软件(如QGIS)和开源地理服务器上(如GeoServer和MapServer(此MapServer是地理服务器软件名不是上面提及的地图服务)),WMS有其他的实现,ESRI只不过自己细化、拓展了WMS,成为自家的地图服务。

也就是说,WMS≠MapServer。

但是MapServer可以提供WMS服务——这就说明,一个mxd发布的MapServer可以包含WMS服务,类似于WMS派生出了MapServer。

【注】ESRI也提供了WMS的支持,在发布MapServer和ImageServer时可以启用WMS。见3.1和Server帮助文档。

2.2 WFS

网络要素服务,WebFeatureService。

ESRI将其拓展为FeatureServer(即FeatureServer≠WFS),但是也对原生的WFS提供了支持,见3.1。

FeatureServer支持从文件发布(CSV、Excel、Shapefile),也支持从地理数据库发布,还支持从mxd发布(在发布MapServer时启用FeatureServer)。

与返回地图图像的WMS不同,WFS返回的是带有几何和属性信息的实际要素,客户端(浏览器)可以将这些要素与属性用于任何类型的地理空间分析。

WFS 服务也支持过滤器,由此用户可以在数据上执行空间查询和属性查询。

发布WFS时,ArcGIS Server会自动忽略栅格图层。WFS仅支持企业地理数据库发布,或者从一个mxd发布。

2.3 WCS

网络表面服务,WebCoverageService。也叫网络覆盖服务,主要是栅格影像。MapServer、ImageServer和GeoDataServer均可使用WCS服务。

也就是说,用mxd发布MapServer时启用WCS(WCS只会识别栅格图层,矢量图层等其他图层会被忽略),当然也可以直接拿一张栅格影像发布ImageServer时启用WCS,也可以在发布GeoDataServer时启用WCS。

WCS 的数据源应为下列任一数据形式:

  • 包含栅格图层或镶嵌图层的地图(mxd)
  • 栅格数据集或镶嵌数据集(在Geodatabase中)
  • 引用栅格数据集或镶嵌数据集的图层文件(.lyr)
  • 包含栅格数据的地理数据库(10.1及以上的Server不支持mdb)

【注】WCS中的C=Coverage,但是不等于ArcGIS早期版本的Coverage数据。

2.4 WMTS

网络瓦片(切片)地图服务,WebMapTileService。

这个在发布MapServer和ImageServer的缓存服务时,进行多级别切图即可调用WMTS,无需开启WMTS(因为切图默认就是WMTS)。

有关如何在发布MapServer或ImageServer时创建作缓存服务,请参考:点我

目前,JsAPI和OpenLayers支持ArcGIS Server的WMTS。

2.5 WPS

网络处理服务,WebProcessService。

即在服务器端进行地理处理任务,结果再返回到客户端。在ArcGIS Server中拓展为GPServer(即Geoprocess Server)。

同样,在发布GPServer时可以启用WPS服务。但是此文讲的是可操作图层,这里就不展开了,待到后期讲GPServer和Task时会展开。

目前,uDig、Openlayers均支持ArcGIS Server上的WPS。而JsAPI使用的是GPServer本身。

3. 图层与Server服务对应表

有了这个表格,用什么Server创建什么图层,就有了参照。

注意!并不是所有的图层都用Server上的服务创建(如GraphicLayer),也并不是所有的服务都是拿来创建图层的(如后期学到的Task)。

而且且,Server上的服务不止JsAPI能用,RuntimeSDK开发的产品也能用。

3.1 JsAPI 3.X & 4.X图层对比

需要说明的是,OGC各种标准的支持如下图所示。

有关更详细的ArcGIS Server发布这些常用OGC服务的教程,请看ArcGIS Server在线帮助。

3.2 举例说明

在3.x中(3.25),创建WMSLayer、ArcGISDynamicMapServiceLayer举例:

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,以下是ArcGISDynamicMapServiceLayr。

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举例:

var layer = new MapImageLayer({
    url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer"
});

map.add(layer);

以上为MapImageLayer,以下是PointCloudLayer。

var layer = new PointCloudLayer({
  url: "https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/BARNEGAT_BAY_LiDAR_UTM/SceneServer"
});

map.add(layer);

注意,包括但不局限于MapImageLayer和PointCloudLayer这两种图层不仅可以用服务创建,也可以用PortalID创建。

3.3 Server上其他服务有什么用

见Server的帮助文档。Server上不仅有数据类型的服务(上表),还有处理类型的服务,例如用于支持网络分析的NAServer等。

猜你喜欢

转载自www.cnblogs.com/onsummer/p/9484900.html