MapServer动态图层、瓦片图层ArcGIS、Cesium中加载区分

文章介绍了如何使用ArcGIS和Cesium的API来加载动态图层和瓦片图层。动态图层通过MapImageLayerAPI在ArcGIS中加载,而瓦片图层则使用WebTileLayerAPI。在Cesium中,ArcGisMapServerImageryProvider用于加载动态图层或瓦片图层,而WebMapTileServiceImageryProvider专门用于加载瓦片图层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题来源:有个网友问如何调用arcgis的api将图层组的子图层全部显示出来。
在这里插入图片描述
这里呢,他选择arcgis,所以MapImageLayer类可以满足他的需要。
MapServer 既可用动态图层方式,也可用瓦片方式加载

如何判断区分动态图层和瓦片图层

甩个链接做下区分:
动态图层
瓦片图层

首先,瓦片又区分矢量瓦片与栅格瓦片,常见的MapServer 。MapServer 既可用动态图层方式,也可用瓦片方式加载。

动态图层通常使用 Dynamic Map Service(动态地图服务)来发布。Dynamic Map Service 提供了一个动态地图图层,它会在客户端请求时动态生成地图图像。这种服务可以让用户对地图进行交互操作,如缩放、平移和查询。动态地图服务通常使用基于矢量数据的渲染方式,因此可以提供更高精度的地图显示效果。
瓦片图层通常使用 Tiled Map Service(切片地图服务)来发布。Tiled Map Service 提供了一个预先生成的地图图像集合,这些图像按照一定的规则进行分割并存储为瓦片,客户端在请求时直接获取预先生成好的瓦片图像进行拼接,以形成完整的地图。由于瓦片图层是基于预先生成的图像进行显示,因此它的渲染速度相对较快,适合于大规模地图的显示。

1.1 发布服务选择

在 ArcMap 中发布服务时,选择“根据数据动态”表示选择发布成动态图层,选择“使用缓存中的切片”表示瓦片图层。
在这里插入图片描述

1.2 从图层服务判断

通过查看 MapServer 的服务类型,可以区分动态图层和瓦片图层。如果服务类型为 Dynamic Map Service,则该服务提供的是动态地图图层,如果服务类型为 Tiled Map Service,则该服务提供的是瓦片地图图层。

1、动态图层(矢量)
Single Fused Map Cache: false
在这里插入图片描述

2、瓦片图层
Single Fused Map Cache: true

在这里插入图片描述
以上内容参考

ArcGIS和Cesium中不同图层加载所使用的API

ArcGIS

ArcGIS 的动态图层和瓦片图层使用了不同的服务类型,因此在加载时需要使用不同的对象来进行加载。

1、使用MapImageLayer API加载矢量图层

在 REST API 页面中,sublayers 参数指定了要显示的子图层 ID 号动态图层。

const layer = new MapImageLayer({
 url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SampleWorldCities/MapServer",
  sublayers: [
    {
      id: 3,//对应自己发布的服务的图层id号
      visible: false//对可见性进行设置,非必要,可根据自己的目标效果选择
    },
    {
      id: 2,
      visible: true
    },
    {
      id: 1,
      visible: true
    },
    {
      id: 0,
      visible: true
    }
  ]
});
 map.add(layer);

MapImageLayer 类的强大,在于能够对sublayers属性进行设置
https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-MapImageLayer.html

2、使用WebTileLayerAPI加载瓦片图层

 var layer = new WebTileLayer({
    urlTemplate: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
  });

  map.add(layer);

Cesium

说明:Cesium原生接口仅支持,坐标系有3857、4326。但如 4490 或 4610 等经纬度图层也是可以显示的。注意瓦片不行,会报错。

1、加载矢量(动态)图层

如下图,在 Cesium 中发布的瓦片也当动态图层方式调用。需要有如下信息,Dynamic Layer
在这里插入图片描述

let imageryProvider =new Cesium.ArcGisMapServerImageryProvider({
  url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer',
  usePreCachedTilesIfAvailable: false,
   // layers: '0,2' // layer图层这里可以过滤图层的显示
  }),
  
var layer = viewer.scene.imageryLayers.addImageryProvider(layerProvider);

2、瓦片图层

// false 为动态图层
var layerProvider = new Cesium.ArcGisMapServerImageryProvider({
    usePreCachedTilesIfAvailable: true,
    url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer'
});

var layer = viewer.scene.imageryLayers.addImageryProvider(layerProvider);

或者可以通过使用 Cesium 的 WebMapTileServiceImageryProvider 对象来加载瓦片图层

var imageryProvider = new Cesium.WebMapTileServiceImageryProvider({
    url: 'https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/WMTS',
    layer: 'World_Imagery',
    style: 'default',
    format: 'image/jpeg',
    tileMatrixSetID: 'default028mm',
    maximumLevel: 19
});

viewer.imageryLayers.addImageryProvider(imageryProvider);

在 Cesium 中,发布的瓦片也当动态图层方式调用。需要有如下信息,Dynamic Layer

cesium调用MapServer图层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值