1. 程式人生 > >ArcEngine -- 載入本地離線地圖資料

ArcEngine -- 載入本地離線地圖資料

實現本地離線地圖功能,主要分為兩個方面:
1. 製作離線地圖包
2. ArcEngine載入離線地圖

在ArcGIS中,”.tpk”檔案提供了離線地圖包的功能,它是一個rar格式的壓縮檔案,裡面封裝了所需的地圖資料資源。所以問題就變成了,如何製作tpk離線地圖包,以及使用ArcEngine載入“.tpk”檔案並顯示在地圖中。

如何製作tpk離線地圖包

關於tpk離線地圖包的建立,使用ArcMap軟體就可以輕鬆實現。網上資源實在是太多了,這裡就不囉嗦了。貼上兩個連結供大家參考。

ArcEngine中載入離線地圖

ArcEngine載入“.tpk”檔案,有一個不常用的介面非常重要,叫 IPackage,這個介面只有一個方法“UnPack”,也就是解壓縮。它將“.tpk”檔案解壓縮之後,返回一個壓縮後的路徑。而我們只需要把這個路徑下面的“Layers.lyr”檔案定位到,就可以使用ArcEngine的MapControl來載入了。

程式碼如下:

public void open()
{
    OpenFileDialog ofd = new OpenFileDialog();
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        string filename = ofd.FileName;
        string layerPath = GetLayerFromTilePackage(filename);
        this.MapControl.AddLayerFromFile(layerPath);
        this.MapControl.ActiveView.Refresh();
    }
}

public
static string GetLayerFromTilePackage(string path) { if (System.IO.File.Exists(path) == false) return null; string unpackPath = ""; IPackageFile pkFile = new PackageFileClass(); pkFile.Unpack(path, ref unpackPath); // Set the path for where the layerfile is located on disk
return unpackPath + "\\Layers.lyr"; }

這裡寫圖片描述

我這裡的地圖切片的縮放級別沒有設定很多,所以這個資料看起來有鋸齒。想要更好的顯示效果,製作tpk離線地圖包的時候把縮放級別設定深一點就行了。