ArcGIS紧凑型缓存存储格式分析
by 蔡建良 2018-8-24
网络中我看到的网文将bundle存储切片数据的方式都没说清或是说错。按照错误方法一样可以在桌面浏览,但在arcgis for android却无法浏览。
bundlx存储格式的分析:
1) 每个bundlx文件的大小都是81952 字节(我这里PacketSize是128),前面16字节 + 每个图片偏移量5字节 * (128 * 128)个切片 + 结尾16字节。
2) 每个bundle文件中最多存储16384个切片。
3) 文件起始16字节和文件结束16字节与索引无关。
起始16字节: { 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 }
结束16字节: { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
4) 剩余的81920字节数据以5个字节的频率重复,构成了一个对bundle文件的索引。
5) 5个字节是以低位到高位的方式标示了数据的偏移量(在bundle文件中的地址)。
6) bundlx中的每5个字节标示的到底是哪个切片的数据偏移?
按列-行存储:先是1列1行、1列2行……2列1行、2列2行……这样写的位置。
bundle存储格式的分析:
1) 从0x00到0x3b的这些位置都是bundle文件的描述信息。
0-7: 固定
8-b: 所有瓦片当中文件大小最大的一张切片的文件大小的数值
c-f: 固定
10-13: 表示非空文件个数*4
14-17: 固定
18-1b: bundle文件大小
1c-1f: 固定
20-2b: 固定
2c-2f: 开始行
30-33: 结束行
34-37: 开始列
38-3b: 结束列
2) bundle文件里从0x3c->0x1003c这些位置是为空切片预留了偏移位置。
3) bundle中的切片数据是如何存储?
按行-列存储:先是1行1列、1行2列……2行1行、2行2列……这样写的位置。(这个与bundlx相反)
依次按照行列顺序开始写切片,如果遇到空的,就指向0x3c->0x1003c的空位置段,
比如第r行第c列切片是空的,对应的位置就是 0x3c + ((c - colStart) * this.m_packetSize + (r - rowStart)) * 4。
4) 非空切片在bundle文件里是从0x1003c开始写的。
5) 找到非空切片存储的偏移位置,接下来的4个字节是该image的长度,
然后在这4个字节之后取这些长度的字节就组合成了一副图像。
按照以上存储格式采用C#编码开发工具,紧凑型和松散型切片可以互转了,经测试在平板桌面都没问题 。

ArcGIS紧凑型缓存存储格式分析的更多相关文章
- ArcGIS for Server 10.3.X 新型紧凑型缓存的解读和应用
早在2010年年底,牛魔王中王在其博客空间牛魔王的作坊中对ArcGIS 10中推出的紧凑型缓存格式进行了详细的解读,详见<ArcGIS 切片缓存紧凑文件格式分析与使用>.紧随着的4年时间里 ...
- 【转】ArcGIS地图缓存制作简介
[PDF]ArcGIS 地图缓存制作简介 - Esri中国 ArcGIS地图缓存制作简介 制作好的电子地图只有发布为服务后才能为更多的用户所查看与使用.ArcGIS Server 为共享 GIS 资源 ...
- ArcGIS紧凑型切片读取与应用3-紧凑型批量转分散型(附源码)
1.前言 上篇介绍了webgis动态加载解析紧凑型切片的例子,现在我们使用逆向思维实现紧凑型切片转分散型切片,在实际工作中很有用处,紧凑型切片易于拷贝,但读取只有部署到Arcgis Server才行. ...
- ArcGIS紧凑型切片读取与应用2-webgis动态加载紧凑型切片(附源码)
1.前言 上篇主要讲了一下紧凑型切片的的解析逻辑,这一篇主要讲一下使用openlayers动态加载紧凑型切片的web地图服务. 2.代码实现 上篇已经可以通过切片的x.y.z得对应的切片图片,现在使用 ...
- 【Web技术】276- WebView缓存原理分析和应用
前言 混合式开发,在产品体验以及页面加载速度的体验上已经非比以往的.今日早读文章由@unclechen分享. 正文从这开始- 一.背景 现在的App开发,或多或少都会用到Hybrid模式,到了WebV ...
- Thrift的TCompactProtocol紧凑型二进制协议分析
Thrift的紧凑型传输协议分析: 用一张图说明一下Thrift的TCompactProtocol中各个数据类型是怎么表示的. 报文格式编码: bool类型: 一个字节. 如果bool型的字段是结构体 ...
- Howto: 如何将ArcGIS Server缓存移动到新服务器
Howto: 如何将ArcGIS Server缓存移动到新服务器 文章编号: 33686 软件: ArcGIS Server 9.2, 9.3, 9.3.1 操作系统: Windows 2000, ...
- ArcGIS Server 缓存服务切图范围
win10 + Server 10.4 + ArcMap 10.4 ArcGIS Server 缓存服务分为创建服务后手动建立缓存和创建服务时同时自动建立缓存两种. 10.2帮助文档:http:/ ...
- Memcached缓存瓶颈分析
Memcached缓存瓶颈分析 获取Memcached的统计信息 Shell: # echo "stats" | nc 127.0.0.1 11211 PHP: $mc = new ...
随机推荐
- 抛开visual studio,纯手工创建asp.net mvc遇到的问题
脱离Visual Studio,只用文本编辑器..NET Framework.IIS Express创建ASP.NET MVC应用时,需要精简~/View目录下web.config文件内容,之前创建的 ...
- re模块(正则表达式)
re,findall("匹配正则","内容") #所有满足条件的结果都返回到一个列表里 ret = re.search(“匹配规则”,“内容”) #返回 匹配到 ...
- html css+div+jquery实现图片轮播
一直想自己动手做一个图片轮播的控件,查查网上的资料大多引用已经做好的组件,其原理算法不是很清楚,于是自己用jquery写了一个.先看下效果图: 主要界面实现思路如下: 1.新建一个div宽度为100% ...
- jQuery-4.动画篇---动画切换的比较(toggle与slideToggle以及fadeToggle的比较)
jQuery中toggle与slideToggle以及fadeToggle的比较 操作元素的显示和隐藏可以有几种方法.例如: 改变样式display为none 设置位置高度为0 设置透明度为0 都能达 ...
- linux rar文件解压命令
解压命令: unrar x demo.rar
- ubuntu下绑定串口
查看有哪些设备连接在你的电脑上 lsusb 得到如图: 查看usb串口上连接的信息,得到不一样的信息 dmesg | grep ttyS* 我使用了一个usb扩展器,这边可以看到,被连接在ttyUSB ...
- Vue慕课网音乐项目随手记--node代理及数据抓取
1.抓取数据 链接 https://y.qq.com/portal/playlist.html Parameters 通过上图能看到,qq音乐通过设置了refer和host来保护接口. 那么怎么才 ...
- poj 3641 快速幂
Description Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a ...
- Web前端学习第二天(cookie 一)
CookIe安全 cookie一个神奇的机制,无论什么请求中都会带有cookie字段. 可以通过服务器响应头的Set-Cookie字段添加,修改和删除,大多数情况下,客户端通过JavaScript也可 ...
- 软件可维护性的影响因素&如何提升
影响因素: 1.可理解性 2.可测试性 3.可修改性 4.可移植性 5.可重用性 如何提升: 1.建立明确的软件质量目标2.使用先进的软件开发技术和工具3.建立明确的质量保证4.选择可维护的语言5.改 ...