ArcGIS 10.2移动产品的离线功能
2015-04-21 10:28
429 查看
ArcGIS移动产品开发包Android和iOS 10.2版于前段时间正式发布,除了众所周知的强劲的离线支持,新版本中还有哪些激动人心的增强呢?请看“新特性系列博客”为您揭秘。
ArcGIS RuntimeSDK 10.2 版本发布已经有了一段时间,其中,以beta的方式提供了一系列离线的功能,最吸引大家的莫过于离线数据的使用了。本博文将为您详细解读ArcGIS 10.2的离线数据,以及如何在移动端使用离线的Geodatabase数据库。
1、桌面模式
Esri在ArcGIS 10.2.1的桌面产品中提供了专门的工具来制作Runtime Geodatabase,内容可以是要素、表格数据、切片缓存、网络数据集,用来实现离线的数据、离线的地理编码和离线的路径分析等功能。桌面模式适合单用户场景,创建的离线数据目前为只读型,可用来进行展示和查询。
2、服务模式
即数据被发布成要素服务,用户可从服务器上下载部分或全部的数据并保存为一个Runtime Geodatabase,用来进行离线应用;该模式适合大量用户同时工作的场景。
1、 在ArcMap中选择Customize->ArcMapOptions,在弹出的对话框中选择“Sharing”选项卡,勾选中“Enable ArcGIS Runtime Tools”;
2、 在打开的地图文档中加入要使用的数据,并保存好地图文档;
3、 选择File->ShareAs->Runtime Content菜单项,即可打开Runtime Content制作工具,如下图所示,其中:
Ÿ Runtime Content:设置生成的Geodatabase数据库文件的路径;
Ÿ Feature and tabular data:将当前地图文档中的要素和表格数据导出,用来进行离线的浏览和查询使用;导出时有两个选项:
Include feature and Tabular data for Read-only reference:可导出当前文档中的所有要素图层和表格,但导出的数据在ArcGIS Runtime App中是只读的;如果勾选了“Optimize size for view-only”选项,则导出的数据库文件的大小会进行优化,以便在app中快速的展现。
Do not include feature and tabular data:不导出任何要素和表格。
Ÿ Basemap:如果地图文档中包含basemap layer,则可用来创建切片缓存;
Ÿ NetWork Data:如果地图文档中包含网络数据集或者网络分析图层,可导出该数据进行离线的路径分析功能。需要使用ArcGIS 10.0及以上的版本生成的网络数据集;
Ÿ Locator:用来创建离线的地理编码数据,需要使用ArcGIS 10.0及以上的版本生成的locator;
4、 设置好各个参数之后,点击右上角的“Share”,即可生成Runtime Geodatabase。工具会在指定的目录下生成一个geodatabase数据库文件,可将其拷贝到移动端进行使用。
参数设置
正在进行导出
导出一个geodatabase数据库文件
Tips:
1、只支持简单要素、表格、关系类、locators和网络数据集,其它类型的数据暂不支持;
2、不支持多个workspace中的数据,导出的数据需属于同一workspace;
3、导出时会对将数据投影到地图文档的坐标参考中,如果地图文档中含有basemap layer,则坐标参考以basemap
layer为准;
4、basemap因为制作了缓存切片,因此显示会比其它的图层都要快速,但生成basemap的时间会比其它数据稍长。basemap不能进行查询,只用来进行展示和浏览。
2、Feature Service要具备同步的能力
包括Global IDs的数据集
关系类和附件必须使用一个全局ID主键(如果有附件的话)
通过GeodatabaseTask获取FeatureService服务信息
通过Geodatabase创建本地Geodatabase数据库
数据下载所需的参数类GenerateGeodatabaseParameters
通过GeodatabaseStatusCallback类获取数据下载和创建数据库的相关状态
通过CallbackListener<Geodatabase>回调函数处理下载的数据,我们可以在这里将下载的数据显示到地图上。
下载的数据都以FeatureTable表的形势存储在本地数据库中。
上述代码中的downloadData方法的输入参数是要素服务的url,当弹出对话框之后,创建了GeodatabaseTask对象和CallbackListener监听,该监听有以下两个方法:
onError:该方法在创建对象失败时调用,可在此加入日志跟踪等代码;
onCallback:创建对象成功时调用,可将创建本地geodatabase的代码写在其中。如这里我们创建了createGeodatabase方法,用来传递参数,创建离线的geodatabase数据库文件,示例代码如下:
从代码中可以看出,传递的参数主要包括:
geodatabase中包含的图层,即可指定下载哪些图层;
图层的范围,即可指定数据的下载范围;
Geodatabase的空间参考;
是否返回附件;
同步方式,可选择一次同步一个图层,或者同步所有图层;
图层过滤信息等;
使用GenerateGeodatabaseParameters类来传递这些参数,这个类有多个构造函数,用户可以根据需要进行选择。之后,我们创建了CallbackListener监听来处理geodatabase创建成功和失败的情况。另外,还创建了GeodatabaseStatusCallback来检查创建的过程,当geodatabasetask更新的时候,执行statusUpdated方法,有效的更新状态可存储在枚举变量GeodatabaseStatusInfo.Status中,最后将创建的geodatabase的名称和路径返回:
GeodatabaseTask.submitGenerateGeodatabaseJobAndDownload()方法在幕后做了很多工作,它向服务器请求当前服务的当前状态,下载数据到指定目录下,并存储在geodatabase中。
可通过示例向导加载“CreateRuntime Geodatabase Android SDK”查看相应源码。
原文地址:
【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【上:桌面模式】
ArcGIS RuntimeSDK 10.2 版本发布已经有了一段时间,其中,以beta的方式提供了一系列离线的功能,最吸引大家的莫过于离线数据的使用了。本博文将为您详细解读ArcGIS 10.2的离线数据,以及如何在移动端使用离线的Geodatabase数据库。
ArcGIS 10.2中的离线模式
ArcGIS 10.2提供了两种离线模式,分别称为“服务模式”和“桌面模式”。1、桌面模式
Esri在ArcGIS 10.2.1的桌面产品中提供了专门的工具来制作Runtime Geodatabase,内容可以是要素、表格数据、切片缓存、网络数据集,用来实现离线的数据、离线的地理编码和离线的路径分析等功能。桌面模式适合单用户场景,创建的离线数据目前为只读型,可用来进行展示和查询。
2、服务模式
即数据被发布成要素服务,用户可从服务器上下载部分或全部的数据并保存为一个Runtime Geodatabase,用来进行离线应用;该模式适合大量用户同时工作的场景。
桌面模式
ArcGIS 10.2.1的桌面中提供了专门的工具来制作Runtime Geodatabase,可以整合地图文档中的要素图层、底图、网络数据集和地址定位器等数据,并将其打包成一个单独的Geodatabase数据库文件,可在ArcGIS Runtime SDK中使用,实现数据和功能的离线。使用步骤如下:1、 在ArcMap中选择Customize->ArcMapOptions,在弹出的对话框中选择“Sharing”选项卡,勾选中“Enable ArcGIS Runtime Tools”;
2、 在打开的地图文档中加入要使用的数据,并保存好地图文档;
3、 选择File->ShareAs->Runtime Content菜单项,即可打开Runtime Content制作工具,如下图所示,其中:
Ÿ Runtime Content:设置生成的Geodatabase数据库文件的路径;
Ÿ Feature and tabular data:将当前地图文档中的要素和表格数据导出,用来进行离线的浏览和查询使用;导出时有两个选项:
Include feature and Tabular data for Read-only reference:可导出当前文档中的所有要素图层和表格,但导出的数据在ArcGIS Runtime App中是只读的;如果勾选了“Optimize size for view-only”选项,则导出的数据库文件的大小会进行优化,以便在app中快速的展现。
Do not include feature and tabular data:不导出任何要素和表格。
Ÿ Basemap:如果地图文档中包含basemap layer,则可用来创建切片缓存;
Ÿ NetWork Data:如果地图文档中包含网络数据集或者网络分析图层,可导出该数据进行离线的路径分析功能。需要使用ArcGIS 10.0及以上的版本生成的网络数据集;
Ÿ Locator:用来创建离线的地理编码数据,需要使用ArcGIS 10.0及以上的版本生成的locator;
4、 设置好各个参数之后,点击右上角的“Share”,即可生成Runtime Geodatabase。工具会在指定的目录下生成一个geodatabase数据库文件,可将其拷贝到移动端进行使用。
参数设置
正在进行导出
导出一个geodatabase数据库文件
Tips:
1、只支持简单要素、表格、关系类、locators和网络数据集,其它类型的数据暂不支持;
2、不支持多个workspace中的数据,导出的数据需属于同一workspace;
3、导出时会对将数据投影到地图文档的坐标参考中,如果地图文档中含有basemap layer,则坐标参考以basemap
layer为准;
4、basemap因为制作了缓存切片,因此显示会比其它的图层都要快速,但生成basemap的时间会比其它数据稍长。basemap不能进行查询,只用来进行展示和浏览。
服务模式
服务模式中,需要先将数据发布成要素服务。发布要素服务的方法和步骤与ArcGIS 10.1一致,不过要想通过服务进行数据的下载和同步等操作,服务需要提供一些能力,并且数据也需要相关的设置。服务配置
1、服务需要具备FeatureService能力
2、Feature Service要具备同步的能力
数据需求
在数据集上启用归档包括Global IDs的数据集
关系类和附件必须使用一个全局ID主键(如果有附件的话)
数据下载
服务发布好之后,就可以使用ArcGISRuntime SDK来下载数据、实现离线功能了。下载关键点如下:通过GeodatabaseTask获取FeatureService服务信息
通过Geodatabase创建本地Geodatabase数据库
数据下载所需的参数类GenerateGeodatabaseParameters
通过GeodatabaseStatusCallback类获取数据下载和创建数据库的相关状态
通过CallbackListener<Geodatabase>回调函数处理下载的数据,我们可以在这里将下载的数据显示到地图上。
下载的数据都以FeatureTable表的形势存储在本地数据库中。
Android API示例
以ArcGIS for AndroidAPI为例,采用服务模式,使用API中暴露的GeodatabaseTask类来下载数据生成Geodatabase;重载的GeodatabaseTask类的构造函数有一个CallbackLister监听,该监听是一个后台任务,用来从服务上下载数据并存储在移动端本地的geodatabase中,示例代码如下:/** * Create the GeodatabaseTask from the feature service URL w/o credentials. */ private void downloadData(String url) { Log.i(TAG, "Create GeoDatabase"); // create a dialog to update user on progress dialog = ProgressDialog.show(mMapView.getContext(), "Download Data", "Create local runtime geodatabase"); dialog.show(); // create the GeodatabaseTask gdbTask = new GeodatabaseTask(url, null, new CallbackListener() { // Handle errors public void onError(Throwable e) {Log.e(TAG, "Error occured creating Geodatabase Task"); dialog.dismiss(); } // Handle success public void onCallback(FeatureServiceInfo objs) { // create the geodatabase createGeodatabase(); } }); } |
onError:该方法在创建对象失败时调用,可在此加入日志跟踪等代码;
onCallback:创建对象成功时调用,可将创建本地geodatabase的代码写在其中。如这里我们创建了createGeodatabase方法,用来传递参数,创建离线的geodatabase数据库文件,示例代码如下:
/** * Set up parameters to pass the the submitTask() method. A * CallbackListener is used for the response. */ private static void createGeodatabase() { // set up the parameters to generate a geodatabase GenerateGeodatabaseParameters params = new GenerateGeodatabaseParameters( layerIds, mMapView.getExtent(), mMapView.getSpatialReference(), returnAttachments, syncModel, mMapView.getSpatialReference()); // a callback which fires when the task has completed or failed. CallbackListener gdbResponseCallback = new CallbackListener() { public void onCallback(final Geodatabase gdb) { Log.i(TAG, "Geodatabase is: " + gdb.getPath()); dialog.dismiss(); // update map with local feature layer from geodatabase updateFeatureLayer(gdb.getPath()); } public void onError(Throwable e) { Log.e(TAG, "Error creating geodatabase"); dialog.dismiss(); } }; // a callback which updates when the status of the task changes GeodatabaseStatusCallback statusCallback = new GeodatabaseStatusCallback() { public void statusUpdated(GeodatabaseStatusInfo status) { Log.i(TAG, status.getStatus().toString()); } }; // create the fully qualified path for geodatabase file localGdbFilePath = createGeodatabaseFilePath(); // get geodatabase based on params submitTask(params, localGdbFilePath, statusCallback, gdbResponseCallback); } |
geodatabase中包含的图层,即可指定下载哪些图层;
图层的范围,即可指定数据的下载范围;
Geodatabase的空间参考;
是否返回附件;
同步方式,可选择一次同步一个图层,或者同步所有图层;
图层过滤信息等;
使用GenerateGeodatabaseParameters类来传递这些参数,这个类有多个构造函数,用户可以根据需要进行选择。之后,我们创建了CallbackListener监听来处理geodatabase创建成功和失败的情况。另外,还创建了GeodatabaseStatusCallback来检查创建的过程,当geodatabasetask更新的时候,执行statusUpdated方法,有效的更新状态可存储在枚举变量GeodatabaseStatusInfo.Status中,最后将创建的geodatabase的名称和路径返回:
/* *Request database, poll server to get status, and download the file */ private static void submitTask(GenerateGeodatabaseParameters params, String file, GeodatabaseStatusCallback statusCallback, CallbackListener gdbResponseCallback) { // submit task gdbTask.submitGenerateGeodatabaseJobAndDownload(params, file,statusCallback,gdbResponseCallback); } |
可通过示例向导加载“CreateRuntime Geodatabase Android SDK”查看相应源码。
原文地址:
【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【上:桌面模式】
【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【下:服务模式】
相关文章推荐
- 【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【上:桌面模式】
- 【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【下:服务模式】
- 10.2.2移动产品离线功能等详解----暨4月8日移动《在离线一体化》公开课Q&A
- 【2013Esri全球用户大会精彩看点】ArcGIS 10.2移动产品新特性
- 【2013Esri全球用户大会精彩看点】ArcGIS 10.2移动产品新特性
- 10.2.2移动产品离线功能等具体解释----暨4月8日移动《在离线一体化》公开课Q&A
- 【2013Esri全球用户大会精彩看点】ArcGIS 10.2移动产品新特性
- 【10.2移动新特性】好用的Application Framework for ArcGIS Android,简化制图和地理编码流程!
- 【移动产品】ArcGIS SDK for Android的下个版本将会是什么样子?
- ArcGIS 10.2 JavaScript API本地部署离线开发环境
- 【移动产品】ArcGIS Runtime SDK for Android v1.1.1发布
- 移动位置应用的推动者——ArcGIS移动产品家族
- 【移动产品】ArcGIS for Android 1.5发布
- ArcGIS 10.2 JavaScript API本地部署离线开发环境
- 【移动产品】ArcGIS for Windows Mobile 3.1发布
- 【移动产品】ArcGIS Runtime SDK for iOS v2.2.1发布
- ArcGIS 10.1系列产品 升级安装至 ArcGIS 10.2
- 【10.2移动新特性】Android 10.2 API简化,同样的功能,更少的代码!
- ArcGIS 10.2 JavaScript API本地部署离线开发环境
- 【移动产品】ArcGIS for Windows Mobile 10.1更名,并将在四月进行全面测试