分享

ArcGIS 矢量切片全接触(多图)

 徒步者的收藏 2017-07-21

ArcGIS 矢量切片全接触(多图)

2016-04-29 ArcGIS 极客说 ArcGIS微助手
ArcGIS微助手

ArcGIS_Support

关注ArcGIS微助手,可自助获取ArcGIS平台的海量技术资源,可便捷获得专业的技术服务与业务咨询等。更多精彩,期待关注!






ArcGIS 矢量切片知多少


>>>>

什么是矢量切片


矢量切片是一种新的利用一些新技术来控制动态的可交互的地图展示方式,这种新技术可以让个人在移动端或者浏览器端自定义个性化的地图样式。人们可以动态的赋予基础底图样式以及通过配合可交互的工作数据来设计底图样式,根据内容进行智能制图和实时分析并展示在基础地图上。


通俗的讲,矢量切片就是将矢量数据以建立金字塔的方式,像栅格切片那样分割成一个一个描述性文件,以 GeoJson 格式或者以 pbf 等自定义格式组织,然后在前端根据显示需要按需请求不同的矢量瓦片数据进行 Web 绘图。


而 ArcGIS 的矢量切片是利用协议缓冲(Protocol Buffers)技术的紧凑的二进制格式用来传递信息的。前端通过解析样式动态渲染矢量切片数据。



>>>>

为什么要使用矢量切片


WebGIS中一直使用栅格切片作为底图,这种底图加载速度快,制图表达稳定,但是无法修改样式,而且占用储存空间较大,在地图数据快速更新的今天有些力不从心。矢量切片的优势在于既能够有栅格切片成熟的缓存、缩放比技术另外还可以像矢量地图那样能够灵活修改样式。


这里需要解释一下,矢量切片是为了代替栅格切片作为底图的,而不是为替代矢量要素图层的。因此那些点击相应的事情还是交给要素图层来办吧!



>>>>

ArcGIS矢量切片技术路线


目前 Esri 在 ArcGIS 平台上已经初步形成一个从生产到发布再到使用的完整矢量切片路线。


目前,制作矢量切片的工具 ArcGIS Pro1.2 正式版已经发布;发布平台为 Portal for ArcGIS 10.4 + ArcGIS 10.4 for Server;使用平台 Web 端为 ArcGIS API for JavaScript 3.15 和 4.0(目前是 Beta 3),移动端使用 ArcGIS Runtime Quartz (目前是 Beta 版)。



>>>>

ArcGIS矢量切片的制作


矢量切片的制作大概分为数据加载、索引的构建、切片三个步骤。



>>>>

矢量切片服务的使用


1. 矢量切片服务的发布:


Portal 中矢量切片服务的调用:


1)作为普通图层加载



2)作为底图加载


2. 矢量切片样式的修改:

样式下载

ArcGIS Online矢量切片底图




ArcGIS 矢量切片包结构解析


通过 ArcGIS Pro 生成了一个神秘的 *.vtpk 的矢量切片包,通过 Portal 发布就成了矢量切片服务,那这个 *.vtpk 里面藏着什么秘密呢?小编忍不住暴力解压了这个文件,下图就是解压之后每个文件的内容。 


上面的这个目录中占比例最大的自然是 tile 文件夹,里面是经过压缩的 .bpf 文件,为了方便存储 pbf 文件被整合到 bundle 中。


另外一个重要的文件是 style 文件夹下的 root.json,在上一个帖子中下载的样式其实就是这个 root.json。  


 整个工程里有好几个 root.json,tilemap 文件夹下也有,那这个 root.json 又是做甚的?我以 ArcGIS Online 的矢量切片底图为例,加载底图时,监听请求发现在请求矢量切片前一定要请求一个 tilemap 的文件。




小编禁不住好奇心打开了这个 tilemap 文件,居然全是由 1 组合的数组。      



这个文件是为了反序列化 pbf,因此其大小与地图的复杂程度有关,地图越复杂这个文件就会越大。


sprites 储存图片标记,我们看到的矢量切片底图上的各种图片标记其实是通过sprite.json获取图片标记在sprite.png上的相对位置而显示出来的。     



至此,ArcGIS矢量切片包的神秘面纱已经解开了



ArcGIS 矢量切片格式详解


矢量切片最大的一个特点就是样式可以前端自定义,那么怎样修改控制样式的 json 文件才能达到我们想要的效果呢?接下来小编就来跟你详细剖析一下 ArcGIS 的矢量切片样式格式。


我们先以公开课视频中的数据为例,经过复制、保存、下载成功的把样式下载下来。


要理解样式必须要与原始数据的配图进行对比     



下表是样式中的主要属性


项目

作用

可选值

id

在整个配图中的图层关系


type

绘制类型

fill/line/ symbol

source

绘制者署名


source-layer

在pro中配图的图层名称


filter

过滤


maxzoom

最大可显示比例尺


minzoom

最小可显示比例尺


layout

样式


paint

颜色



这里有一个点符号渲染的例子:



symbol-avoid-edges表示是否描边

text-font:标记的字体

text-size:标记的字体大小

text-max-width:字体最大宽度

text-filed:标签所在的属性序列

text-option:是否显示文字标记

text-padding:文字填充                          


这里有一个线符号的例子:


line-color表示线的颜色

line-width表示线的宽度

“base”表示线宽的基准值

 “stops” 用来添加不同的线宽到不同的比例尺或者地图级别中。


在这个例子中级别 1 的线宽度为基础宽度的一半即 0.6pts,地图级别 5 的线宽度为基础宽度的 1.33 倍即 1.6pts,如果你愿意还可以添加更多节点。


除此之外还可以设置虚线

line-dasharray: [ 3.0 , 2.0 ]表示线段长 3px 中间间隔 2px

line-opacity : 控制线的透明度,0 表示完全透明,1 表示完全不透明。


ArcGIS Online 上的矢量切片底图的样式也可以使用相同的方式进行编辑,不同级别下图层的名称与包含的属性请参考矢量切片参考文档。

http://esri.maps./home/item.html?id=f0b44a7e86b84109920e23e1e09d38a8



ArcGIS 矢量切片在线编辑工具

在对矢量切片样式结构进行详解之后,我相信没有几人不晕的。难道我制作一个矢量切片样式需要记住这么对参数还要理解 json 文件的结构,这是要把人逼疯的节奏啊。所见即所得一直是 Esri 倡导的开发方式,在矢量切片的使用上 Esri 也开发出了两款所见即所得的样式编辑工具。


工具一:arcgis-vectortile-style-editor


在 github 上的地址:https://github.com/Esri/arcgis-vectortile-style-editor


工具二:VectorBasemapStyleEditor


在 github 上的地址:https://github.com/jgraysonapl/VectorBasemapStyleEditor


那代码下载下来了是不是就立即可以运行了呢?too yong,too simple!当然需要连接 Portal 或者 ArcGIS Online 了,下面我以 VectorBasemapStyleEditor 为例解释一下怎样在ArcGIS Online上注册在线编辑器并使用。


首先,将编辑器代码利用 Web 服务器发布,获取首页的访问 url。

第二,打开ArcGIS Online,注册应用,获取应用的 ID。


最后一步,修改代码,找到 main.js,将其中 appId 修改为自己注册应用的 ID。


再次运行应用,即可通过登录获取用户列表中的矢量切片底图,可视化的修改样式并可以保存到 Portal 或者 ArcGIS Online 中!






阅读

''

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多