地圖下載2之天超圖瓦片格式


接上一篇《地圖下載1之天地圖瓦片解析》,我們已經知道了天地圖的瓦片格式,現在來分析一下超圖中瓦片的存儲結構。

其實,在GIS領域,只有像ESRI這樣強大公司的SHP文件等能通用外,很多數據、格式等都不通用,都"各自為政",為此在數據交換、共享時帶來很多不便。

前方有坑

我們來到超圖的地圖緩存目錄,可以看到WMTS瓦片的結構,根目錄(img)下的"JP_256_"表示 格式及分辨率;"1-16"表示 級別,"10438x51979.jpg"表示 行x列,而81、406表示什么意思呢?

方式一: 由於SuperMap的資源太少,遇到問題先去官方幫助找答案,而官方的解釋未指明其計算方法:

"第四層:不同空間區域行號緩存目錄。目錄名稱以空間區域(緩存范圍)行號命名。所謂空間區域指的是將地圖按照網格分塊算法將一幅地圖分為多個塊,每一個分塊表示一個空間區域。每個空間區域的寬高都是緩存塊的整數倍。區域內至少有一張圖片,行號就是空間區域在指定范圍內的行數,行號從上到下逐漸增大,用十進制表示。范圍擴大時行號可以是負值。

第五層:不同空間區域列號緩存目錄。目錄名稱以空間區域(緩存范圍)列號命名。列號就是空間區域在指定范圍內的列數,列號從左到右逐漸增大,用十進制表示。范圍擴大時列號可以是負值。"

方式二:我直接向超圖技術人員咨詢,最后得到了一個電話號碼:400-8900-866,也算一種收獲!

方式三:在問答社區提問,希望有好心人或官方技術人員解答一下:http://qa.supermap.com/38415,十多天后,收到了沒用的答案,說這是內部算法,建議用平台軟件來切片(如果平台能高效完成我的任何,我也不必費盡周折)。

超圖不如ESRI是有原因的,為什么不能抱着開放的態度,讓大家來使用它,大家使用率越高,反而對其有好處。這又不是什么高深算法和關鍵技術!

求人不如求己

無奈,只得自己來反編譯、讀懂它的計算方法,其實很簡單,行列號的計算公式如下:

int row = (x < 0) ? (x / 128 - 1) : (x / 128);

int col = (y < 0) ? (y / 128 - 1) : (y / 128);

其中,row級別目錄下的行文件夾名稱,col表示行目錄下的列文件夾名稱, x表示瓦片的行號,y表示瓦片的列號。(可根據下載范圍、分辨率計算出瓦片的起始、結束行列號,計算方法可參考下一講)

注意:在C#中,"/"號現在整形運算是取整,浮點運算時為除法運算,上面的公式表示向下取整。

這樣,就可以根據圖片的名稱來計算存儲的位置,即結構目錄就清楚了。如下:

…\JP_256_\1\0\0:

…\JP_256_\2\0\0:

…\JP_256_\3\0\0:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM