投影 (数据管理)
摘要
将空间数据从一种坐标系投影到另一种坐标系。
用法
如果输入的要素类或数据集具有“未知的”或未指定的坐标系,可以使用输入坐标系参数指定输入数据集的坐标系。这样,无需修改输入数据就可以指定数据的坐标系(当输入数据为只读格式时,可能无法修改)。也可以使用定义投影工具永久性地为该数据集指定一个坐标系。
-
所有类型的要素类(地理数据库要素类、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 )
-
in_memory 对于输出数据集不是有效的工作空间。
-
当对以下列出的复杂数据类型进行投影时,需要对生成的数据执行特定操作:
- 包含网络数据集的要素数据集:必须重新构建网络数据集。
- 包含拓扑的要素数据集:重新验证拓扑的整个范围。
-
如果输入参与关系类(就像要素关联的注记一样),则关系类将被传送到输出。此规则的例外情况与独立表相关。
-
取决于输入要素的坐标和输出坐标系的视界(有效范围),多点、线和面将被裁剪或分割为多个部分,作为它们投影的一部分。
语法
参数 | 说明 | 数据类型 |
in_dataset |
要投影的要素类、要素图层或要素数据集。 | Feature Layer; Feature Dataset |
out_dataset |
将要写入结果的输出数据集。 | Geodataset |
out_coor_system | 有效值是具有 .prj 扩展名(ArcGIS 中附带的 .prj 文件位于 ArcGIS 安装目录的“坐标系”文件夹中)的文件,或者是坐标系的字符串表达形式。要生成此类字符串表达形式,可向模型构建器添加一个坐标系变量,根据需要设置该变量的值,然后将模型导出到 Python 脚本。然后,可从 Python 脚本中复制此字符串。 | 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" # Set local variables outWorkspace = "c:/data/Redlands_utm_11.gdb" # 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') arcpy.Project_management(infc, outfc, outCS)