ArcGIS移动客户端业务数据离线方案的讨论.doc

ArcGIS移动客户端业务数据离线方案的讨论.doc

ID:56825528

大小:843.50 KB

页数:11页

时间:2020-07-15

ArcGIS移动客户端业务数据离线方案的讨论.doc_第1页
ArcGIS移动客户端业务数据离线方案的讨论.doc_第2页
ArcGIS移动客户端业务数据离线方案的讨论.doc_第3页
ArcGIS移动客户端业务数据离线方案的讨论.doc_第4页
ArcGIS移动客户端业务数据离线方案的讨论.doc_第5页
资源描述:

《ArcGIS移动客户端业务数据离线方案的讨论.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ArcGIS移动客户端离线底图的几种解决方案移动GIS中,通常将数据分为两大类:basemaplayer和operationallayer。前者是指漫游或导航时起参考作用的图层,这些图层内容通常不会变化,只起到视觉辅助作用,称为底图图层;后者是指存储GIS数据的图层,比如可通过这些图层来提供属性/空间查询操作,或者对其内容进行编辑,然后与服务器端进行同步,称为业务图层。    目前ArcGIS移动产品有5种,基于WindowsMobile平台的ArcPad和ArcGISMobile,这两个产品已经很成熟了,都有各自的离线缓存格式,其中ArcGISMobile从10

2、版本开始,可以直接读取ArcGISServer缓存地图服务的切片文件做为basemaplayer,支持exploded和compact两种格式。$q9l.T8e9l!k'{  相对于以上两个老牌移动产品,三个刚出道的小弟ArcGISforiOS,ArcGISforAndroid和ArcGISforWindowsPhone就走了不同路线:依赖于ArcGISServer的REST服务。因此几乎所有操作,包括显示地图,都需要用到ArcGISServer发布的各种服务。这三个产品的离线功能将来肯定是会有的,但具体的时间表还无法确定。  针对ArcGISforiOS/And

3、roid/WindowsPhone,本文提出3种可行的离线底图(basemaplayer)的解决方案,供各位参考。以ArcGISforWindowsPhone为例。1、ArcGISServer地图服务的Exploded格式缓存文件  ArcGISAPIforWindowsPhone中,提供了ArcGISTiledMapServiceLayer用来加载ArcGISServer发布的缓存地图服务,它的原理是Map控件计算好需要加载的切片的row,col,level参数,利用ArcGISTiledMapServiceLayer里的GetTileUrl方法提供如何获得指定

4、参数的切片文件,最后拼接成完整的地图。0]&@.V!E!K&T  因此我们可以通过继承ArcGISTiledMapServiceLayer的父类,TiledMapServiceLayer或TiledLayer,来实现自己的自定义图层,比如用它来加载GoogleMaps,天地图等各种地图。加载这些在线地图都是通过重写GetTileUrl()方法来实现的。  N6v$c  q/o6l5L(H  对于已经存放在硬盘上的缓存文件,该如何加载呢?这几个图层还有一个方法,GetTileSource。这个方法有一个onCompleteaction,可以传入ImageSource

5、类型的参数,它比GetTileUrl来的更直接。其实GetTileSource方法中调用了GetTileUrl方法的结果(一个获得tile的url字符串),利用这个字符串向服务器端发送请求,请求回来的结果就是切片图片的二进制流,再将这个二进制流形成ImageSource,通过onComplete方法返回。  J&H%Z-x,x)z  所以我们可以抛开GetTileUrl,直接重写GetTileSource方法,来根据row,col,level参数,读取地图服务的缓存文件。首先将Exploded格式的地图服务缓存文件拷贝到手机中:  包含conf.cdi(ArcGI

6、SServer10版本中才有,记录了缓存的全图范围)和conf.xml文件的好处是,我们可以在代码中读取这两个文件来动态生成我们的TilingScheme,以完成图层初始化的工作。从配置文件中读取参数后,就可以重写GetTileSource方法了。部分代码如下:1.  1:protectedoverridevoidGetTileSource(intlevel,introw,intcol,ActiononComplete)1.  2:      {2.  3:        stringf=stri

7、ng.Empty;3.  4:        if(_cacheTileFormat.ToLower().Contains("png"))4.  5:            f=".png";5.  6:        elseif(_cacheTileFormat.ToLower().Contains("jpeg")

8、

9、_cacheTileFormat.ToLower().Contains("jpg"))6.  7:            f=".jpg";7.  8:        else8.  9:            thrownewException

10、("切片格

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。