支持采用高精度空间参考来存储坐标是 ArcGIS 9.2 中引入的新功能。 与低精度相比,高精度存储可将坐标更加紧密地存储在一起,并能扩展数据集中 x,y,z,m 的域(可存储的区域)。 为了利用上述优势,在多数情况下,建议您将数据转换为高精度。 但在 ArcGIS 中,具有低精度空间参考的数据仍然可以如以往一样使用。 如果需要向尚未升级的客户端传送数据或者您对现有情况比较满意,则可暂时继续使用低精度空间参考。
在 ArcGIS 9.2 以及更高版本中,通过使用未升级的 9.2 版之前的地理数据库,您可以继续创建低精度数据集。 如果在此地理数据库中创建新的要素类或要素数据集,或者向其中导入数据,则新数据将使用低精度空间参考。 如果 9.2 版本之前的地理数据库已升级,则在升级空间参考之前,现有要素数据集仍为低精度。 因此,可以在现有低精度要素数据集中创建新的低精度要素类。 在使用 ArcGIS 9.2 或更高版本创建的任意新地理数据库或任何已升级到 9.2 或更高版本的地理数据库中,无法创建低精度独立要素类或要素数据集。
在指定低精度空间参考时,必须设置 x,y 分辨率和域。 较大的域必须采用较大的分辨率值。 相应地,较低的分辨率值需要较小的域,但域可能会因过小而无法用于许多投影坐标系,例如通用横轴墨卡托投影 (UTM) 或美国国家平面坐标系。 因此,在使用低精度空间参考时,必须仔细权衡域和分辨率值之间的关系。
本主题介绍了如何设置低精度空间参考的 x,y 分辨率和域。 第一部分介绍了分辨率的基础知识。 第二部分介绍了计算数据分辨率值的不同方法。
关于 x,y 分辨率和域
低精度地理数据库以 4 字节正整数(最大值为 2,147,483,647)的形式存储坐标。 看似只能使用一个整数存储 1 英尺或 1 米的精度,而实际上并非如此;您可以决定 4 字节整数单位表示的内容。 如果要存储的精度为米,则可以得到 21.4 亿米(大约是地球周长的 53 倍)。 或者,您可能决定存储厘米,这种情况下,您可以得到 21.4 亿厘米(大约是地球周长的一半)。 分辨率值表示两个坐标值之间所允许的最小间距。 分辨率值用来将小数值转换为地理数据库中存储的整数。 即使使用的是最低级别的 ArcObjects API,地理数据库也会进行动态转换,从而允许您仅使用小数。
下表所示为坐标之间的最小间距、坐标系单位以及等效分辨率值的示例。
坐标之间的最小间距 | 分辨率 | 坐标系单位 |
---|---|---|
1 厘米 | 0.01 | 米 |
1 毫米 | 0.001 | 米 |
2 厘米 | 0.02 | 米 |
1 英寸 | 0.083333 | 英尺 |
实际上,地理数据库在将小数值转换为整数时需要的操作更多。 在转换过程中,还将对基于小数的坐标值进行平移。 仅当手动计算分辨率和域时才需考虑该平移。
分辨率和 x,y 值域之间的关系成正比。 由于有 21.4 亿个整数,因此域具有外边界。 随着分辨率值逐渐变小,域的范围也会变得更小。 当尝试在域外添加要素时,会收到以下错误消息:“坐标或测量值超出范围。” 需要注意的一点是,不要将分辨率值设置得过小,这会导致您无法为整个研究区域添加要素。 但是,由于有大约 21.4 亿个整数可以使用,因此大多数情况下您只需设置适当的分辨率值即可避免此问题。 例如,您可以使用 1 米的分辨率存储整个世界,但使用 1 厘米的分辨率只能存储一半的世界。 通过基于十进制度的地理坐标系(如 NAD83),您可以使用 1.9 厘米的分辨率在单个要素类中存储整个世界。
如何设置 x,y 分辨率和域
指定 x,y 分辨率和域之前,需考虑以下三个方面:
- 该分辨率能否保留数据采集的精度?
- 域能否覆盖整个研究区域范围?
- 对于企业级地理数据库,该分辨率能否满足最小化存储空间和最大化性能的要求?
您不必总是担心这些问题。 很多情况下,您可以应用由软件生成的默认设置来帮您处理这些问题。 有以下三种不同方法。 选择最适合您的应用的一种方法。
A. 导入数据时使用默认设置。
B. 指定域并接受默认分辨率。
C. 指定分辨率和域。
方法 A:导入数据时使用默认设置
这是最简单的方法,因为在导入数据时,您只需使用生成的默认分辨率和域。 如果您处于以下情况,请使用此方法:
- 至少有一个矢量数据集或一组切片数据集覆盖整个研究区域范围
- 希望研究区域内的分辨率尽可能最小
如果具有覆盖整个研究区域的数据集,则首先导入该数据集,然后接受分辨率和域的默认值。 使用默认值将创建一个包含所有要素的域,其可扩展的空间很小。 如果具有共同覆盖整个研究区域的多个切片数据集,则使用“创建空间参考”工具计算包含所有数据集的域。 然后,使用该域创建一个空要素类,并将切片数据加载到其中。
通过此方法,默认域内的分辨率值将实现最小化。 由于得到的分辨率可能会很小,如果您需要获得企业级地理数据库的最佳性能,这可能不是最佳方法。 但是,此方法可确保域能够容纳所有数据,并对数据使用可能的最小分辨率。
此后创建数据集或向地理数据库导入数据集时,请使用根据此原始要素类计算得出的空间参考。 创建新要素类或要素数据集时,您可以从此要素类中导入该空间参考以执行此操作。 您也可以设定自己的地理处理设置以使用此要素类中的空间参考。具体步骤如下:
- 在 ArcCatalog 或 ArcMap 中,单击地理处理菜单,然后单击环境。
- 展开输出坐标。
- 对于“输出坐标”,单击如下面的指定。
- 单击文本框旁边的文件夹图标。
- 在“XY 坐标系”选项卡上,单击导入。
- 导航到已导入地理数据库中的第一个要素类并选择此要素类。
- 单击添加。
- 在打开的所有对话框中单击确定。
完成这些步骤后,所有后续地理处理操作(包括由此计算机的当前用户所执行的导入新数据操作)都将使用此空间参考。
方法 B:指定域并接受默认分辨率
此方法用于确定研究区域的域,以及最小化该研究区域内的分辨率。 如果您处于以下情况,请使用此方法:
- 没有可覆盖研究区域范围的单个矢量数据集,但可以在地图上定义研究区域
- 希望研究区域内的分辨率尽可能最小
此方法的结果与方法 A 的结果完全相同;因此,该方法具有相同的优缺点。 您必须知道要使用的坐标系才能开始。 有关选择坐标系的信息,请参阅 ArcGIS Desktop 帮助中的“地图投影”主题。 如果要使用美国国家平面坐标系或 UTM 坐标系,您可以在 <ArcGIS 安装位置>\ArcGIS\Reference Systems 的 usstpln83 和 utm shapefile 文件中查找定义区域位置的数据。
首先,确定研究区域的域:
- 启动 ArcMap,然后为世界或感兴趣区域添加参考数据。 在以下位置中查找参考数据:
- ESRI Data & Maps CD-ROM(包含在 ArcGIS 中)
- <ArcGIS 安装位置>\ArcGIS\Metadata\Data
- 地理网络
- 将数据框的坐标系设置为要用于新数据集的坐标系。
a. 打开数据框属性。
b. 单击坐标系选项卡。
c. 打开 Predefined 文件夹,然后导航到要使用的坐标系。
d. 单击确定。
- 将地图放大到要用作研究区域的世界部分。
- 使用“绘图”工具栏中的“新建矩形”工具在地图上绘制一个定义新研究区域的矩形。
- 右键单击新建的矩形,然后单击属性。
- 单击大小和位置选项卡。
- 在“锚点”的“位置”下,单击左下角的复选框。
- 将 X 和 Y 文本框中的坐标复制并粘贴到文本文件中。 删除坐标末尾的测量单位。 这些坐标表示研究区域的左下角。
- 在“锚点”的“位置”下,单击右上角的复选框。
- 将 X 和 Y 文本框中的坐标复制并粘贴到文本文件中。 确保删除坐标末尾的测量单位。 这些坐标表示研究区域的右上角。
现在,创建新要素类时即可应用此域:
- 在目录树中,导航到 9.2 或更高版本的地理数据库,右键单击并指向新建,然后单击要素类。
- 输入合适的名称,如 StudyArea。
- 选择要素类型以及是否支持 z 值或 m 值。
- 选择或导入您的坐标系。
- 单击下一步。
- 将文本文件中的坐标复制并粘贴到相应文本框中。 请注意,在您更改域时,分辨率会进行相应调整。
- 单击下一步。
- 向要素类添加任意字段。
- 在“新建要素类”向导中单击完成。
现在您可以从 StudyArea 要素类中为该研究区域中创建的所有其他数据导入空间参考。 也可以设置地理处理环境,以使所有由地理处理操作创建的新数据均使用此空间参考。 有关如何将地理处理环境设置为使用要素类中的空间参考的信息,请参阅方法 A。
方法 C:指定分辨率和域
此方法需要手动计算分辨率和域。 如果希望尽可能地优化企业级地理数据库中低精度数据的性能,请使用此方法。
步骤 1:计算分辨率。
首先,必须计算相应的分辨率。 将分辨率值设置为数据采集的最佳精度的十分之一。 这样可确保无论使用 ArcGIS 如何操作数据(地理处理、拓扑、拓扑容差和几何操作等),都会在地理数据库中保留数据采集精度。 考虑以下示例:
数据采集方法 | 坐标系单位 | 设备精度 | 建议分辨率 |
---|---|---|---|
数字化 1:250,000 地图 | 英尺 | +/-416 英尺 | 1 英尺 |
专业 GPS | 米 | +/-0.5 米 | 0.05 米 |
使用经纬仪进行测量 | 米 | +/- 5 毫米 | 0.0005 米 |
根据使用地理坐标系 (GCS) 的数据计算分辨率稍难一些,因为地球上的角度单位(度)不是始终一致的。 纬度发生变化时,每经度所表示的地面长度也会随之变化。 如果要通过对 GCS 中的数据使用线性单位来计算分辨率,则必须执行一些计算。 如果在角度单位处于最大时计算适当的分辨率,则角度单位较小的区域中将保留更高的精度。 例如,如果在 1 度等于地面上 100 英里的位置处保留 1 米的精度,则在 1 度等于地面上 1 英里的位置处,地理数据库将保留 1 厘米的精度。 在地理坐标系中,赤道处的角度单位最大。 分辨率将是赤道处 1 度的线性长度的倒数。 如上所述,此分辨率值应除以 10 才能适合任意 ArcGIS 处理操作。 可使用以下方程:
分辨率 = 360 / GCS 赤道周长 / 10
例如,GCS_WGS_1984 的周长为 40075016.7 米。 因此
精度 = 360 * 40075016.7 / 10 = 8.9831528 x 10-7
另一种方法是将 GCS 的长半轴乘以每个角度单位的弧度数,即相当于
分辨率 = 1 /(长半轴 * 2π/ 360 * 10)
您可以在目录树中打开 GCS 的属性对话框来查找该技术信息。 如果在 ArcCatalog 树中看不到 Coordinate Systems 文件夹,您可以通过 ArcCatalog 中“ArcCatalog 选项”对话框的“常规”选项卡将坐标系设置为可见。
步骤 2:基于研究区域检查分辨率。
要验证分辨率对于给定研究区域是否有效,将用研究区域宽度和高度(范围)中的较大值除以分辨率。 如果结果小于 2,147,483,647,则在使用所选分辨率的情况下,域可以容纳数据。
尽管数据可包含在域内,但坐标仍可能会落在坐标系边界的外部。 考虑下面以米为地图单位的虚构数据集:
范围 800,000(宽度)除以分辨率 0.0001 等于 800,000,000,该值小于 21.4 亿,因此,数据在域范围内。 但是,研究区域的右上角将为 1,000,000,000x、4,060,000,000y(即 [1,000,000x] / 0.0001 和 [4,060,000y] / 0.0001)。 请注意,y 值在 0 至 21.4 亿范围外约 19 亿个单位处。 要将这些坐标存储到地理数据库中,必须平移域以包含数据。
步骤 3:计算适当的 x,y 最小值。
只有以地图单位标识域的中心之后,才能对其进行平移以包含数据。 这样做的目的是将数据放置在域的中心,以便在必要时数据可向任意方向扩展。 用于平移坐标系的所有计算均使用坐标系单位。
首先,找到整数型域的中心:
2,147,483,647 / 2 = 1,073,741,823
接下来,将其乘以分辨率,从而将中心的单位转换为坐标系单位。 该示例使用分辨率 0.001:
1,073,741,823 * 0.001 = 1,073,741.823
现在即已找到使用坐标系单位的域中心,您需要为域计算新的 x 和 y 最小值。 用于计算域的 x 和 y 最小值的公式如下:
Min X = ([DataMinX + DataMaxX] / 2) - 使用坐标系单位的域中心 Min Y = ([DataMinY + DataMaxY] / 2) - 使用坐标系单位的域中心
使用此等式可获得域的最小坐标,用于将数据中心定位至域中心。 请记住,所有这些计算均使用坐标系单位。 据给定示例数据针对 x 维度检查此方程。
首先,找到数据的中心:
(DataMinX + DataMaxX) / 2 (200,000 + 1,000,000) / 2 = 600,000
接下来,求得数据中心与地理数据库空间中心之间的距离差:
Min X = 600,000 - 1,073,741.824 = -473,741.824
由于该值是负数,域将向左平移。 请记住,平移的对象是域,而不是数据。 两个维度上均要计算平移,因此您需要对 y 坐标重复该过程。 如果要使企业级地理数据库性能达到最优,请不要将域居中。 相反,将域的最小值设置为尽可能接近数据。
步骤 4:创建数据集。
计算出分辨率和 x、y 的最小值后,即可以创建要素数据集或独立要素类。 第一次使用“新建要素类”或“新建要素数据集”向导进行创建时,请取消选中“接受默认分辨率和域范围”复选框,然后输入计算所得的分辨率和 x、y 最小值。 将自动计算 x 最大值和 y 最大值。 对于后续导入或创建的所有数据,您只需导入此空间参考即可。 也可以设置地理处理环境,以使所有由地理处理操作创建的新数据均使用此空间参考。 有关如何将地理处理环境设置为使用要素类中的空间参考的信息,请参阅方法 A。
指定 z 和 m 分辨率和域
z 和 m 的域比 x 和 y 的域更容易计算。 检查数据,然后输入最小值的最低值和分辨率以保证其精度。 可使用 x,y 坐标的精度计算方式来计算 z 和 m 的分辨率。 与 x,y 坐标相同,您有 2,147,483,647 个整数可以使用。 由于可以根据数据设置最小绝对值,所以通常无需将 z 和 m 值域放置在数据中心。
计算 z 值域的最小值时,可以使用地球上的最低点(-11,033 米 - 马里亚纳海沟)。 通常,测量值坐标为正数,因此使用最小值 0 即可。 也可以将最小 m 值域设置为具有一个较小的负偏移以处理负值,例如,“校准”等操作期间外推测量值时生成的负值。 这样,您可以在以后校正这些负值,而不是在外推时将其拒绝。