变换 (Coverage)
插图
用法
-
输出 Coverage 必须已经存在,且具有包含至少两个控制点(位于所需位置并且以所需单位指定)的 x,y 坐标的控制点文件。除控制点以外,输出 Coverage 中的所有现有要素都将被输入 Coverage 中的要素取代。
-
此工具可以对 coverage 中的所有坐标进行缩放、倾斜、旋转和平移,但不可以执行“橡皮页变换”。
-
输入 coverage 控制点文件和输出 coverage 控制点文件中必须至少包含两个在输入和输出 coverage 中具有相同 Tic-ID 并表示对应位置的控制点。两个 coverage 不必具有相同的控制点;在变换中,只会使用在两个 coverage 中 ID 相同的控制点。
-
将对输入 coverage 的容差进行变换并将其保留在输出 coverage 中。
-
要利用坐标变换生成 RMS 误差,所需的控制点数应大于要求的最小值。
-
由于默认的 $ANGLE 值为 0,因此未旋转的标注点在输出中仍然不会被旋转。但是,如果对某些标注的 $ANGLE 值进行了设置,则标注角度将会与变换角度相加。
-
输入 coverage 中出现的所有注记子类都将被变换到输出 coverage 中。输入 coverage 注记的位置和大小会在输出 coverage 中进行变换。
-
现有段表将被复制到输出 coverage 中。变换过程中,弧段与弧之间的关系将保持不变。
-
区域信息将保持不变。
-
输出 coverage 的坐标精度可能与输入 coverage 的坐标精度不一致。精度由创建 coverage 时的适用精度环境值决定。这可通过创建 Coverage 工具实现。
-
对输入 coverage 中的要素属性(即 LENGTH、AREA 和 PERIMETER)进行变换之后会对其进行更新。
-
AFFINE 变换使用相同的方程对 coverage 中的所有坐标进行缩放、倾斜、旋转和平移。此变换可基于至少三个控制点,对 x 坐标和 y 坐标进行不同比例的缩放。此外,AFFINE 变换还可以执行平面反射操作。
-
SIMILARITY 变换可使用由坐标生成参数的方程对 coverage 坐标进行缩放、旋转和平移。如果选择了 SIMILARITY 选项,则可以使用两个或更多控制点来计算方程参数。此变换无法对 x 坐标和 y 坐标进行不同的缩放和倾斜,但是将较大地图切割为若干部分(以适应扫描仪)进行扫描之后,可使用此变换对扫描输出进行边匹配处理。
-
仅当输入 Coverage 为对航空像片直接进行数字化处理的产物时,才可使用 PROJECTIVE 变换选项。变换的精度将取决于所拍摄的地形表面、照相机与地面之间的夹角以及照片拍摄位置的高程。从较高高程且在相对平坦的地表部分正上方进行拍摄时,可以获得最佳拍摄效果。PROJECTIVE 需要至少 4 个控制点来计算变换。
-
使用最小二乘法来确定变换。要想检测到可能生成错误变换的控制点位置或 Tic-ID 的错误,建议您提供的控制点数应大于要求的最小值。
语法
参数 | 说明 | 数据类型 |
in_cover |
要进行坐标变换的 coverage。 | Coverage |
out_cover |
包含目标控制点的现有 coverage 的名称。输入 coverage 中的要素将被变换到此 coverage 中。 | Coverage |
transform_type (可选) |
要执行的坐标变换的类型:
| String |
代码实例
以下独立脚本演示了如何对数字化 coverage 使用“变换”工具。首先根据模板 coverage 创建空的输出 coverage。该模板具有控制点和已定义的投影。将空的输出 coverage 命名为道路。然后,“变换”工具将数字化道路要素变换到空的道路 coverage 中。
# Name: Transform_Example.py
# Description: Transforms digitized road features into a new output coverage
# Requirements: ArcInfo Workstation
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inCover = "roads_dig"
outCover = "C:/output/roads"
transformType = "AFFINE"
# Create the empty output coverage
arcpy.Create_arc(outCover, "citylim")
# Execute Transform
arcpy.Transform_arc(inCover, outCover, transformType)
# Print the RMS error
print arcpy.GetMessage(4)