ArcGIS Server开发教程系列(3)切片
切片工作,我们可以一级一级的切,也可以,所有的一块切,Recreate All Tiles这项是说,在没有进行任何的切片工作时,可以选用这项;Recreate Empty Tiles这项是说,如果之前已经对某一级进行了切片,再重新切片时,可以选这项,具体可以查看帮助;Delete Tiles这项可以删除之前切的切片;比方说我们计算机正在切图,突然间断电了,切了几天,几十G的地图切片,怎么办?我们不能重新开始切啊,我们就可以选择Recreate Empty Tiles,把剩余的地图切片补上即可。
切片参数设置可以在发布服务时进行,或者catalog里点击已发布的服务修改服务属性
这里设置文本的反锯齿,最好设置为normal或以上,否则容易出现文本不清晰
设置缓存目录:这个很重要,因为我们有时切图可数据量可能几十G,上百G,甚至上T,这样的话我们不能把切片默认到目录:C:\arcgisserver\directories\arcgiscache目录,我们需要添加一个磁盘空间比较大的盘
设置切片的CPU核数,本机4个CPU,4个线程;所以我们设置最大用几个CPU切片的时候,那就是3了,如果你设置成5,那么最后发布是不成功的。
Cpu线程数决定了你将要最多要实例化多少个进程去切图,一般最大设置为CPU线程数-1,这样保证CPU使用率在50%左右,如果设置太大,会造成CPU使用率在100%,硬件使用率一直在100% 可能会导致负荷过重,从而导致系统出现问题。
根据需求分别设置下面的参数,切片切几个级别
选择suggest,弹出输入框输入设置几个级别,这里设置为5
下面按图设置即可
可以添加或删除自定义下的比例尺(这个地方已经进行过切片所以是灰色的),可以设置切片的格式为PNG32,存储格式
高级设置这里根据需要选择
以下一段资料参考http://blog.csdn.net/warrenwyf/article/details/6069711
在ArcGIS 10中出现了一种新的切片缓存文件格式:紧凑型存储(Compact)。与之前的松散型存储(Exploded)相比,它有迁移方便、创建更快、减少存储空间等诸多优点,已经成为了创建切片缓存的默认格式。对于本身ArcGIS的产品而言,访问紧凑型存储与访问松散型存储没有任何区别,但是,如果第三方应用想访问新的切片格式,目前官方给出了“不可以”的答复:
The internal architecture of the bundle is not publicly documented by ESRI. If you've coded your own logic to pull tiles out of a virtual directory, you should continue to use the "exploded" format which stores each tile as a single file and was the only option at ArcGIS Server versions 9.3.1 and previous.
我Google了一下,也没有任何相关的资料,因此索性自力更生,自己分析一下紧凑型存储的格式,相信这是目前可以找到的关于紧凑型存储内部格式的唯一资料。
l 紧凑型存储的原理
紧凑型存储最主要的两种文件是bundle和bundlx文件,其中bundle文件用以存储切片数据,bundlx是bundle文件中切片数据的索引文件。
一个bundle文件中最多可以存储128×128(16384)个切片,但是创建切片缓存并不是一张张切片单独生成,而是以4096像素(无抗锯齿)或2048像素(有抗锯齿)为边长渲染的,如果我们选择的切片边长为256像素并开启了抗锯齿,那么每次ArcSOC进程创建的是一张以8×8(64)个切片拼接成的大图,然后切割后存入bundle文件中。
下图中,蓝色边框代表的是bundle文件,黑色格子是生成切片时拼接的大图,具体的每个切片在黑色格子中,图中并没有显示出来。
l 存储格式的分析
在分析紧凑型存储格式之前,我首先问自己,如果你要在一个bundle文件中存储内容,同时通过一个bundlx文件中存放索引应该怎么做?中规中矩的做法就是参考数据库的位图索引方式,在bundlx文件中用固定的几个字节标识一个切片在bundle文件中的状态(存储的偏移量和长度)。
观察ArcGIS生成的bundlx文件,每个文件都是一样的大小:81952字节。上面已经提到,每个bundle文件中最多存储16384个切片,虽然bundle文件中可能并没有这么多切片,但是,我猜测bundlx文件中必然是保留了所有者16384个切片的索引位置。粗略估计每个切片会占据大约5个字节,16384×5=81920字节,还多出32字节,猜测存储bundlx文件的标识信息。
通过对一个很存储切片很稀疏的bundlx文件的规律进行观察和猜测,确定了bundlx中文件起始16字节和文件结束16字节与索引无关,剩余的81920字节数据以5个字节的频率重复,构成了一个对bundle文件的索引。
本来以为这5个字节会保存bundle文件中切片数据的偏移和长度,但是发现5个字节表达的信息量可能不够,因此,我同时对bundle中的切片数据进行了一个分析。
我猜想文件并没有进行压缩处理,因此在文件中搜索PNG文件的文件头0x89504E47(我在创建缓存时选择了PNG24格式),发现果然如此。同时,每2个切片数据之间相隔了4个字节(切片数据我是用Exploded的图片直接进行比较的),通过猜想、尝试,发现这4个字节正好是以低位到高位的方式标示了后续这个切片数据的长度。
既然切片数据长度是在bundle文件中记录的,那么在bundlx文件中索引的必然只包括切片数据的偏移量,经过实验发现,bundlx中的5个字节也是以低位到高位的方式标示了数据的偏移量。
切片数据长度和数据偏移猜想应该是无符号的整数,后面的实践证明了这一点。
还有一个问题,bundlx中的每5个字节标示的到底是哪个切片的数据偏移?我的实验的结果是:按列排序:
1 |
129 |
… |
… |
2 |
130 |
||
3 |
131 |
||
… |
… |
||
… |
… |
||
128 |
256 |
16384 |
从上面的分析,我们如果知道了一个切片的级别、行号、列号,就可以通过bundlx首先找到bundle中切片内容的偏移,然后从bundle文件中取出4个字节的长度数据,再随后根据这个长度读取真实的切片数据。关于如何计算切片的行号、列号,以及bundle文件的命名方式,相对比较简单,这里就不详细叙述了。
然后在catalog里就开始自动切片了,可以查看切片进度
ArcGIS Server开发教程系列(3)切片相关推荐
- ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列 本章导读:ArcGIS 是一个成熟的 GIS 软件体系,无论是在海图的服务端管理.桌面软件使用还是海图功能定制方 ...
- ArcGIS Maritime Server 开发教程(九)二三维水深服务
ArcGIS Maritime Server 开发教程(九)二三维水深服务 本章导读:ArcGIS 软件体系是使用 ArcGIS Bathymetry 桌面扩展构建和管理水深数据库,并且利用 Imag ...
- ArcGIS Maritime Server 开发教程(七)Maritime Server 正确的开发模式
ArcGIS Maritime Server 开发教程(七)Maritime Server 正确的开发模式 本章导读:前面几个章节已经非常细节的分析和测试了 Maritime Server 的相关功能 ...
- ArcGIS Maritime Server 开发教程(四)Maritime Service 开发实践
ArcGIS Maritime Server 开发教程(四)Maritime Service 开发实践 本章导读:Maritime Service 属于 MapService 的一个扩展,大部分功能继 ...
- ArcGIS Maritime Server 开发教程(三)Maritime Service 功能解读
ArcGIS Maritime Server 开发教程(三)Maritime Service 功能解读 本章导读:ArcGIS Maritime Server 能够以极简的方式发布海图服务,其服务的标 ...
- ArcGIS Maritime Server 开发教程(八)ArcGIS Bathymetry 扩展模块
ArcGIS Maritime Server 开发教程(八)ArcGIS Bathymetry 扩展模块 本章导读:ArcGIS Bathymetry 扩展是 ArcGIS Maritime 解决方案 ...
- ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧
ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧 本章导读:GIS 开发人员基于 Maritime Service 开发海图应用时总会遇到与海图数 ...
- ArcGIS Maritime Server 开发教程(一)了解 ArcGIS Maritime Server
ArcGIS Maritime Server 开发教程(一)了解 ArcGIS Maritime Server ArcGIS Maritime Server 是ArcGIS平台面向海洋.海事以及航道等 ...
- ArcGIS Server 开发系列(一)--编程框架总览
ArcGIS Server是一个发布企业级GIS应用程序的综合平台,如果想对ArcGIS Server基础有更多的了解,可以先看看<ArcGIS Server 体系结构>.ESRI(中国) ...
最新文章
- 036、Linux下ipmitool命令
- 滴滴产品总监:如何合理设计弹窗以保证流畅的用户体验?
- C++中之a[5](栈区)和int a=new int[5](堆区)有什么区别
- 正则表达式:匹配Double类型,整数和小数
- 基于External-DNS的多集群Ingress DNS实践
- 解决“在eclipse中配置Tomcat时,出现Cannot create a server using the selected type的错误”的问题...
- 三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较
- 1.nodejs介绍
- 数值分析(8)-最佳一致逼近多项式
- mysql 序列自增长 恢复到1_MySQL查询结果另外自带一列自增序列号
- node.js源码安装
- Google账号注册失败 无法向手机发验证码
- selenium模拟登录163邮箱
- G31主板支持1440*900分辨率
- python练习3:输入某年某月某日,判断这一天是这一年的第几天?
- 为什么选择高防DNS云解析?(二)
- 【贪玩巴斯】带你一起攻克英语语法长难句—— 第三章——名词(短语)和名词性从句{主语、宾语、表语和同位语}全解 ——2022年2月6日-16日
- Mac配置LNMP开发环境全记录 一看就懂系列
- 汉字应用水平测试软件,汉字应用水平测试(HZC)试点将在11个省市进行
- Python数学问题16:百钱买百鸡
热门文章
- 4.通过三个交换机实现VLAN间通信
- 大众EA211djs和css的区别,宣传上却说捷达VS5用的发动机是EA211,但这款车的参数配置栏发动机型号写的却是DJS,谁能为我解惑吗?(只有斯柯达的柯米克的发动机型号写得才是EA211)...
- oracle 分布键,DWS使用技巧:根据ORACLE主键和唯一健批量修改DWS分布列字段的方法...
- pycharm更改模板_pycharm怎样给文件编辑统一的模板?
- angular五大服务顺序_建议收藏 | 一篇文章告诉你工种的进场顺序
- div+css盒子居中
- android studio device功能,Android Studio 3.0找不到Android Device Monitor
- 搞java不细心_Java 2 (基础总结)
- sftp 中文乱码 连接后_sftp服务器中文乱码
- 小白的AFNetWorking之路