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離線地圖包的時候把縮放級別設置深一點就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章