三、Arcgis api js -- 图形管理 Layer

在这里插入图片描述
:graphic、graphiclayer、map、view、各种layer
– feature
– featurelayer

1、区别

1、GraphicsLayer与featurelayer区别

1)官方

    • GraphicsLayer包含一个或多个Graphic
    • 与FeatureLayer和MapImageLayer不同,GraphicsLayer没有架构。
    • 通常,在处理图形时,最好使用其源属性构造FeatureLayer,
      因为FeatureLayer比GraphicsLayer具有更多的功能,包括呈现,查询和标记。
      如果后续需要渲染、查询和标记,那么GraphicsLayer不支持这些功能,建议使用featurellayer,因为是客户端处理,所以featurellayer也支持客户端创建。

2)self小结
GraphicsLayer更简单,不如featurelayer具有完善的关联关系
GraphicsLayer用于承载绘制要素(点线面)
featurelayer用于承载发布的服务的要素,【也可以承载Graphic:见官网中featurelayer的source属性,就是用来加载Graphic的】

2、graphic*

1、new Graphic() new GraphicLayer()

2、增删改查

2.1、添加 add、push
graphiclayer.add(graphic)
graphiclayer.addMany([graphicD, graphicE]);
graphiclayer.graphics.add(graphic); // Add graphic to graphics collection
graphiclayer.graphics.push(graphic1, graphic2);
map.add(graphiclayer)
map.addMany([fl, gl]) // Add layers using add()
map.layers.add(layer)
map.layers.addMany([fl, gl]) // Add layers using layers collection
map.layers.push(fl, gl) // Add layers using layers collection’s push method
view.graphics.add(pointGraphic); // Adds a graphic to the View

2.2、移除
graphiclayer.remove(graphic) // Removes a graphic from the layer.
graphiclayer.removeAll(); // Clears all the graphics from the layer.
view.graphics.remove(pointGraphic); //
view.graphics.removeAll()
map.layers.remove(layer)

2.3、查询 【map.】
var foundLayer = map.allLayers.find(function(layer) {
return layer.title === “US Counties”;
});

// Create a filtered collection of the non-group layers
var nonGroupLayers = map.allLayers.filter(function(layer) {
return !foundLayer.layers;
});

3、显隐

核心都是根据Layer的属性visible来设置true或者false来控制的。

4、包含各种监听事件:

after-add、after-changes、after-remove、before-remove…

3、featurelayer

1、用途、功能
1)可以用来加载发布的服务
2)可以加在geojson数据,创建featurelayer
3)可以用source属性,来加载Graphic
http://community.rzfk-tech.com:8081/arcgis_js_api/sdk/latest/api-reference/esri-layers-FeatureLayer.html#source
:仅仅适用于从客户端创建featurelayer时使用
4)具有查询、分析、渲染等功能

2、语法
参考官网
注意:必须包含的字段,缺少会报错
示例:
var ajfeaturelayer = new FeatureLayer({
source: features,
fields: fields,
objectIdField: “ObjectID”, // field name of the Object IDs
geometryType: “point”,
popupTemplate:new PopupTemplate({
title: “Uploaded Shapefile”,
content: “{*}”
})
});
map.add(ajfeaturelayer);

3、弹窗

    • 注意声明弹窗时的语法 与Graphic的差异
    • 可自定义窗口

4、feature
1、功能简介
1)官网
feature小部件(widget)能够根据其PopupTemplate弹窗模板,展示graphic图形。
feature小部件(widget)在您希望【显示有关功能的信息但不使用弹出窗口的情况下】非常有用。

2)self
是个部件,一直在视图中显示(类似放大缩小按钮),能够展示graphic图形等的信息

2、示例
let graphic = new Graphic({
geometry: view.center,
popupTemplate: {
content: [{
// add popupTemplate content
}]
}
});

let feature = new Feature({
graphic: graphic,
map: map,
spatialReference: spatialReference
});

view.ui.add(feature, “top-right”);

4、layer

1、官网:各layer对应API - 4.22

1)BaseDynamicLayer 可以【扩展此类】,以创建【动态地图图层】
2)BaseElevationLayer 可以【扩展此类】,以创建【自定义高程图层】
3)★★ BaseTileLayer 可以【扩展此类】,以创建【自定义 TileLayer】
4)BingMapsLayer 支持Microsoft的Bing的Tiled地图
5)BuildingSceneLayer 用于在SceneView中可视化具有详细内部装饰的建筑物
6)CSVLayer 基于CSV文件(.csv,.txt)的点图层。CSV是一种纯文本文件格式,用于表示表格数据,包括地理位置特征(纬度,经度)
7)ElevationLayer 是一个切片图层,用于在SceneViews中渲染高程
8)★★ FeatureLayer 由Map Service 或 Feature Service 创建的单个图层,可以是空间(has geographic features)/非空间数据(table)
9)GeoJSONLayer 用于基于GeoJSON创建图层
10)GeoRSSLayer 用于基于GeoRSS创建图层
11)GraphicsLayer 用于承载Graphics
12)GroupLayer 图层组,使用add方法,将多个layer组成一个GroupLayer
13)★★ ImageryLayer 将影像资源服务(image service resource)表示为一个layer,ImageryLayer检索并显示影像服务中的数据。
var wenquanLayer1 = new ImageryLayer({
id: “wenquanlayer1”,
url: “http://47.104.218.148:6080/arcgis/rest/services/20211208ASW01/ImageServer”,
format: “jpgpng”,
visible: true
});
14)★★ ImageryTileLayer 将一个瓦片影像服务表示为栅格数据。在客户端投影,处理和渲染二进制光栅图块。
var layer = new ImageryTileLayer({
url: “https://sampleserver6.arcgisonline.com/arcgis/rest/services/Toronto/ImageServer”
});
15)IntegratedMeshLayer 在难以访问的基础结构和自然景观的SceneView中,可视化准确的表示形式。【优化三维可视化】
16)KMLLayer 用于基于KML文件(.kml,.kmz)创建图层。KML是用于表示地理特征的基于XML的文件格式。
17)★★★★Layer Map的基本组成部分,分为栅格图像和矢量图形。具体分类,见下面的表格
18)★★ MapImageLayer 显示和分析来自map service中定义的子图层的数据,并导出图像而不是要素
Mapserviceimages是根据请求在【服务器上动态生成】的。
示例:
var layer = new MapImageLayer({
url: “https:///arcgis/rest/services//MapServer”
});

与FeatureLayer不同,MapImageLayer由【服务器处理】而非客户端处理。
在某些情况下,将处理任务卸载到服务器可以使MapImageLayer以【更高的性能】呈现更多功能。

19)MapNotesLayer 给地图添加注释;
用于在WebMap或PortalItem中基于地图注释创建图层;
地图注释是网络地图的一部分,通常是使用【ArcGIS Online MapViewer】创建
20)OGCFeatureLayer
向Map添加新的OGCFeatureLayer;
基于,来自OGC API Features服务中的各个集合,创建一个图层
21)OpenStreetMapLayer 从OpenStreetMap中使用basemaps
22)PointCloudLayer 在SceneView中可视化点云数据
23)SceneLayer 是一个layer,用于在SceneView中,按需流式的显示大量数据(点云或三维)
24)StreamLayer
是一个layer,可以连接到流服务或自定义WebSocket服务,实时显示与一组跟踪的对象关联的观察流。观察结果可以包括位置,属性或两者的更改。流图层可以包含点,折线或面要素。
streamLayer = new StreamLayer({
url: “https://geoeventsample1.esri.com:6443/arcgis/rest/services/LABus/StreamServer”,
purgeOptions: {
displayCount: 10000
},
24)★★ TileLayer 瓦片图层,
可以使用ArcGIS Server REST API中公开的缓存map service,并将其作为瓦片图层添加到地图中。性能:可以从缓存中访问切片,而不是动态渲染图像。所以切片图层的渲染速度比
MapImageLayers快

    • 注意:这里的缓存中访问切片和动态渲染图像,是在发布时,在服务器编辑窗口中进行选择设置的。★★★★
      var layer = new TileLayer({
      url: “https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer”
      });
      25)UnknownLayer 表示无法确定类型的图层。
      例如,当从URL加载无法确定类型的图层时,则将其表示为此类的实例。
      加载WebMap或WebScene时,也可以使用此类的实例。
      26)UnsupportedLayer 表示不受支持的图层实例。
      例如,当加载WebMap或WebScene时,当前版本的API中可能不支持给定WebMap或WebScene中的某些图层类型。
      每个不受支持的图层都将由此类的一个实例表示,以便在为将来的客户端保存WebMap或WebScene之后可以将其保留下来。
      27)VectorTileLayer 访问缓存数据的切片并以矢量格式呈现。
      在缓存方面,它类似于 WebTileLayer 。但是,WebTileLayer呈现为一系列图像,而不是矢量数据。
      28)★★ WCSLayer WCS提供来自OGC Web Coverage Service的栅格数据。
      栅格数据在客户端投影和渲染。
      var layer = new WCSLayer({
      url: “https://sampleserver6.arcgisonline.com/arcgis/services/ScientificData/SeaTemperature/ImageServer/WCSServer”
      });
      29)★★ WebTileLayer 可以将非ArcGIS Server地图切片作为图层添加到地图。
      构造函数的URL通常如下模板:http://some.domain.com/{level}/{col}/{row}/,其中level对应于缩放级别,col和row代表切片的列和行
      30)★★ WMSLayer 基于OGC Web Map Services(WMS)创建图层
      var layer = new WMSLayer({
      url: // url to the service,
      sublayers: [{
      name: // name of the sublayer,
      legendUrl: // url to the legend
      }]
      });
      31)★★ WMTSLayer 基于OGC Web Map Services(WMTS)创建图层
      WMTSLayer = new WMTSLayer({
      url: “https://gibs.earthdata.nasa.gov/wmts/epsg4326/best”, // url to the service
      activeLayer: {
      id: “SRTM_Color_Index”,
      }
      });

2、官网API:Layer

用于查询、可视化、分析数据的层

图层类型 数据源 数据类型 特征 限制
1)FeatureLayer – ArcGIS FeatureServer/MapServer、ArcGIS 门户项目或客户端图形 --下载为矢量图形的点、折线、多边形
– 客户端处理、弹出模板、带有 2D 和 3D 符号的渲染器、查询、编辑(在未来版本中)
– 显示的功能数量有限;根据功能的数量,可能需要大量下载
2)GraphicsLayer – 客户端图形 – 点、折线、多边形显示为矢量图形
– 没有几何模式。点、折线和多边形可以存储在单个图层中。
– 没有渲染器或弹出模板;可视化和弹出模板是在逐个图形的基础上处理的。
3)MapImageLayer – ArcGIS MapServer,ArcGIS 门户项目 – 在单个图像中导出的点、折线、多边形、栅格
– 可能包含嵌套的子层。渲染器、弹出模板、不透明度和标签的服务器端处理,用于快速显示许多功能。可用于显示、查询和连接已注册工作区中的数据
– 不支持编辑
4)SceneLayer – ArcGIS SceneServer,ArcGIS 门户项目 – 点和多面体几何 – 可以在客户端显示大量功能。非常适合渲染 3D 特征 – 无 2D 支持;没有编辑
5)CSVLayer – CSV 文件 – 下载为矢量图形的点 – 客户端处理、弹出模板、带有 2D 和 3D 符号的渲染器 – 根据功能的数量,可能需要大量下载
6)KMLLayer – KML 文件(.kml、.kmz)、ArcGIS门户项目 – 点、折线、多边形显示为矢量图形 – 在地图或网络地图中显示 KML 文件
– 无 3D 支持;需要从ArcGIS.com或 ArcGIS Enterprise访问实用程序服务
7)StreamLayer – ArcGIS StreamServer – 下载为矢量图形的点 – 实时下载和更新功能位置 – 不适用
8)ImageryLayer – ArcGIS ImageServer,ArcGIS 门户项目 – 栅格数据导出为单个影像 – 客户端和服务器端像素过滤和渲染;弹出模板;查询 – 不适用
9)ImageryTileLayer – ArcGIS ImageServer,ArcGIS 门户项目 – 栅格数据导出为单个影像 – 客户端和服务器端渲染;弹出模板 – 不适用
10)GeoJSONLayer – GeoJSON – 点、折线、多边形 – 渲染器、标签、编辑、弹出窗口 –
数据必须符合 RFC 7946 规范,该规范指出坐标在 SpatialReference WGS84 中
11)OGCFeatureLayer – OGC API - Features – 点、折线、多边形 – 渲染器、标签、弹出窗口
数据必须符合 RFC 7946 规范,该规范指出坐标在 SpatialReference WGS84 中
12)GeoRSSLayer – GeoRSS提要 – 点、折线、多边形 – 无几何模式;弹出模板 – 无 3D 支持;不支持渲染器
13)MapNotesLayer – ArcGIS WebMap、ArcGIS 门户项目 – 点、折线、多边形、文本 – 网络地图中的地图注释 – 无 3D 支持;只读
14)WCSLayer – WCS服务 – 栅格数据导出为单个图像 – OGC规范 – 不适用
15)WFSLayer – WFS 服务,ArcGIS 门户项目 – 点、多点、线、多边形 – OGC规范 – 数据必须是GeoJSON格式,仅支持2.0.0版本
16)WMSLayer – WMS 服务,ArcGIS 门户项目 – 数据导出为单个图像 – OGC规范 – 不适用
17)BaseDynamicLayer – ArcGIS MapServer、WMS 服务 – 数据导出为单个图像 – 此类可以扩展以创建动态地图图层 –
无 3D 支持;导出的图像无法在浏览器中缓存
18)BuildingSceneLayer – ArcGIS SceneServer,ArcGIS 门户项目 – 数据组织在包含 BuildingComponentSublayers 的 BuildingGroupSublayers 中 – 可视化复杂的建筑物数字模型并与其组件交互 – 不支持 2D

用于提供地理环境的图层
图层类型 数据源 数据类型 特征 限制
TileLayer – ArcGIS MapServer,ArcGIS 门户项目 – Image tiles – 大型数据集的更好性能;查询特征 – 无需编辑、客户端渲染或弹出模板;3D 视图中的一些模式限制。
BaseTileLayer – ArcGIS MapServer,ArcGIS 门户项目 – Image tiles – 此类可以扩展以创建自定义切片图层 – 无需编辑、客户端渲染或弹出模板;3D 视图中的一些模式限制。
VectorTileLayer – ArcGIS门户项目 – 渲染为矢量切片的点、折线和多边形 – 要素可以在客户端设置样式并用作平铺底图 没有编辑、客户端渲染或弹出模板。
IntegratedMeshLayer – ArcGIS SceneServer,ArcGIS 门户项目 – 与图像集成的点云网格 – 显示具有高度细节的 3D 对象 – 不支持 2D
ElevationLayer – ArcGIS ImageServer,ArcGIS 门户项目 – 平铺高程网格/表面 – 在 3D 视图中渲染高程表面 – 不支持 2D
BaseElevationLayer – ArcGIS ImageServer,ArcGIS 门户项目 – 平铺高程网格/表面 – 此类可以扩展以创建自定义高程图层 – 不支持 2D
PointCloudLayer – ArcGIS SceneServer,ArcGIS 门户项目 – 点云(例如从 LiDAR 收集) 渲染器;点云的快速显示 – 不支持2D
OpenStreetMapLayer – OpenStreetMap 瓦片服务 – Image tiles – 显示 OpenStreetMap tiled content – 不适用
WMTSLayer – WMTS 切片服务,ArcGIS 门户项目 – Image tiles – OGC规范 – 不适用
WebTileLayer – 非 ArcGIS、非 OGC 和非 OSM 切片服务 – Image tiles – 不适用 – 没有编辑、客户端渲染或弹出模板。
BingMapsLayer – Bing空间数据服务数据 – Image tiles – 显示Microsoft 的 Bing tiled content – 必应地图键是必需的;三种地图样式支持:road,aerial,和hybrid

其他层
图层类型 数据源 数据类型 特征 限制
GroupLayer 其他图层类型的任意组合 不适用 将两层或多层合并为一层 不适用

3、参考博客
Arcgis api for JavaScript 4.12解读-----layer
https://blog.csdn.net/refreeom/article/details/95056303

    • 截图中的总结来自官网API:Layer

1)用于查询、分析、可视化的图层
FeatureLayer 继承自layer类,可以创建单个图层,包含属性信息,可以查询、分析、和呈现可视化数据
GraphicsLayer 继承自layer类,包含一个或多个客户端图形,不能有关联的渲染器,
MapImageLayer 继承自layer类。允许显示和分析子图层,导出图像。由服务器处理,不是客户端
SceneLayer 继承自layer类,支持点和3D对象
CSVLayer 继承自layer类,基于CSV文件(.csv,.txt)的点图层,纯文本文件格式,用于表示表格数据(地理要素【经纬度】,纬度是Y值,经度坐标是X值)
KMLLayer 基于KML文件(.kml,.kmz)创建图层。KML是一种基于XML的文件格式,用于表示地理要素;但是不支持SceneView,MapImage当仅支持MapView类的空间参考是WGS84(:4326 WKID)
StreamLayer 继承自FeatureLayer,流层扩展了要素图层,以添加使用HTML5 WebSockets连接到数据流的功能
ImageryLayer 继承自layer类,将影像服务资源表示为图层,可以检索,允许过滤
GeoJSONLayer 继承自layer类,创建geojson图层,geojson数据必须符合RFC 7964规范;但是一个layer只接受一种几何类型,一个属性,不支持GeometryCollection。不支持将Object用作GeoJSON功能的属性值
GeoRSSLayer 继承自layer类,用于创建基于GeoRSS的层;GeoRSSLayer使用ArcGIS.com提供的实用程序服务。只支持MapView
MapNotesLayer 继承自layer类。用于在WebMap或PortalItem中基于Map Notes创建图层。地图注释是Web地图的一部分。是WebMap或PortalItem的只读类
WMSLayer 用于基于OGC Web地图服务(WMS)创建图层
BaseDynamicLayer 继承自layer类 动态地图图层,无法在浏览器中缓存;不支持3D中的自定义动态图层
BuildingSceneLayer 继承自layer类,用于SceneView中可视化具有详细内部的建筑物,加载BIM相关。
其子类为BuildingComponentSublayer; BuildingComponentSublayers包含3D对象功能,表示建筑组件,如门,管道或AC单元。该图层是BuildingSceneLayer 中的子图层,可以直接BuildingGroupSublayer的一部分
BuildingGroupSublayer继承自BuildingSceneLayer ,作为子层的图层组

2)用于提供地理背景的图层
TileLayer 访问的是缓存,渲染速度比MapImageLayer快
BaseTileLayer 继承自layer类,自定义切片图层,图块层由图像组成,如卫星图像。将图块作为map进行加载
VectorTileLayer 访问缓存的数据并以矢量格式呈现它
IntegratedMeshLayer 继承自layer类,用于在基础设施的SceneView和难以访问的自然景观中可视化准确的表示,集成网格数据通常由自动化过程捕获,用于从大量重叠图像构建3D对象。结果使用三角形交错结构将原始输入图像信息整合为纹理网格
ElevationLayer 继承自layer类,用于在SceneView中渲染高程的切片图层
BaseElevationLayer 自定义高程图层, 继承自layer类,在SceneView中渲染高程的切片图层
PointCloudLayer 设计用于可视化SceneView中的大量点集,点云数据是经过处理的空间组织激光雷达数据,由大量3D点组成
OpenStreetMapLayer 继承自WebTileLayer,允许底图从OpenStreetMap中加载
WMTSLayer 用于基于OGC Web地图服务(WMTS)创建图层
WebTileLayer 非Arcgis 地图的加载方式
BingMapsLayer 继承自BaseTileLayer 类,

4、self ★
BaseTileLayer、FeatureLayer、ImageryLayer、ImageryTileLayer、MapImageLayer、TileLayer、WCSLayer、WebTileLayer、WMSLayer、WMTSLayer
1)ImageryLayer:加载影像服务图层(也开进行渲染)
2)ImageryTileLayer:一般不用
官网:ImageryTileLayer 呈现来自切片影像服务的栅格数据。二进制光栅切片在客户端进行投影、处理和渲染。
Self:

    • 影像服务的栅格数据,对数据进行渲染(阴影、浮雕、属性数据值拉伸、将两个图层混合渲染不同效果等);

    • 3)MapImageLayer:加载地图服务中的动态地图服务图层
      4)TileLayer:加载arcgis官方的影像切片服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此人很懒,什么都木写

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值