文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
1.前言
在前面我花了兩個篇幅來講解行列號的獲取,也解釋了為什么要獲取行列號。在這一章,我將把常見的幾種請求瓦片時的URL樣式羅列出來,並且給出大致的解釋。
我在這里將地圖分為離線地圖和在線地圖。所謂離線地圖,即保存在本地而沒有發布的地圖。在線地圖即發布與網上,可以通過瀏覽器訪問的地圖。
2.ArcGIS切圖——exploded類型
在前面章節中我已經貼出了exploded類型的切圖圖片,這里再次給出。
那么如何通過行列號來換算出此瓦片的URL呢。我們首先可以通過觀察得出三個結論:
(1)L開頭的代表了Level,R開頭的代表了row,C開頭的代表了Col。
(2)確定這個后,我們再繼續觀察,可以發現L后的數字是兩位字符串,R后的是八位字符串,C后的也是八位字符串。
(3)英文后的數字均是16進制數,然后不足位數的用0補充。
我想大家在知道了這三個結論后,通過行列號來獲得離線松散瓦片的地址該不難了吧,我們只需把級別、行列號換算成16進制后,不足位數的再用0補位,最后加上英文標識,於是這個瓦片的地址也便可以額找到了。
3.ArcGIS 切圖——bundle類型
這里我也首先貼出這種瓦片類型的樣式:
這個瓦片的獲取咋一看確實是毫無頭緒,因為arcgis的這種緊湊型格式將圖片進行了包裝,並不能直觀的看到圖片。ArcGIS號稱這種格式目前是不公開解析方法的,並且同樣在網上也很難收到對應的解析方法。但是,我的一個很有想法的同事,在去年時花了些時間后已經將這種格式下的瓦片獲取方法破解了,並且我們已經成功運用到多個項目中。
這里我就只給出幾個提示吧,根據我的這幾個提示,我想讀者只要再加一把勁一定可以破解的:
(1)同樣,L、R、C后的是地圖的級別、行號、列號。
(2)R、C后的字符串固定是4位。
(3)R、C后的數字是通過行列號除以128后再轉成16進制,然后將不足的位數補零。
(4)Bundle文件中存放的是圖片二進制流,BundleX文件中存放的是對應瓦片在Bundle中的地址,是一個索引文件。
(5)然后…..
然后就是如何在索引文件中找到應該讀取的地方,獲得瓦片在Bundle中所在的地址后,再去Bundle中的相應地址里讀取圖片。不過,這里補充一下,Bundle中也不是只有瓦片的,它里面還包含了每個瓦片的大小,也就是你讀這個瓦片需要讀取多少個二進制的數目。
這里再次感謝我的同事的智慧的結晶,否則這篇文章一定是不完整的。
4.非常見瓦片格式——國土局的瓦片
在我們項目中經常可以見到非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。
5.總結
在這一節里我們針對兩種常見離線地圖格式和一種特殊的離線地圖格式進行了解析。從這個解析中我們可以看出,不管是什么地圖,行列號都是必須的條件。所以對行列號如何得到還不是很清楚的讀者,請將我這個系列中的第二節和第三節再次專心的讀一遍,相信你和我一樣一定有不一樣的收獲的。
下一節里,我們將對在線的地圖的URL解析進行講解,在線的地圖的URL獲取相對簡單。我們同樣會對符合OGC標准的在線地圖以及特殊的在線地圖服務進行分析。歡迎持續關注。
當我們開始逐漸清晨醒的很早,或者午夜還沒睡着時,說明我們開始逐漸成熟。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^