“投影”的工作原理
此主题仅适用于 ArcInfo。
投影工具支持在支持的地图投影列表中所列出的任意两种投影之间进行坐标变换。地图投影可用于在地图(平面)上表示地球(椭球体)表面上的区域。投影可以更准确地将地图上的位置与其在地球上的真实位置等同起来。
但是,以二维形式表示三维表面会使某些参数(形状、面积、距离或方向)发生变形,而不同的投影会引起不同类型的变形。投影的各种特征使投影对某些应用来说很有用,但对于另外一些应用来说则没有什么意义。
对各种投影所需投影参数的定义和介绍
椭圆体的长半轴
此参数用地球最宽部分的半径来定义地球大小。Clarke 在 1866 年所测量的值 6,378,206 米为默认值(有关其他轴测量值,请参阅旋转椭球体和球体)。
椭圆体的短半轴
此参数指的是地球最窄部分的半径。Clarke 测量的值 6,356,584 米为默认值。
使用 Spheroid 子命令指定椭圆体或使用 Parameters 子命令设置这些轴。
标准纬线
对于圆锥投影来说,标准纬线是指圆锥接触地球所沿的一条或两条纬线。圆锥投影中地图的图例应始终包含标准纬线的坐标。
中央经线
对于圆锥投影而言,中央经线是地图上唯一一条真正垂直的经线。它通常在地图的中间。地图的图例应始终包含中央经线的坐标。
东移假定值
许多投影都有一个原点。例如,原点可能位于中央经线和标准纬线的交点处,或者位于中央经线与投影原点纬线的交点处(见下图)。原点是每种投影所特有的。东偏移量是相对于此原点所指定的 x 坐标值。例如,当投影的原点(以经纬度表示)在地图的中心时,如果指定东偏移量为 0,则原点以西的所有区域的 x 坐标都将为负。要使整个地图的 x 坐标均为正,需将东偏移量设置为正数。
北移假定值
该参数与东偏移量类似,不同的是,它表示任意的 y 平移。在投影原点位于地图中心的以上示例中,除非将北偏移量指定为正数,否则原点以南的所有 y 坐标都将为负。东偏移量和北偏移量必须以米为单位(即,与椭球体的单位相同)。还可以使用子命令 XSHIFT 和 YSHIFT,但不建议使用。
投影原点的纬度
对于具有两条标准纬线的圆锥投影来说,因为存在两条用来定义投影的纬线,所以“投影”工具不知道应在何处放置东偏移量或北偏移量。投影原点的纬度用于标识在何处放置此原点。
比例因子
使弯曲的地球表面适合平整的投影表面所需的缩小或放大程度。在下面的示例中,因为弯曲的地球表面比其投影到的目标表面要长,所以必须相对于真实比例的点按比例缩小要素。默认值为 1.0。
在 b 点(切点),比例因子为 1,因为比例是真实的。在 a 点和 c 点,比例因子大于 1。
比例因子通常用于圆柱投影,以在较广阔的区域内重新分配比例错误。例如,比例因子 0.9996 通常在 UTM 或英国国家格网中使用。
选择投影
球面坐标系中以角度单位(度/弧度)表示的弯曲表面,变换为直角坐标系中以线性单位(英尺/米)表示的平面表面时,会引起面积、形状、距离和方向的变形。更正其中一个会损害其他三个。例如,亚尔勃斯等积投影提供真实面积的代价是其他三个属性发生变形。对于主题地图,这是十分有用的。另一方面,方位投影提供真实方向,这对于导航地图十分有用。
一些常用投影的参数示例:
创建项目文件
使用项目文件将一个投影转换为另一个投影。这些文件是文本文件,用于描述输入和输出投影参数。
将使用此项目文件将某个 coverage 从 STATEPLANE 投影到 GEOGRAPHIC:
INPUT PROJECTION STATEPLANE UNITS FEET ZONE 3326 DATUM NAD27 XSHIFT 1000000 PARAMETERS OUTPUT PROJECTION GEOGRAPHIC UNITS DS DATUM NAD27 PARAMETERS END
子命令
这些项目文件使用多个子命令,这些子命令同时也支持多个选项。对于标有星号 (*) 的子命令,其选项在单独的表中列出。
DATUM* |
INPUT |
XSHIFT |
DENSIFY |
OUTPUT |
YSHIFT |
END |
PARMETERS |
ZONE* |
FIPSZONE* |
PROJECTION* |
ZUNITS |
FLIP |
QUADRANT |
UNITS |
FORMAT |
SPHEROID* |
/*(注释) |
GENERALIZE |
SWITCH |
通过项目文件中列出的一系列子命令定义坐标系。项目文件中同时列出了输入和输出投影定义。下表显示了所需的子命令及其正确顺序:
本部分定义输入投影。 |
INPUT PROJECTION <projection_name> UNITS <units> Other optional subcommands for the input projection . . PARAMETERS Projection-specific parameter values . . |
本部分定义输出投影。 |
OUTPUT PROJECTION <projection_name> UNITS <units> Other optional subcommands for the output projection . . PARAMETERS Projection-specific parameter values . . |
首先指定输入投影。应仅指定一个输入和输出投影。使用 END 完成投影定义。
请注意,除了必须定义输入和输出投影外,项目文件中只需要包含子命令 INPUT、PROJECTION、UNITS、PARAMETERS、OUTPUT、END。
下面将对每个子命令进行介绍。括号中的注释用于说明该子命令为必需命令还是可选命令。
INPUT
语法:
INPUT
紧随 INPUT 之后的子命令用于定义输入投影。从文本文件输入投影参数时,INPUT 是发出的第一个子命令。
PROJECTION
(所有投影均需要)
语法:
PROJECTION <projection_name>
投影的名称。
UNITS
(所有投影均需要)
语法:
UNITS <unit_name> UNITS <units per meter>
指定坐标的单位。
可供 GEOGRAPHIC 选项使用的 UNITS 关键字包括
- RADIANS
- DMS - 度、分、秒(仅适用于文件)
- (例如 10° 30' 30" 列出为 10 30 30)。
- DD - 十进制度(例如 10.50833333)
- DM - 十进制分(例如 630.5)
- DS - 十进制秒(例如 37830.0)
可供所有其他投影使用的单位包括
- FEET
- METERS
<units per meter> (Real number)
默认情况下,PROJECT 使用美国测量英尺。要使用国际英尺,可指定 'UNITS 3.280839895'。
DATUM
(除了仅支持球体上数据的投影外,对于其他所有投影来说为可选项。)
语法:
DATUM <name> {method} DATUM NONE DATUM USER_DEFINED <dx, dy, dz> {rx, ry, rz, scale}
坐标所基于的水平基准面。如果已定义输入和输出基准面名称且二者不同,将进行基准面转换。PROJECT 无法在不共享相同变换方法的基准面之间进行转换。
基准面变换方法和关键字:
CNT |
NADCON |
THREE |
SEVEN | |
---|---|---|---|---|
NAD27 |
X |
X |
* | |
NAD83 |
X |
X |
* | |
HPGN |
X | |||
ALASKAN_ISLANDS |
X | |||
OLD_HAWAIIAN |
X | |||
WGS72 |
X |
X | ||
WGS84 |
X |
X | ||
AGD84, GDA94 |
X | |||
AUA_B, AUA_C, AUA_D |
X |
*使用对应的关键字将 NAD27 或 NAD83 数据转换为 WGS72 或 WGS84。
<name> - 基准面的名称。
{method} - 用于在指定基准面之间进行转换的基准面转换方法。有两种方法可用于 WGS84 转换。一种方法将使用三个参数,与莫洛金斯基变换相似。另一种是布尔沙-沃尔夫方法,使用七个参数。还有几个专门针对北美地区的其他专用方法。可用的方法包括:
- NADCON - 在美国境内于 NAD27 和 NAD83 之间进行转换的标准方法。有效基准面 <名称> 包括 NAD27、NAD83、ALASKAN_ISLANDS、OLD_HAWAIIAN 和 HPGN。有关所覆盖的区域,请参阅美国方法 (NADCON)。
- CNT - 在加拿大境内于 NAD27 和 NAD83 之间进行转换的标准方法。CNT 的有效基准面 <名称> 包括 NAD27 和 NAD83。
- THREE - 布尔沙-沃尔夫变换的三参数版本,会对基准面原点位置 x、y 和 z 的差异加以考虑。与莫洛金斯基变换相似。警告:
此方法不能与关键字 NAD27 和 NAD83 一起使用。
- SEVEN - 七参数变换也称为布尔沙-沃尔夫变换。它会考虑原点平移、三轴旋转和比例差。当前支持 WGS72、WGS84 和多种澳大利亚基准面。 警告:
此方法不能与关键字 NAD27 和 NAD83 一起使用。
- NONE - 当将椭球体或球体上的数据投影到某个仅支持球体上数据的投影时使用。此外,必须将 SPHEROID 指定为 SPHERE。
- USER_DEFINED - 关键字,用于指定一组将提供的转换参数。使用三参数变换或七参数变换在当前基准面和 WGS84 之间来回转换时,这些参数是必需的。输入参数,就如同从区域基准面转换到 WGS84 一样。如果从 WGS84 变换到区域基准面,PROJECT 将对参数进行相应的修改。在 PARAMETERS 行中,使用 SPHEROID 子命令或长半轴和短半轴值来指定椭球体。
<dx, dy, dz> - 三参数变换所必需的参数。这些是当前基准面或所需基准面的原点与 WGS84 之间的差。单位是米。
- dx - X 值之差。
- dy - Y 值之差。
- dz - Z 值之差。
{rx, ry, rz, scale} - 七参数(布尔沙-沃尔夫)变换的可选参数。这些参数表示绕轴进行的旋转以及比例的变化。默认值为零。以十进制秒为单位按逆时针方向测量旋转(面向坐标系的原点时),比例变化的单位为百万分率。
- rx - X 轴的旋转。
- ry - Y 轴的旋转。
- rz - Z 轴的旋转。
- scale - 比例的差异
默认的 {method} 取决于指定的 <name>。如果 <name> 是 NAD27、NAD83、HPGN、ALASKAN_ISLANDS 或 OLD_HAWAIIAN,则默认方法为 NADCON。如果指定了任何其他 <name>,则默认方法为三参数变换。NADCON 关键字(如 NAD27)不得与三参数方法或七参数方法一起使用。不过,仍存在对应的基准面关键字。例如,使用名称 NAS_C 可在 NAD27 和 WGS72 之间进行变换。
使用示例:
DATUM NAD83 CNT DATUM NAS_B THREE DATUM USER_DEFINED -127 -50 153 0.0 0.0 -0.2 1.2 DATUM USER_DEFINED 0 0 4.5
DENSIFY
(对所有具有 COVER 选项的投影而言为可选项)
语法:
DENSIFY <distance>
存在按指定距离增密某个 coverage 中所有弧的选项,可同时将该选项应用于输入和输出投影。在进行投影前对输入 coverage 使用时,此子命令可确保在投影期间使长的线性段变为曲线要素。输出定义中的 GENERALIZE 子命令可在投影后对弧线进行概化。
FIPSZONE
(仅对 STATEPLANE 而言为可选项)
语法:
FIPSZONE <zone_number>
美国国家平面区域的相应 FIPS 代码。有关有效的 FIPSZONE 编号,请参阅 SPCS fipszones。
FLIP
(对 FILE 中的 GEOGRAPHIC 而言为可选项)
语法:
FLIP (or SWITCH) <YES | NO>
在文件中将数据记录为 (y,x) 而不是 (x,y) 时,将使用 YES 选项。将输入数据为“纬度-经度”(y = 纬度或北移,x = 经度或东移)形式时,将使用 FLIP。如果未指定 FLIP,则默认值为 NO。
FORMAT
(对所有具有 FILE 选项的投影而言为可选项)
语法:
FORMAT <fortran format>
输入或输出文件 x,y 坐标的特殊格式。例如,输入文件中所包含的值可能要比需要投影的 x,y 值多;或者您可能希望创建一个特殊格式的输出文件。可以使用 FORTRAN FORMAT 语句,以便针对每个坐标读取或写入 x,y 值。该格式应始终用单引号括起。如果未指定格式,则会使用自由格式的读取或写入。例如 FORMAT ‘(10X,2F10.0)’ 将跳过 10 个空格,然后读取坐标对,这样将忽略 1 至 10 列中的任何字符。使用此命令将输出单位格式化为 DMS 时,位于 -1 至 0 之间的值将返回为 0。此外,FORMAT 无法通过将秒值转换为整数来输出具有 ‘UNITS DMS’ 的整数秒。最接近的结果是使用
FORMAT ‘(i4,1x,i2,1x,f3.0,1x,i3,1x,i2,1x,f3.0)’
其结果是
-152 50 50. -59 8 48.
GENERALIZE
(对所有具有 COVER 选项的投影而言为可选项)
语法:
GENERALIZE <distance>
存在按指定距离概化某个 coverage 中所有弧的选项,可同时将该选项应用于输入和输出投影。如果为同一个输入或输出投影同时指定了 DENSIFY 和 GENERALIZE,将首先增密所有弧,然后再对这些弧进行概化。
QUADRANT
(仅对 GEOGRAPHIC 而言为可选项。仅在经度或纬度值“不”具有正确的符号时才使用)
语法:
QUADRANT <NW | NE | SW | SE>
正在其中输入或输出地理坐标(即,纬度-经度)的象限。QUADRANT 假定纬度和经度值均为正。根据所指定的象限,QUADRANT 会更改相应坐标的符号。
当输入坐标的负数不正确时,通常使用 QUADRANT。例如,美国的经度始终为负,但通常记录为正值。如果数据中包含实际上为负数的正经度值,则请指定 QUADRANT NW。
示例:
81.000 41.500 85.300 36.000
执行 QUADRANT NW 后,
-81.000 41.500 -85.300 36.000
如果坐标值已具有正确符号,则不要使用 QUADRANT 子命令。如果对以上示例数据再一次应用 QUADRANT NW,则结果如下
81.000 41.500 85.300 36.000
QUADRANT 会影响到如何从输入文件、coverage 或格网读取和解释纬度-经度坐标。QUADRANT 不会影响针对特定投影作为 PARAMETERS 输入的任何纬度-经度值,这些值必须包含正确的符号以指定纬度和经度为正值还是为负值。
SPHEROID
(对所有投影而言均为可选项)
语法:
SPHEROID <spheroid_name>
投影基于的椭球体。如果未指定其他 SPHEROID 或者 Clarke 1866 与投影不存在固有关系(例如 NEWZEALAND_GRID),则 Clarke 1866 将作为默认椭球体。所有支持的基准面都具有正确的硬编码椭球体。如果声明了基准面,则不要使用 SPHEROID 子命令。
项目:DATUM WGS84 PROJECT 将使用 WGS84 椭球体参数
项目:SPHEROID INT1909 PROJECT 将使用新的椭球体参数。
除非在基准面之间进行变换,否则 ARC/INFO 不在椭球体之间进行转换。如果输入中包含一个定义的椭球体但不是 Clarke 1866,则必须在输出中指定同一个椭球体。如果该投影的参数请求一个参照球体的半径,它将覆盖 spheroid 子命令且默认为球体。有关椭球体列表,请参阅“支持的椭球体”。
XSHIFT 和 YSHIFT
(对所有投影而言均为可选项)
语法:
XSHIFT <distance> YSHIFT <distance>
向坐标中添加的常量。使用 XSHIFT 或 YSHIFT 可将所有坐标增加某个值(通过 <distance> 指定)。
XSHIFT 和 YSHIFT 通常用于从其值位于 3 至 6 百万范围内(尤其是 Y)的投影坐标中减去一个值,以便在执行各种分析程序期间保持坐标精度。重新投影包含 XSHIFT 或 YSHIFT 的数据时,将不使用平移的负值。在重新对数据进行投影前,用户可能需要使用 PROJECTDEFINE 更改平移值的符号。默认值为零且以 coverage 单位表示。
ZONE
(仅对 UTM 和 STATEPLANE 而言为可选项)
语法:
ZONE <zone_number>
UTM 或美国国家平面坐标系的带编号。有关有效的 ZONE 编号,请参阅 UTM 带或 SPCS 带。对于美国国家平面坐标系,应使用 FIPSZONE。ZONE 使用的编码最初是美国土地管理局为 NAD27 SPCS 而设计的。这些编码尚未针对新的 NAD83 SPCS 带(例如,南卡罗来纳州或蒙大纳州)进行更新。
ZUNITS
(对所有投影而言均为可选项)
语法:
ZUNITS <units>
指定 z 值的单位。主要和 TIN 一起使用。这只是描述性信息,即使输入和输出 ZUNITS 不同,也不会通过 PROJECT 进行转换。
可供使用的单位包括
- NO(默认值;ZUNITS 不在 DESCRIBE 中显示)
- FEET
- METERS
- 实数(每米单位数)
- 字符串(最多 40 个字符,不带空格)
PARAMETERS
(所有投影均需要)
语法:
PARAMETERS {semi-major axis} {semi-minor axis}
PARAMETERS 子命令用于指定一组投影特定的参数,这些参数组成了参数包。它是每个 INPUT 或 OUTPUT 部分中的最后部分。即使投影不需要特殊参数,也应始终指定 PARAMETERS。
在关键字 PARAMETERS 的后面,可以指定椭圆体的非默认轴、长半轴和短半轴。
在 PARAMETERS 包中输入的参数取决于投影。请参阅对每个投影的具体说明,以确定必须输入哪些参数。每行输入一个必需的参数。可将注释置于参数之后。在对每个投影的说明中,在相应位置均提供了示例参数。
通常,无论 QUADRANT 规范如何,作为 PARAMETERS 设置一部分而指定的纬度/经度值必须具有相应的符号(正或负)。
OUTPUT
(所有投影均需要)
语法:
OUTPUT
紧随 OUTPUT 之后的子命令用于定义输出投影。先前介绍的用于定义输入投影的子命令也可用于输出投影。
/* {comment}
(对所有投影而言均为可选项)
描绘注释语句。不可将以 /* 开头的行置于 PARAMETERS 部分中。
END
(所有投影均需要)
语法:
END
指定子命令输入的结尾。子命令列表必须始终以 END 来结束。