文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處: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/
若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^