(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图

摘要:
在这一章,我将把常见的几种请求瓦片时的URL样式罗列出来,并且给出大致的解释。所谓离线地图,即保存在本地而没有发布的地图。在线地图即发布与网上,可以通过浏览器访问的地图。那么如何通过行列号来换算出此瓦片的URL呢。ArcGIS号称这种格式目前是不公开解析方法的,并且同样在网上也很难收到对应的解析方法。R、C后的数字是通过行列号除以128后再转成16进制,然后将不足的位数补零。

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.前言

在前面我花了两个篇幅来讲解行列号的获取,也解释了为什么要获取行列号。在这一章,我将把常见的几种请求瓦片时的URL样式罗列出来,并且给出大致的解释。

我在这里将地图分为离线地图和在线地图。所谓离线地图,即保存在本地而没有发布的地图。在线地图即发布与网上,可以通过浏览器访问的地图。

2.ArcGIS切图——exploded类型

在前面章节中我已经贴出了exploded类型的切图图片,这里再次给出。

(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图第1张

那么如何通过行列号来换算出此瓦片的URL呢。我们首先可以通过观察得出三个结论:

(1)L开头的代表了Level,R开头的代表了row,C开头的代表了Col。

(2)确定这个后,我们再继续观察,可以发现L后的数字是两位字符串,R后的是八位字符串,C后的也是八位字符串。

(3)英文后的数字均是16进制数,然后不足位数的用0补充。

我想大家在知道了这三个结论后,通过行列号来获得离线松散瓦片的地址该不难了吧,我们只需把级别、行列号换算成16进制后,不足位数的再用0补位,最后加上英文标识,于是这个瓦片的地址也便可以额找到了。

3.ArcGIS 切图——bundle类型

这里我也首先贴出这种瓦片类型的样式:

(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图第2张

这个瓦片的获取咋一看确实是毫无头绪,因为arcgis的这种紧凑型格式将图片进行了包装,并不能直观的看到图片。ArcGIS号称这种格式目前是不公开解析方法的,并且同样在网上也很难收到对应的解析方法。但是,我的一个很有想法的同事,在去年时花了些时间后已经将这种格式下的瓦片获取方法破解了,并且我们已经成功运用到多个项目中。

这里我就只给出几个提示吧,根据我的这几个提示,我想读者只要再加一把劲一定可以破解的:

(1)同样,L、R、C后的是地图的级别、行号、列号。

(2)R、C后的字符串固定是4位。

(3)R、C后的数字是通过行列号除以128后再转成16进制,然后将不足的位数补零。

(4)Bundle文件中存放的是图片二进制流,BundleX文件中存放的是对应瓦片在Bundle中的地址,是一个索引文件。

(5)然后…..

然后就是如何在索引文件中找到应该读取的地方,获得瓦片在Bundle中所在的地址后,再去Bundle中的相应地址里读取图片。不过,这里补充一下,Bundle中也不是只有瓦片的,它里面还包含了每个瓦片的大小,也就是你读这个瓦片需要读取多少个二进制的数目。

(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图第3张

这里再次感谢我的同事的智慧的结晶,否则这篇文章一定是不完整的。

4.非常见瓦片格式——国土局的瓦片

在我们项目中经常可以见到非ArcGIS的瓦片系列,比如超图的、中地的等等。这里我给出某国土局的瓦片格式,其实目前很多国土局自己的瓦片均是这个组织格式。

同样我先给出瓦片的样式图:

(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图第4张

大家是不是很奇怪,明明该是三个层次的呀,Level、Row、Col的呀,怎么这个就有四个层次呢。是的,国土局的瓦片中除了这三个参数外,还有一个FileID参数。

这里我直接给出换算公式:

FixedLevel=Level;

FixedRow=Math.floor(Row/4);

FixedCol=Math.floor(Col/4);

FileID=(Row)%4)+ 4*((Col)%4);

其URL的地址就是FixedLevelFixedRowFixedColFileID.png。

5.总结

在这一节里我们针对两种常见离线地图格式和一种特殊的离线地图格式进行了解析。从这个解析中我们可以看出,不管是什么地图,行列号都是必须的条件。所以对行列号如何得到还不是很清楚的读者,请将我这个系列中的第二节和第三节再次专心的读一遍,相信你和我一样一定有不一样的收获的。

下一节里,我们将对在线的地图的URL解析进行讲解,在线的地图的URL获取相对简单。我们同样会对符合OGC标准的在线地图以及特殊的在线地图服务进行分析。欢迎持续关注。

当我们开始逐渐清晨醒的很早,或者午夜还没睡着时,说明我们开始逐渐成熟。

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图第5张

免责声明:文章转载自《(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇unity事件机制页面公用的部分下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

景观分析工具:arcgis中patch analysis模块

关键字:景观分析arcgis patch analysis 地理信息系统 转自:http://blog.sina.com.cn/s/blog_44b367b10100xt9m.html 模块下载地址:http://flash.lakeheadu.ca/~rrempel/patch/pa_Setup_v93.exe 模块安装步骤: 1. First un...

围观微博网友发起的美胸比赛学习爬取微博评论内容

网友:看看胸女:滚 网友:美胸比赛女:[图片消息] ​​​​ 继上次知乎话题 拥有一副好身材是怎样的体验? 解析了知乎回答内容之后,这次我们来解析一下微博内容,以微博网友发起的美胸大赛为例: https://m.weibo.cn/detail/4367970740108457 https://m.weibo.cn/detail/434802252095...

iOS 第三方登录之 QQ登录

  一. 首先需要下载腾讯qq登录所需的库,下载地址是http://open.qq.com/ 。 需要用到的有TencentOpenAPI.framework 和TencentOpenApi_IOS_Bundle.bundle,将两者加入工程。 二.下面就来实现QQ第三方登录 1.声明属性,且viewcontroller实现TencentSessionD...

javascript获取网页URL地址及参数等

先看一个示例 用javascript获取url网址信息 <script type="text/javascript">document.write("location.host="+location.host+"<br>");document.write("location.hostname="+location.hostname+...

dubbo心跳机制 (3)

此文已由作者赵计刚授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 二、consumer端心跳机制 //创建ExchangeClient,对第一次服务发现providers路径下的相关url建立长连接 -->getClients(URLurl) -->getSharedClient(URLurl) -->Ex...

网页引用Font Awesome图标

首先引入 方法一:将以下代码粘贴到网页HTML代码的 <head> 部分. [html] view plain copy  <link href="//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"> ...