ArcEngine — 加载本地离线地图数据
目录
实现本地离线地图功能,主要分为两个方面:
1. 制作离线地图包
2. ArcEngine加载离线地图
在ArcGIS中,”.tpk”文件提供了离线地图包的功能,它是一个rar格式的压缩文件,里面封装了所需的地图数据资源。所以问题就变成了,如何制作tpk离线地图包,以及使用ArcEngine加载“.tpk”文件并显示在地图中。
如何制作tpk离线地图包
关于tpk离线地图包的创建,使用ArcMap软件就可以轻松实现。网上资源实在是太多了,这里就不啰嗦了。贴上两个链接供大家参考。
- http://www.cnblogs.com/xixihuang/p/6043109.html
- http://blog.csdn.net/mytudousi/article/details/33347249
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离线地图包的时候把缩放级别设置深一点就行了。
转载自:https://blog.csdn.net/deirjie/article/details/77146048