文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/浏览器
在前面我花了两个篇幅来说解行列号的获取,也解释了为何要获取行列号。在这一章,我将把常见的几种请求瓦片时的URL样式罗列出来,而且给出大体的解释。微信
我在这里将地图分为离线地图和在线地图。所谓离线地图,即保存在本地而没有发布的地图。在线地图即发布与网上,能够经过浏览器访问的地图。blog
在前面章节中我已经贴出了exploded类型的切图图片,这里再次给出。索引
那么如何经过行列号来换算出此瓦片的URL呢。咱们首先能够经过观察得出三个结论:图片
(1)L开头的表明了Level,R开头的表明了row,C开头的表明了Col。字符串
(2)肯定这个后,咱们再继续观察,能够发现L后的数字是两位字符串,R后的是八位字符串,C后的也是八位字符串。get
(3)英文后的数字均是16进制数,而后不足位数的用0补充。博客
我想你们在知道了这三个结论后,经过行列号来得到离线松散瓦片的地址该不难了吧,咱们只需把级别、行列号换算成16进制后,不足位数的再用0补位,最后加上英文标识,因而这个瓦片的地址也即可以额找到了。cgi
这里我也首先贴出这种瓦片类型的样式:二进制
这个瓦片的获取咋一看确实是毫无头绪,由于arcgis的这种紧凑型格式将图片进行了包装,并不能直观的看到图片。ArcGIS号称这种格式目前是不公开解析方法的,而且一样在网上也很难收到对应的解析方法。可是,个人一个颇有想法的同事,在去年时花了些时间后已经将这种格式下的瓦片获取方法破解了,而且咱们已经成功运用到多个项目中。
这里我就只给出几个提示吧,根据个人这几个提示,我想读者只要再加一把劲必定能够破解的:
(1)一样,L、R、C后的是地图的级别、行号、列号。
(2)R、C后的字符串固定是4位。
(3)R、C后的数字是经过行列号除以128后再转成16进制,而后将不足的位数补零。
(4)Bundle文件中存放的是图片二进制流,BundleX文件中存放的是对应瓦片在Bundle中的地址,是一个索引文件。
(5)而后…..
而后就是如何在索引文件中找到应该读取的地方,得到瓦片在Bundle中所在的地址后,再去Bundle中的相应地址里读取图片。不过,这里补充一下,Bundle中也不是只有瓦片的,它里面还包含了每一个瓦片的大小,也就是你读这个瓦片须要读取多少个二进制的数目。
这里再次感谢个人同事的智慧的结晶,不然这篇文章必定是不完整的。
在咱们项目中常常能够见到非ArcGIS的瓦片系列,好比超图的、中地的等等。这里我给出某国土局的瓦片格式,其实目前不少国土局本身的瓦片均是这个组织格式。
一样我先给出瓦片的样式图:
你们是否是很奇怪,明明该是三个层次的呀,Level、Row、Col的呀,怎么这个就有四个层次呢。是的,国土局的瓦片中除了这三个参数外,还有一个FileID参数。
这里我直接给出换算公式:
FixedLevel=Level;
FixedRow=Math.floor(Row/4);
FixedCol=Math.floor(Col/4);
FileID=(Row)%4)+ 4*((Col)%4);
其URL的地址就是\FixedLevel\FixedRow\FixedCol\FileID.png。
在这一节里咱们针对两种常见离线地图格式和一种特殊的离线地图格式进行了解析。从这个解析中咱们能够看出,不论是什么地图,行列号都是必须的条件。因此对行列号如何获得还不是很清楚的读者,请将我这个系列中的第二节和第三节再次专心的读一遍,相信你和我同样必定有不同的收获的。
下一节里,咱们将对在线的地图的URL解析进行讲解,在线的地图的URL获取相对简单。咱们一样会对符合OGC标准的在线地图以及特殊的在线地图服务进行分析。欢迎持续关注。
当咱们开始逐渐清晨醒的很早,或者午夜还没睡着时,说明咱们开始逐渐成熟。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^