投影 (Data Management)
摘要
将空间数据从一种坐标系投影到另一种坐标系。
用法
如果输入的要素类或数据集具有“未知的”或未指定的坐标系,可以使用输入坐标系参数指定输入数据集的坐标系。这样,无需修改输入数据就可以指定数据的坐标系(当输入数据为只读格式时,可能无法修改)。也可以使用定义投影工具永久性地为该数据集指定一个坐标系。
-
所有类型的要素类(地理数据库要素类、coverage 要素类、SDC 要素类和 shapefile)、地理数据库中的要素数据集和 ArcGIS 应用程序(ArcMap、ArcScene 和 ArcGlobe)中的要素图层均为有效输入。
-
此工具的输入不能是 Coverage、VPF Coverage、栅格数据集和栅格目录。要对 Coverage 进行投影,请使用 Coverage 工具箱中的投影工具。使用投影栅格工具可以对栅格数据集进行投影。
该工具的地理变换参数是可选参数。当不需要地理变换或基准面变换时,参数中不会出现下拉列表,并且参数为空。当需要变换时,将会基于输入基准面和输出基准面生成一个下拉列表,并会选择一个默认变换。
- 例如,从 GCS_North_American_1983 投影到 NAD_1983_UTM_Zone_12N 时就不需要地理变换,因为输入坐标系和输出坐标系都具有 NAD_1983 基准面。但是,从 GCS_North_American_1983 投影到 WGS_1984_UTM_Zone_12N 时则需要地理变换,因为输入坐标系使用的是 NAD_1983 基准面,而输出坐标系使用的是 WGS_1984 基准面。提示:
变换是双向的。例如,如果将数据从 WGS 1984 转换为 NAD 1927,可以选取一个名为 NAD_1927_到_WGS_1984_3 的变换,然后此工具即可正确应用它。
- 有关变换和它们的使用区域的列表,请参阅下列知识库文章:21327 (http://resources.arcgis.com/content/kbase?fa=articleShow&d=21327 )
- 例如,从 GCS_North_American_1983 投影到 NAD_1983_UTM_Zone_12N 时就不需要地理变换,因为输入坐标系和输出坐标系都具有 NAD_1983 基准面。但是,从 GCS_North_American_1983 投影到 WGS_1984_UTM_Zone_12N 时则需要地理变换,因为输入坐标系使用的是 NAD_1983 基准面,而输出坐标系使用的是 WGS_1984 基准面。
-
in_memory 对于输出数据集不是有效的工作空间。必须将输出写入磁盘上的要素类中。
-
当对以下列出的复杂数据类型进行投影时,需要对生成的数据执行特定操作:
- 包含网络数据集的要素数据集:必须重新构建网络数据集。
- 包含拓扑的要素数据集:重新验证拓扑的整个范围。
-
如果输入参与关系类(就像要素关联的注记一样),则关系类将被传送到输出。此规则的例外情况与独立表相关。
-
取决于输入要素的坐标和输出坐标系的视界(有效范围),多点、线和面将被裁剪或分割为多个部分,作为它们投影的一部分。
无法独立投影参与几何网络的要素类 - 整个要素数据集包含需要投影的网络。
许多地理处理工具支持输出坐标系环境设置,并且在多个工作流程中可以使用采用投影工具的环境设置。例如,联合工具支持输出坐标系环境设置,这意味着可以将所有位于不同坐标系的要素类联合在一起,并将联合的输出写入完全不同的坐标系的要素类中。
此工具不支持图层的选择内容和定义查询:将对投影图层所引用的数据集中的所有要素进行投影。如果仅要投影所选要素,请考虑使用复制要素工具。复制要素仅复制所选要素和支持输出坐标系地理处理环境。
当将要素数据集内的要素类用作输入时,无法将输出写入同一要素数据集。这是因为要素数据集内的要素类均必须具有相同的坐标系。在这种情况下,会将输出要素类写入包含要素数据集的地理数据库。
语法
参数 | 说明 | 数据类型 |
in_dataset |
要投影的要素类、要素图层或要素数据集。 | Feature Layer; Feature Dataset |
out_dataset |
将要写入结果的输出数据集。 | Geodataset |
out_coor_system | 有效值是空间参考对象、扩展名为 .prj 的文件或坐标系的字符串表达形式。 | Coordinate System |
transform_method (可选) | 此方法可用于在两个地理坐标系或基准面之间对数据进行转换。如果输入和输出坐标系具有不同的基准面,则可能需要此可选参数。 提示: 变换是双向的。例如,如果将数据从 WGS 1984 转换为 NAD 1927,可以选取一个名为 NAD_1927_到_WGS_1984_3 的变换,然后此工具即可正确应用它。 | String |
in_coor_system (可选) |
输入要素类或数据集的坐标系。当输入具有“未知的”或未指定的坐标系时,将启用该参数。这样,无需修改输入数据就可以指定数据的坐标系(当输入数据为只读格式时,可能无法修改)。 | Coordinate System |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用“投影”函数。
import arcpy
input_features = "C:/data/input/projections.gdb/wells"
output_features_class = "C:/data/output/wells_UTM11N.shp"
install_dir = arcpy.GetInstallInfo()['InstallDir']
out_coordinate_system = os.path.join(install_dir, r"Coordinate Systems/Projected Coordinate Systems/UTM/NAD 1983/NAD 1983 UTM Zone 11N.prj")
arcpy.Project_management(input_features, output_features_class, out_coordinate_system)
以下独立脚本演示了如何在独立脚本中使用“投影”。
# Name: Project_Example2.py
# Description: Project all feature classes in a geodatabase
# Requirements: os module
# Import system modules
import arcpy
import os
# Set environment settings
arcpy.env.workspace = "C:/data/Redlands.gdb"
arcpy.env.overwriteOutput = True
# Set local variables
outWorkspace = "C:/data/Redlands_utm11.gdb"
try:
# Use ListFeatureClasses to generate a list of inputs
for infc in arcpy.ListFeatureClasses():
# Determine if the input has a defined coordinate system, can't project it if it does not
dsc = arcpy.Describe(infc)
if dsc.spatialReference.Name == "Unknown":
print ('skipped this fc due to undefined coordinate system: ' + infc)
else:
# Determine the new output feature class path and name
outfc = os.path.join(outWorkspace, infc)
# Set output coordinate system
outCS = arcpy.SpatialReference('NAD 1983 UTM Zone 11N')
# run project tool
arcpy.Project_management(infc, outfc, outCS)
# check messages
print(arcpy.GetMessages())
except arcpy.ExecuteError:
print(arcpy.GetMessages(2))
except Exception as ex:
print(ex.args[0])