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 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文件。
- string myMpkFilePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Data\\Map.tpk";
- this.Map.Layers.Add(new ArcGISLocalTiledLayer(myMpkFilePath));
就这么简单。
ArcGIS中的 .tpk数据的更多相关文章
- ArcGIS中文件共享锁定数据溢出 这个方法不行,建议用gdb,不要用mdb
ArcGIS中文件共享锁定数据溢出 (2011-11-24 15:52:41) 转载▼ 标签: 杂谈 分类: GIS 文件共享锁定数溢出.(Error 3052)1. Access数据库,同时操作大量 ...
- arcgis中DEM如何生成等高线
地形图指比例尺大于1∶100万的着重表示地形的普通地图(根据经纬度进行分幅,常用有1:100万,1:50万,1比25万,1:15万,1:10万,1:5万等等).由于制图的区域范围比较小,因此能比较精确 ...
- ArcGIS Engine中加载数据
ArcGIS Engine中加载数据 http://blog.csdn.net/gisstar/article/details/4206822 分类: AE开发积累2009-05-21 16:49 ...
- ArcGIS中数据之间的转换接口IFeatureDataConverter2
之前我写过一篇文章关于ArcGIS各种空间数据格式之间转换的通用方法:ArcGIS中sde,mdb,shp数据之间的转换.这里使用的主要接口方法就是用到了IFeatureDataConverter接口 ...
- 介绍ArcGIS中各种数据的打开方法——mxd(地图文档)
1.加载地图文档 在ArcGIS中,以mxd作为扩展名的文件叫地图文档. 地图文档中只是包含图层的引用,即存储当前地图的图层路径.符号.状态.修饰等信息,并不存储真实的数据层. ArcGIS Map中 ...
- 介绍ArcGIS中各种数据的打开方法——tin(栅格文件)
4.加载栅格文件 栅格数据是GIS中重要的数据源之一,如卫星图像.扫描的地图.照片等. 栅格数据常见的格式有Bmp.Tiff.Jpg.Grid等. 添加栅格数据主要使用Rasterlayer 组件类, ...
- ArcGIS中的坐标系统定义与投影转换【转】
ArcGIS中的坐标系统定义与投影转换 坐标系统是GIS数据重要的数学基础,用于表示地理要素.图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正确的显示其位置.方向和距离,缺少坐标系统 ...
- arcgis如何制作DEM数据
DEM描述的是地面高程信息,它在测绘.水文.气象.地貌.地质.土壤.工程建设.通讯.军事等国民经济和国防建设以及人文和自然科学领域有着广泛的应用.如在工程建设上,可用于如土方量计算.通视分析等:在防洪 ...
- 【转】+【举例】ArcGIS中的坐标系统定义与投影转换
背景知识: UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的.虽然我们仍然将其看作与"高斯-克吕格"相似的坐标系统,但实际上 ...
随机推荐
- 黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile
------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- java语言国际化--ResouceBundle、struts
一.Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...
- 记一次解决layui 的bug - layer.open 与 layui渲染问题
场景是这样的,通过layer打开一个弹窗,里面放置一个表单,表单是用layui来渲染的. 当弹窗完成之后,我需要渲染表单中的一些内容.譬如laydate. layer.open({ type: 1, ...
- H5 input 聚焦 置顶
myFocus (e) { this.active = true function getElementTop(element){ try { var actualTop = element.offs ...
- struts2 的国际化
一.使用步骤 1)写资源文件,资源文件名命名规范和之前的讲的一致,有疑问请参考java开发中国际化 2)配置,在 struts.xml 中使用常量进行加载 struts.custom.i18n.res ...
- JS - caller,callee,call,apply
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments : 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的
混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集. 由于“system.data.sqlite.dll”不完整造成的. 在 ...
- 基于jQuery动画二级下拉导航菜单
春节回来给大家分享一款基于jQuery动画二级下拉导航菜单.鼠标经过的时候以动画的形式出现二级导航.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id=" ...
- mysql5.5和5.6版本间的坑
mysql 5.5 int类型 设置不为null,无填充,添加新数据会自动填充0 而5.6同样的配置新建数据没值时,不让添加 5.5 datetime 不能设置默认时间(可以通过某些复杂的方式,这里说 ...
- sqlite笔记(akaedu)
1.创建sql表create table student(id integer primary key, name text, score integer): 2.插入一条记录insert into ...