变换工作原理
此主题仅适用于 ArcInfo。
描述
变换工具可将数据从一种坐标系转换为另一种坐标系。该工具常用于将以数字化仪单位(通常是英寸)创建的 coverage 转换为显示在地图底稿上的实际单位。这些实际的位置由特定投影表示;例如,底图的投影可以是使用米为单位来测量控制点位置的 UTM。
要执行变换,必须能够在 coverage 中向真实位置配准至少两个控制点。这些真实位置可使用底图坐标系以英尺或米为单位来测量,也可以定位在经度和纬度相交处。如果位置以经度和纬度为参考,则应使用投影工具将控制点转换为与底图对应的坐标系,并用英尺或米为单位来测量。请在变换数字化 coverage 之前执行此操作。
在最初变换数据时,应将其变换为与源地图相同的投影。然后用“投影”工具将 coverage 转换为另一种地图投影。
“变换”工具的基本做法是比较“输入 Coverage”与“输出 Coverage”中对应控制点的坐标。控制点 ID 会标识要进行比较的控制点。所需控制点的最小数量取决于所使用的变换选项。这里所说的控制点被视为针对变换的控制点,并且不会由变换方程转换。输出控制点的坐标在变换后保持不变。不过,任何与输入控制点重合的要素通常都不会与输出控制点重合。因此,在变换之后可能需要对要素进行调整,以强制它们与“输出 Coverage”中的控制点重合。
默认情况下,“变换”工具使用 AFFINE 变换函数,将 coverage 坐标从“输入 Coverage”变换为“输出 Coverage”。计算仿射变换至少需要三个控制点。
仿射变换可以不同程度地缩放、倾斜、旋转和平移数据。下图说明了这四种可能的变化。
仿射变换函数为:
x’ = Ax + By + C
参数 A-F 由控制点来决定,
y’ = Dx + Ey + F
然后应用于 coverage 中的所有坐标。
其中 x 和 y 是“输入 Coverage”的坐标,x' 和 y' 是“输出 Coverage”的坐标。A、B、C、D、E 和 F 可通过比较控制点在“输入 Coverage”和“输出 Coverage”中的位置来决定。对控制点坐标进行缩放、倾斜、旋转和平移。
“变换”工具将报告这六个参数及其几何解释。以下是仿射变换的输出报告的节选部分示例。
针对 coverage 的 in_cov_name 参数变换坐标
Scale (X,Y) = (246.140,255.702) Skew (degrees) = (-0.061) Rotation (degrees) = (0.334) Translation = (2890.267,3679.906) RMS Error (input, output) = (0.084,20.592) Affine X = Ax + By + C Y = Dx + Ey + F A = 246.135 B = -1.763 C = 2890.267 D = 1.434 E = 255.696 F = 3679.906
此报告的某部分列出了变换方程的各个参数。可以对这些方程参数做出解释以了解正在发生的几何变化。报告的第一部分给出了进行缩放、倾斜和旋转的解释值。如果将应用这些几何操作的顺序重新整理,则解释值会改变,但最终结果和方程参数始终不变。使用的解释顺序为 (1) 缩放,(2) 在 x 方向上倾斜,(3) 围绕轴逆时针旋转点。不对变换值进行解释,它们只是方程中的 C 和 F 变换参数。“变换”工具采用以下方式解释仿射方程的各个参数:
A = mx · cos t B = my · (k · cos t - sin t) D = mx · sin t E = my · (k · sin t + cos t) C = translation in x direction F = translation in y direction where mx = change of scale in x direction my = change of scale in y direction k = shear factor along the x-axis = tan (skew angle) (the skew angle is measured from the y-axis) t = rotation angle, measured counterclockwise from the x-axis
旋转角度是指数据绕固定 x,y 坐标系的旋转。参照前面的图,发现原始数据已旋转了 45 度。负值表示数据从 x 轴顺时针旋转。
SIMILARITY 变换可以缩放、旋转和平移数据。但不会单独缩放轴,也不会产生任何倾斜。要进行相似变换至少需要两个控制点。以下是针对某一相似变换的报告,该变换使用之前经过了仿射变换的 coverage。
针对 coverage 的 in_cov_name 参数变换坐标
Scale (X,Y) = (249.927,249.927) Rotation (degrees) = (0.362) Translation = (2855.407,3715.168) RMS Error (input, output) = (0.118,29.398) Similarity X = Ax + By + C Y = -Bx + Ay + F A = 249.922 B = -1.578 C = 2855.407 F = 3715.168
请注意,X 和 Y 的比例值相等。不会报告倾斜值,因为相似变换不允许数据进行任何非正交移动。
相似变换函数为
x’ = Ax + By + C y’ = -Bx + Ay + F where A = s · cos t B = s · sin t C = translation in x direction F = translation in y direction and s = scale change (same in x and y directions) t = rotation angle, measured counterclockwise from the x-axis
就像在 AFFINE 说明中一样,旋转角度是指数据绕固定 x,y 坐标系的旋转。参照前面的图,发现原始数据已旋转了 45 度。负值表示从 x 轴开始测量,顺时针旋转数据。
PROJECTIVE 变换基于更加复杂的公式,至少需要四个控制点。
x’ = (Ax + By + C) / (Gx + Hy + 1) y’ = (Dx + Ey + F) / (Gx + Hy + 1)
PROJECTIVE 报告包括近似比例、RMS 误差和方程参数。由于解释的复杂性,将不对投影变换参数进行解释。有关详细信息,请参阅本主题结尾处的参考中所列出的摄影测量文本之一。下面是投影变换输出报告的一个示例。
针对 coverage 的 in_cov_name 参数变换坐标
Approximate scale = 1479.087 RMS Error (input, output) = (0.040,60.878) 2D Projective X = (Ax + By + C) / (Gx + Hy + 1) Y = (Dx + Ey + F) / (Gx + Hy + 1) A = 55.667 B = -718.999 C = 2125052.558 D = -199.525 E = 1385.541 F = 317759.475 G = -0.001 H = 0.000 Principal point of input (xp,yp) = (2.000,16.946) Exposure center of output(Xc,Yc) = (2127791.000,343183.000)
主要点和曝光点对应了“输入 Coverage”控制点文件中的第一个控制点。如果要使用其他点(例如,数据集中心),则应确保该点为文件中的第一个控制点。
会计算每个所执行变换的均方根 (Root Mean Square, RMS) 误差,该误差表示得到的变换的好坏程度。下面的示例说明了四个输出控制点与变换后的输入控制点之间的相对位置:
RMS 误差将测量“输出 Coverage”控制点与变换后的“输入 Coverage”控制点位置之间的误差。
变换使用最小二乘法导出,因此可以指定比所需控制点数更多的控制点。
每个变换的 RMS 误差都将以“输入 Coverage”单位(例如,0.031 英寸)和“输出 Coverage”单位(例如,37.465 英尺)两种单位提供报告。
RMS Error (input, output) = (0.031,37.465)
一个理想变换产生的 RMS 误差为零。尽管得到的值不会为 0.000,但应该设法使 RMS 误差尽可能低。最好能够建立并维持一个可接受的最大误差。可接受的值将随着原始数据的精度和源地图的比例而变化。高 RMS 误差表明,旧控制点和新控制点不对应相同的相对位置。如果 RMS 误差高于所建立的值,则表明可能对“输出 Coverage”进行了不正确拉伸而导致出现转换问题。
报告的最后一部分列出了输入和输出控制点的坐标及其 x 和 y 误差(请参见下图)。这些变换参数是输入和输出控制点之间的最佳拟合。如果使用变换参数来变换实际的输入控制点,则变换后的输出位置与真实的输出控制点位置不匹配。x 和 y 误差是对输出控制点的真实位置和变换后位置之间拟合程度的测量。有时通过观察 x 和 y 误差就可以发现错误。
tic id input x input y output x output y x error y error ------------------------------------------------------------------------ 1 2.000 16.946 2127791.000 343183.000 14.463 75.499 2 12.764 16.821 2143469.000 343326.000 -31.043 -85.363 3 2.052 1.976 2128000.000 320680.000 -36.290 -2.353 4 12.922 2.013 2143729.000 320912.000 20.245 -6.163 5 2.082 9.442 2127944.000 332015.000 22.016 -74.699 6 12.662 9.442 2143320.000 332015.000 10.609 93.079
示例
本示例将 coverage 从数字化仪单位变换为实际坐标。原始 coverage 名为 INCHCOV,具有使用数字化仪单位(英寸)测量的以下控制点:
IDTIC XTIC YTIC 1 2.000 16.946 2 12.764 16.821 3 2.052 1.976 4 12.922 2.013 5 2.082 9.442 6 12.662 9.442
所用的底图处于美国国家平面坐标系中,并且使用英尺作为测量控制点的单位。每个控制点对应以下位置:
Tic-IDs X Coordinates Y Coordinates 1 2,127,791 343,183 2 2,143,469 343,326 3 2,128,000 320,680 4 2,143,729 320,912 5 2,127,944 332,015 6 2,143,320 332,015
必须存在“输出 Coverage”方可执行“变换”工具。使用创建 Coverage 工具来创建“输出 Coverage”,然后根据需要从“输入 Coverage”复制 TIC 和 BND 文件。另外,也可以使用生成工具在所需位置创建包含控制点的新 coverage。
“输出 Coverage”的控制点文件必须包含要保留在“输出 Coverage”中的每个控制点的 x,y 坐标;这种情况下,控制点位置处于美国国家平面坐标系中。控制点坐标的调整可以在 ArcMap 中进行,也可以在 ArcInfo Workstation 的 TABLES 或 INFO 模块中进行。
创建完新的控制点之后,在数字化 coverage 中的要素就可以变换为实际单位。“变换”工具用于将“美国国家平面”投影 coverage 的参考单位从英寸 (INCHCOV) 转换为英尺 (STATECOV)。以下是 AFFINE 变换的一个示例。
Scale (X,Y) = (1452.317,1508.433) Skew (degrees) = (0.416) Rotation (degrees) = (0.218) Translation = (2124994.654,317664.385) RMS Error (input, output) = (0.048,71.614) Affine X = Ax + By + C Y = Dx + Ey + F A = 1452.230 B = -5.526 C = 2124994.654 D = 15.858 E = 1508.462 F = 317664.385 tic id input x input y output x output y x error y error -------------------------------------------------- 1 2.000 16.946 2127791.000 343183.000 14.463 75.499 2 12.764 16.821 2143469.000 343326.000 -31.043 -85.363 3 2.052 1.976 2128000.000 320680.000 -36.290 -2.353 4 12.922 2.013 2143729.000 320912.000 20.245 -6.163 5 2.082 9.442 2127944.000 332015.000 22.016 -74.699 6 12.662 9.442 2143320.000 332015.000 10.609 93.079
以下是对同一个 coverage 进行 PROJECTIVE 变换的相应示例。请记住,通常只有当原始 coverage 是从航空照片直接进行数字化得到时,才使用 PROJECTIVE 选项。
针对 coverage 的 INCHCOV 参数变换坐标
Approximate scale = 1479.087 RMS Error (input, output) = (0.040,60.878) 2D Projective X = (Ax + By + C) / (Gx + Hy + 1) Y = (Dx + Ey + F) / (Gx + Hy + 1) A = 55.667 B = -718.999 C = 2125052.558 D = -199.525 E = 1385.541 F = 317759.475 G = -0.001 H = 0.000 Principal point of input (xp,yp) = (2.000,16.946) Exposure center of output(Xc,Yc) = (2127791.000,343183.000) tic id input x input y output x output y x error y error -------------------------------------------------- 1 2.000 16.946 2127791.000 343183.000 -4.438 45.252 2 12.764 16.821 2143469.000 343326.000 -11.447 -36.202 3 2.052 1.976 2128000.000 320680.000 -17.300 46.421 4 12.922 2.013 2143729.000 320912.000 1.704 -36.962 5 2.082 9.442 2127944.000 332015.000 21.787 -93.410 6 12.662 9.442 2143320.000 332015.000 9.694 74.901
最后,是对同一个 coverage 使用 SIMILARITY 选项进行变换。
针对 coverage 的 inchcov 参数变换坐标
Scale (X,Y) = (1483.794,1483.794) Rotation (degrees) = (0.377) Translation = (2124800.900,317942.729) RMS Error (input,output) = (0.162,240.958) Similarity X = Ax + By + C Y = -Bx + Ay + F A = 1483.762 B = -9.765 C = 2124800.900 F = 317942.729 tic id input x input y output x output y x error y error -------------------------------------------------- 1 2.000 16.946 2127791.000 343183.000 -188.053 -76.916 2 12.764 16.821 2143469.000 343326.000 106.378 -300.277 3 2.052 1.976 2128000.000 320680.000 -173.717 214.680 4 12.922 2.013 2143729.000 320912.000 225.411 143.724 5 2.082 9.442 2127944.000 332015.000 -146.109 -42.262 6 12.662 9.442 2143320.000 332015.000 176.089 61.051
下面的示例将使用 AFFINE 变换来翻转 coverage。
针对 coverage 的 flag 参数变换坐标
Scale (X,Y) = (1.000,-1.000) Skew (degrees) = (0.000) *** Negative Y scaling indicates reflection around X axis. *** Rotation (degrees) = (180.000) Translation = (800.000,0.000) RMS Error (input, output) = (0.000,0.000) Affine X = Ax + By + C Y = Dx + Ey + F A = -1.000 B = 0.000 C = 800.000 D = 0.000 E = 1.000 F = 0.000 tic id input x input y output x output y x error y error -------------------------------------------------- 1 700.000 100.000 100.000 100.000 0.000 0.000 2 700.000 800.000 100.000 800.000 0.000 0.000 3 100.000 800.000 700.000 800.000 0.000 0.000 4 100.000 100.000 700.000 100.000 0.000 0.000
请注意输出报告中有关镜像的消息。有关 coverage 所发生的变换将在下图中显示。标注为 I 的矩形为“输入 Coverage”。值为 -1 的 Y 比例适用于该坐标。这将产生矩形 II。因为不包含倾斜因子,所以将点旋转 180 度,并放置在位置 III 中。最后一步(未显示)是对此 coverage 进行平移。
参考书目
Maling, D.H., Coordinate Systems and Map Projections.George Philip., 1973.
Maling, D.H., “Coordinate systems and map projections for GIS.”In:Maguire D.J., M.F. Goodchild, and D.W. Rhind (eds.), Geographical Information Systems:principles and applications. Vol. 1, pp. 135-146.Longman Group UK Ltd., 1991.
Moffitt, F.H., and E.M. Mikhail, Photogrammetry.Third Edition.Harper and Row, Inc., 1980.
Pettofrezzo, A.J., Matrices and Transformations.Dover Publications, Inc., 1966.
Slama, C.C., C. Theurer, and S.W. Henriksen (eds.), Manual of Photogrammetry.4th Edition.Chapter XIV, pp. 729-731.ASPRS, 1980.