ArcGIS中的 .tpk數據



轉:http://blog.csdn.net/mytudousi/article/details/33347249


什么是tpk文件

tpk是ArcGIS10.1推出的一種新的數據文件類型,主要是用於將切片文件打包形成離線地圖包,tpk可以在ArcGIS Runtime或者ArcGIS for Android/iOS中作為切片底圖被加載。

為什么要存在tpk文件

為什么要存在tpk文件,這個要從需求說起。例如我們要做一個ArcGIS for Android/iOS應用,現在手機的流量還是不便宜的,而且也是為了保證速度,希望把地圖數據打包到本地。其實也就是一些切片數據,tpk文件就可以做到。

再例如,ArcGIS API for WPF,該開發包只有幾M幾個dll。我們要做一個應用的話,只要顯示底圖數據,然后在這些底圖數據的基礎上做一個信息管理和定位工作。此時除了顯示底圖數據之外,不需要其他的復雜的GIS功能。ArcGIS API for WP提供的功能是很簡單的,從其dll包的大小也能看出來。去加載mxd嗎?ArcGIS API for WPF干不了這事,他要是能做的了,為什么還會有幾百M的ArcEngine呢。所以一把情況下都需要連接ArcServer服務,在ArcServer端,ArcServer會把ArcGIS API wpf請求轉換成圖片,返回給客戶端。客戶端API再負責顯示。這樣解析地圖數據的功能全在ArcServer端完成。既然ArcGIS RunTime API沒有解析地圖文件的功能,但是很容易加載圖片的,如果我們把切好的瓦片放在客戶端,這樣ArcGIS Runtime的api不用太大、不用太復雜就可以解析緩存數據,並展示出來。

tpk文件就是干這個的。

Tpk的用處

從上節我們就很容易了解了tpk文件的用處。就是把一些地圖緩存數據打包到客戶端。什么樣的項目會用到這些呢?

  • 手機App

綜合流量和速度的問題,手機App完全可以使用這中方式。並且手機app一般沒有復雜的GIS功能,主要就是定位和展示。所以把底圖提前做成瓦片放在客戶端是一個很明智的選擇。

  • ArcGIS API for WPF 做的弱GIS類型的項目
之前我們在座ArcGIS的CS項目都是使用ArcEngine,當項目部署的時候,需要安裝ArcEngine Runtime。ArcEngine Runtime有幾百M,並且需要單獨安裝,還要驗證許可。但如果我們再一個數據管理的項目中,只需要GIS數據的定位、展示和簡單修改。那么我們是否還需要ArcEngine呢?之前我們是沒有選擇的,現在我們多了一個選擇,就是ArcGIS Runtime和ArcGIS API for WPF。
ArcGIS API for WPF可以展示ArcServer發布的地圖服務。而且ArcGIS Runtime內置了一個ArcServer,在我們部署的系統啟動時,通過代碼控制可以啟動內置的ArcServer。這樣我們就可以訪問ArcServer提供的功能了,使用起來和單獨部署的ArcServer一樣。也就是說理論上,ArcGIS API for WPF加上內置的ArcServer是可以完成很多GIS的功能的,包括較為復雜的GIS分析。當我們部署的時候,也會比較簡單,直接把生成的部署包拷貝到指定機器上,就可以直接運行。
但我們要注意到一點,這個內置的ArcServer並不是免費的。ArcGIS API for WPF是免費的。當我們做一個更簡單的CS系統時(GIS功能簡單),只包括底圖展示、定位等功能。那么我們要解決的問題就是如何加載底圖。因為ArcgIS API是不支持加載mxd的,既然是單機版,又不能訪問外部的ArcServer或其他地圖服務。這就需要tpk文件了,把底圖數據提前做成緩存,放在運行程序下面,就可以。而且這樣一來,系統不僅體積小,而且是ArcGIS這塊用到的都是免費的。

tpk的制作

使用ArcMap制作

如果你已經有了一個mxd文件,要做成tpk,就可以按照以下方法制作。

1、使用ArcMap打開mxd文件。

2、在菜單-File-Share as-Title Package,如下圖所示:

3、進入瓦片參數設置界面。

該界面有三個選項卡,第一個是基本信息,設置保存的路徑,第二個選項卡比重要,主要是設置瓦片的格式、分級方式以及切的級別。第三個選項卡就是一些描述信息。

4、最后點擊Share按鈕,即可以進入瓦片生成過程。這樣tpk瓦片文件就生成了。

使用已經切好的瓦片制作tpk文件

如果我們現在的數據不是mxd而是已經是做好的瓦片文件,那么怎么制作tpk文件呢?

其實.tpk文件就是一個壓縮文件,當我們把一個.tpk文件后綴名修改成.rar。然后解壓出來,就會發現能夠解壓成功,解壓出來的文件如下圖所示:

前兩個文件夾我們可能不大熟悉,里面都是一些配置信息,可以手工修改,這就不一一介紹了。因為我們現在還看不出來什么。當我們進入v101文件夾后,看下里面的內容:

再點開Layers文件夾

看到這個界面就比較熟悉了吧,這就是ArcServer緩存的結構,也就是說,把已有的緩存,組織成上述結構,壓縮成.rar,然后擴展名修改成,tpk就可以了。

如何加載tpk文件

下面我們就以ArcGIS API for WPF來看下如何加載放在本地的tpk文件。

 

[csharp]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
  1. string myMpkFilePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Data\\Map.tpk";  
  2. this.Map.Layers.Add(new ArcGISLocalTiledLayer(myMpkFilePath));  
就這么簡單。


免責聲明!

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



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