ArcEngine -- 載入本地離線地圖資料
阿新 • • 發佈:2019-02-19
實現本地離線地圖功能,主要分為兩個方面:
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離線地圖包的時候把縮放級別設定深一點就行了。