1、前言
利用ArcGIS桌面提供的share as -> ArcGIS Runtiem Content工具在导出.geodatabase文件时经常会发生数据缺失问题,比如数据表中数据有4w多条,但是导出成Geodatabase时,有时候就会发现数据只有1w多条,数据丢失,那这个数据去哪了呢?为啥会有丢失?之前也是没有深究过这样一个问题,也不是很清楚确切的问题点在哪里,就是简单的知道将当前可视区域覆盖全部地图,就可以将数据全部导出了,大概猜测是可视区域的问题。今天针对这块仔细研究了下,做个简单的总结。
2、问题研究
在ArcMAP中导出.geodatabase格式的矢量数据一般来说共有两种方式:(好像还有Python脚本生成具体没研究过)
- 方式一:利用File -> Share As ->ArcGIS Runtime Content导出
- 方式二:使用工具箱中的System Toolboxes -> Data Management Tools ->Package -> Create Runtime Content
这两种方式之间有什么区别呢?
方式一:导出范围默认为当前可视区域。 方式二:导出范围默认为全图,可以依据Extent范围选择。
对于方式一笔者做了以下测试:
首先全图范围如图1所示,将地图放大到图2的情况,保存地图文档(.mxd)。接着打开File -> Share As ->ArcGIS Runtime Content工具,在弹出的窗口中,ArcGIS Runtime Content选项卡内设置文件存储路径,Feature and Tabular Data选项卡内设置设置导出所有数据选项(全部导出)。导出完成之后,我们会获得一个后缀为.geodatabase的文件。该文件可以利用工具箱内的Copy Runtime Geodatabase to File Geodatabase工具导出成FileGDB,将导出结果与原始结果叠加得到了如图3的显示效果,这也说明了为啥我们使用方式一导出数据经常会有数据缺失的情况。原因是以当前可视区域做了限制。
对于方式二,设置过程比较简单按照说明提示设置就好,其中有一个需要注意的参数就是Extent范围参数(指定用于选择或裁剪要素的范围)。
- Default——默认 - 该范围将基于所有参与图层的最大范围设定。这是默认设置。
- Union of Inputs——输入的并集 - 所有输入的最大范围。
- Insersection of Input——输入的交集 - 所有输入共用的最小范围。
- As Specified Below——如下面的指定 - 指定最小和最大范围值。
- Same as Display——与显示相同 - 范围等于数据框或可见显示范围。
3、问题总结
方式一:利用File -> Share As ->ArcGIS Runtime Content导出当前可视区域内要素。
方式二:使用工具箱中的System Toolboxes -> Data Management Tools ->Package -> Create Runtime Content默认导出所有要素,具体可以更具Extent范围属性控制。