1. 什么是矢量切片包?
GIS的底图一直使用金字塔技术进行切图,使用户能够快速访问指定级别的地图或者影像。但是切图本身是一张图片,无法进行交互。于是又引入了矢量图层用来显示矢量点线面,这通常需要先获取矢量地理数据(例如GeoJson),然后通过前端将其绘制成不同元素便能通过鼠标进行响应交互了。
这种GIS组织方式在数据量比较小的时候并没有什么大问题,但是在数据量比较大时(例如全国的详细街区数据)存在以下几个问题。首先,同一套数据的展示在不同的需求下可能需要不同的样式(例如,白天和夜间模式)而对于传统栅格切片对此需求必须重新进行切片;第二,由于切片的分辨率固定,分辨率过高切片体积过大,分辨率过低高清屏无法清晰显示。第三,矢量数据的请求如果是按需请求每次都向服务器请求数据加重服务器压力,如果一次请求按需展示,当矢量数据过大时(例如全国的水系数据)对于前端的压力过大。
现在,矢量切片利用一些新技术来控制动态的可交互的地图展示方式,这种新技术可以让个人在移动端或者浏览器端自定义地图样式。矢量切片底图可以将基础底图和工作数据进行融合,扩展了底图的交互性。人们可以动态的赋予基础底图样式以及通过配合可交互的工作数据来设计底图样式,根据内容进行智能制图和实时分析并展示在基础地图上。那么,究竟什么是矢量切片技术?
矢量切片是一种利用协议缓冲(Protocol Buffers)技术的紧凑的二进制格式用来传递信息。当渲染地图时矢量切片使用一系列储存的内部数据进行制图。被组织到矢量切片的图层(比如道路、水、区域),每一层都有包含几何图形和可变属性的独立要素(例如姓名、类型等等)。通俗的说,就是将矢量数据以建立金字塔的方式,像栅格切片那样分割成一个一个描述性文件,以GeoJson格式或者以pbf等自定义格式组织,然后在前端根据显示需要按需请求不同的矢量瓦片数据进行Web绘图。
矢量切片有切片的优势——成熟的缓存、缩放比例技术,另外还有矢量数据能够快速的提供地图映射的优势。一个矢量切片会以紧凑的解析的格式包含所有相对应的几何图形和元数据,像道路名称、用地类型、建筑物的高。因此矢量切片是一种高性能的格式,这种格式在样式、输出格式以及交互性方面提供了高度的灵活性。如下图所示传统金字塔方式进行切图时在并没有要素或者要素相同的区域依然需要进行多级切片,而矢量切片只需要设定不同要素显示的级别即可。
(1)矢量切片 (2)传统金字塔
目前如OpenStreetMap和Mapnik等开放社区平台倡导的矢量切片标准在过去几年已经被一些主流的客户端设备和制图平台所采纳。最近Mapbox的团队为矢量切片开发了一套开放的说明,这个说明已经成为社区支持的标准。现在已经有十多个公司以及开源项目使用这种标准格式的矢量切片。相对于构建一个矢量切片的新接口说明,ArcGIS更倾向于通过采用并改进已有矢量切片说明来支持这种兴起于社区的标准。这意味着ArcGIS中的350000个组织用户可以通过矢量切片或者通过其他资源发布的可视化切片的形式来发布他们自己的数据。这将会使交互地图和数据生态系统更加兴旺。
矢量切片正逐步在ArcGIS的WebGIS平台上得到支持,目前JS API 3.15/4.0beta已经支持矢量切片的调用,ArcGIS Pro1.2增加了创建并可以发布到ArcGIS for Server 10.4或者ArcGIS Online的功能,同时在ArcGIS Online上也提供了一套在线的基础矢量底图,可以通过修改样式文件对基础矢量底图样式进行自定义修改。下一步矢量切片将会更加完善,并且在ArcGIS Runtimes以至于整个WebGIS平台上进行支持。Esri希望未来能够在使用栅格切片的地方都可以使用矢量切片。
2. 矢量切片包生产流程
矢量切片包必须使用ArcGIS Pro
1. 打开数据
2. 添加地图文档属性(右键地图,选择属性)
3. 运行工具创建矢量切片包(Create Vector Tile Package)
(切片方案可自定义,默认切片方案要求数据源为wgs84坐标系)
4. 结果查看
3. 工具参数说明
|
|
|
参数 |
说明 |
数据类型 |
in_map |
用于生成切片并对其进行打包的地图。输入地图必须具有元数据描述和标签。 |
Map |
output_file |
输出矢量切片包。包的文件扩展名为 .vtpk。 |
File |
service_type |
确定是从现有地图服务生成切片方案还是根据 ArcGIS Online、Bing 地图和 Google 地图生成地图切片。
|
Boolean |
tiling_scheme (可选) |
若将 service_type 参数设置为 EXISTING,则将使用矢量切片服务或切片方案文件。切片方案尺寸必须为 512 × 512,并且连续缩放比例为 2。 |
MapServer; File |
tile_structure (可选) |
请指定是使用索引结构对切片生成结构进行优化,还是在所有细节层次上将其优化为所有切片的平面数组。经优化的索引结构为默认设置,其产生的缓存较小。
|
String |
min_cached_scale (可选) |
生成切片的最小比例。这不必是您的切片方案中的最小比例。由最小缓存比例决定生成缓存时将使用哪个比例。 |
Double |
max_cached_scale (可选) |
生成切片的最大比例。这不必是您的切片方案中的最大比例。由最大缓存比例决定生成缓存时将使用哪个比例。 |
Double |
index_polygons (可选) |
依照要素密度指定预生成切片索引,仅在 tile_structure 参数为 INDEXED时可用。使用创建矢量切片索引工具创建索引面。如果此参数中未指定索引面,则处理过程中将生成优化的索引面,以辅助切片的创建,但这些索引面不会保存或输出。 |
Feature Layer |
summary (可选) |
将摘要信息添加到输出矢量切片包的属性中。 |
String |
tags (可选) |
将标签信息添加到输出矢量切片包的属性中。用逗号或分号将多个标签隔开。 |
String |
4. 具体使用和js调用,参考
https://blog.csdn.net/u012599377/article/details/101102787
【附录】
欢迎大家关注我的收费课程《ArcGIS Pro 2.6和ArcGIS Enterprise学习》,共8小时,有理论有实操:https://edu.csdn.net/course/detail/31690
课程主要包含:
- ArcGIS Pro2.6学习
①GIS中的数据
②GIS中的坐标系
③企业级地理数据库(SDE)设置
④数据编辑及拓扑检查
⑤简单制图
⑥空间分析
2.ArcGIS Enterprise学习
①环境部署
②二三维服务发布(矢量切片、要素服务、地图切片、地形服务、三维服务等)
③使用及运维(详细介绍如何确定enterprise部署架构,简单介绍相应的运维工具)
3.开发体系梳理