批量投影 (数据管理)
摘要
将一组输入要素类或要素数据集的坐标系更改为通用坐标系。要更改一个要素类或数据集的坐标系,请使用投影工具。
用法
-
投影工具的任何有效输入(如所有要素类或要素数据集)也是该工具的有效输入。
-
虽然输出坐标系和模板数据集都是可选参数,但必须输入其中一个。如果将这两个参数均留空,则会导致工具执行失败。
-
由于该工具不验证是否需要进行变换,因此请首先对其中一个输入使用投影工具,以确定是否需要进行变换。“投影”工具中地理(坐标)变换参数的下拉列表显示了有效的变换(如果存在)。
-
必须先使用定义投影工具为未定义坐标系或“未知”坐标系的要素类或数据集定义坐标系,然后才能对该要素类或数据集使用“投影”工具。
-
输出要素类的名称将取决于输入要素类的名称。例如,如果输入为 C:\myworkspace\Gondor.shp,则输出要素类将命名为 Gondor.shp。如果某个名称在输出工作空间中已存在,则系统将在名称结尾追加一个数字(例如 _1)以确保该名称在输出工作空间中唯一(例如,Gondor_1.shp)。
语法
参数 | 说明 | 数据类型 |
Input_Feature_Class_or_Dataset [Input_Feature_Class_or_Dataset,...] |
要转换坐标的输入要素类或要素数据集。 | Geodataset |
Output_Workspace |
每个新输出要素类或要素数据集的位置。 | Feature Dataset; Workspace |
Output_Coordinate_System (可选) |
用于对输入进行投影的坐标系。 有效值是具有 .prj 扩展名(ArcGIS 中附带的 .prj 文件位于 ArcGIS 安装目录的“坐标系”文件夹中)的文件,或者是坐标系的字符串表达形式。要生成此类字符串表达形式,可向模型构建器添加一个坐标系变量,根据需要设置该变量的值,然后将模型导出到 Python 脚本。然后,可从 Python 脚本中复制此字符串。 | Coordinate System |
Template_dataset (可选) |
用于指定投影时所用输出坐标系的要素类或要素数据集。 | Geodataset |
Transformation (可选) |
在两种地理坐标系(基准面)之间转换数据所应用的地理(坐标)变换的名称。 | String |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 BatchProject 函数。
import arcpy arcpy.env.workspace = "C:/data/input/batchproject" arcpy.BatchProject_management(["citylim.shp", "flood.shp", "faultzn.shp"], "C:/data/output/batchproject", "", "C:/data/usa.gdb/templatefc")
以下 Python 脚本演示了如何在独立脚本中使用 BatchProject 函数。
# Name: BatchProject.py # Description: Changes coordinate systems of several datasets in a batch. import arcpy from arcpy import env # Set workspace environment env.workspace = "C:/data/wgs1972.gdb" # Input feature classes input_features = ["cities", "counties", "blocks", "crime"] # Output workspace out_workspace = "C:/data/output.gdb" # Output coordinate system - leave it empty out_cs = '' # Template dataset - it has GCS_WGS_1984 coordinate system template = "C:/data/wgs1984.gdb/stateparks" # Geographic transformation - transformation = "WGS_1972_To_WGS_1984_1" try: res = arcpy.BatchProject(input_features, out_workspace, out_cs, template, transformation) if res.maxSeverity == 0: print "projection of all datasets successful" else: print "failed to project one or more datasets" except: print res.getMessages()