前言
滴滴滴!!!🤓🤓🤓在本系列中,博主将详细撰写WebGIS中各大主流平台发布地图服务(WMS,WTMS等)的详细图文教程。今天,我们首先演示如何使用 ArcMap 和 ArcGIS Server发布一个台湾地图影像的 WTMS 切片服务,并在Leaflet中调用显示🎉🎉🌟;
一、介绍
本文主要内容如下:
- 如何使用ArcGIS Desktop和ArcGIS Server发布一个台湾地区的地图影像WMTS切片服务。
- 在ArcMap中创建地图文档,添加地图影像数据,以及发布WMTS地图服务的全过程。
- 发布地图服务时使用缓存切片和动态绘制的区别,以及如何根据数据量、更新频率、应用场景和服务器资源情况选择。
- 如何在Leaflet中通过内网IP调用已发布的WMTS地图服务,并显示在地图上。
二、内容
1. 准备工作
首先,我们需要准备好以下资源:
- ArcGIS Desktop 10.4 (包含 ArcMap)
- ArcGIS Server 10.4
- 湾湾的地图影像数据(TIF格式)
- Leaflet 库
2. 创建地图文档
开启 ArcMap,创建一个新的地图文档。在地图文档中点击添加数据添加地图影像,并打开属性查看其地图投影和地理参考等参数;这里我们使用的是TW地图影像数据,如下图所示:
然后我们点击保存,将地图文档重命名为taiwan.mxd.
3. 创建WMS地图服务
在 ArcMap 中,右键单击地图文档,选择“分享为” > “服务”,如下图所示:
现在我们选择arcgis server服务器连接或者配置arcgis server服务器连接,并点击下一页:
在“分享为服务”窗口中,选择发布服务器,然后单击“继续”。接下来,选择“WTMS”作为服务类型,并勾选“使用 ArcGIS Server 缓存”选项,如下图所示:
4.配置WMS地图服务
在“服务编辑器”窗口中,填写服务名称、数据源、描述等信息。在“缓存”选项卡中,配置缓存参数,如缓存格式、瓦片大小、缩放级别等。完成配置后,单击“分享”按钮发布服务。
这里我们根据我们要发布的服务需求进行发布,这里我选择发布WMS服务;
然后配置缓存,这里可以设定我们地图瓦片切分的层级区间,这里绘制地图服务的选择有二,我们判断依据如下:
①数据量大小
- 如果数据量很大,动态绘制会消耗大量服务器资源,此时使用预先缓存的切片能提高响应速度和并发能力。
- 如果数据量较小,动态绘制的开销也不大,可以考虑不缓存切片。
②数据更新频率
- 如果底层数据经常更新,使用缓存切片就需要经常重新生成缓存,维护成本高。这种情况下可以考虑动态绘制。
- 如果数据较为静态,使用缓存切片可以提高性能,并减轻服务器负载。
③客户端应用场景
- 如果客户端应用是web应用,需要快速加载切片,建议使用缓存切片。
- 如果客户端应用是桌面GIS等,加载速度的要求低一些,可以使用动态绘制。
④服务器资源情况
- 如果服务器资源充足,可以考虑动态绘制获得较好的数据实时性。
- 如果服务器资源紧张,建议使用缓存切片减轻负载。
综上所述,我们当前业务地图不常更新,且是Web端应用,因此我们选择使用缓存中的切片;
如果要进行
WebGIS项目开发
,这里推荐使用根据数据动态绘制
,不然在项目中加载不出来;
进程部分默认选择即可;
项目描述根据自己的应用项目进行填写,我这里是基于ArcGIS Server发布 WMS 服务,如下:
5.发布地图服务
发布服务前点击分析,看看地图服务有没有什么错误,有的话就需要改正:
选择不同的问题,鼠标右击,进行修改:
感觉没有问题后再次点击分析,可以过滤掉解决后的问题,然后我们就可以预览发布了:
在预览中,我们可以看到地图服务已经成功发布,此时我们便可以点击发布按钮,进行发布了!!
发布完毕后,我们可以在服务列表中看到它,右击该服务,然后选择查看其服务属性:
选择地图,此时我们复制这个地图URL,并用浏览器打开,可以看到,内部是存在切片数据的:
由此,我们便基于ArcGIS Server 完成了WMS地图服务发布;
4. 在 Leaflet 中 使用 ArcGIS Server 发布的 WMS 服务
发布成功后,我们可以在 Leaflet 中使用该 WMS 服务。有三种使用该服务的情况:
- 发布服务器和开发服务器在同一设备:即ArcGIS Server服务器和Leaflet WebGIS应用服务器在同一台设备上,直接使用本地IP即可;
- 开发服务器和发布服务器在同一内网下:需要使用ArcGIS Server服务器在内网中的IP;
- 发布服务器是远程服务器:如果ArcGIS Server服务器是远程服务器,WebGIS开发服务器想要访问到它就需要ArcGIS服务器具有公网IP或者做内网穿透;
内网IP查看
当前博主是状态2,因此我需要查看ArcGIS Server发布服务器的内网IP,在ArcGIS Server发布服务器的命令行中输入:
ipconfig
回车,可以得到IP信息,这里我们便可以看到内网中的地址,然后我们就可以在开发服务器上调用我们发布的WMS服务:
每台设备内网IP的内容都不一样,需要按照以上步骤单独查看;
基于Leaflet 对 ArcGIS WMS服务调用
在 HTML 文件中,引入 Leaflet 库和 CSS 文件,然后使用 L.tileLayer.wtms() 方法添加 WMS 服务层。完整代码如下:
<!DOCTYPE html>
<html>
<head><title>Leaflet ArcGIS Example</title><link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /><script src="https://unpkg.com/leaflet/dist/leaflet.js"></script><script src="https://unpkg.com/esri-leaflet/dist/esri-leaflet.js"></script><style>#map {width: 100%;height: 100vh;}</style>
</head>
<body><div id="map"></div><script>var map = L.map('map').setView([23.5, 121], 12);L.esri.basemapLayer('Streets').addTo(map);L.esri.dynamicMapLayer({url: 'https://192.168.123.118:6443/arcgis/rest/services/taiwan/MapServer', // 使用发布服务器的局域网IPopacity: 0.7}).addTo(map);</script>
</body>
</html>
效果如下:
三、总结
本文介绍了如何使用 ArcGIS Server 发布一个台湾地图影像的 WMS 影像服务,并在 Leaflet 中调用该服务图层。
文章参考
- Leaflet官方文档
项目地址
- Github地址
- 拓展阅读
如果觉得我的文章对您有帮助,三连+关注便是对我创作的最大鼓励!或者一个star🌟也可以😂.