ArcGIS for Desktop

  • 文档
  • 合约
  • 支持

  • My Profile
  • 帮助
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS for Desktop

全面的专业性 GIS

ArcGIS for Server

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 合约
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

帮助

  • 主页
  • 入门
  • 制图
  • 分析
  • 管理数据
  • 工具
  • 更多...

投影

  • 摘要
  • 用法
  • 语法
  • 代码实例
  • 环境
  • 许可信息

摘要

将空间数据从一种坐标系投影到另一种坐标系。

用法

  • 如果输入的要素类或数据集具有“未知”或未指定的坐标系,可以使用输入坐标系参数指定输入数据集的坐标系。这样,无需修改输入数据就可以指定数据的坐标系(当输入数据为只读格式时,可能无法修改)。也可以使用定义投影工具永久性地为该数据集指定一个坐标系。

  • 所有类型的要素类(地理数据库要素类、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 (Esri 知识库文章 #21327)。

  • 不支持 in_memory 工作空间作为编写输出数据集的位置。

  • 当对以下列出的复杂数据类型进行投影时,需要对生成的数据执行特定操作:

    • 包含网络数据集的要素数据集:必须重新构建网络数据集。
    • 包含拓扑的要素数据集:应重新验证拓扑。

  • 如果输入参与关系类(就像要素关联的注记一样),则关系类将被传送到输出。此规则的例外情况与参加独立表相关。

  • 根据输入要素的坐标和输出坐标系的视界(有效范围),对其进行投影时,多点、线和面将被裁剪或分割为多个部分。完全位于视野外的要素将被写入到输出中(形状为空)。可使用修复几何工具将其删除。

  • 无法独立投影参与几何网络的要素类 - 整个要素数据集包含需要投影的网络。

  • 多种地理处理工具支持输出坐标系环境设置,并且在多个工作流中可以使用此环境设置来代替投影工具的环境设置。例如,联合工具支持输出坐标系环境设置,这意味着可以将所有位于不同坐标系的要素类联合在一起,并将联合的输出写入完全不同的坐标系的要素类中。

    了解有关地理处理环境的详细信息

  • 该工具将忽略在层上选择和定义查询 - 将对数据集中层所引用的所有要素进行投影。如果您仅想投影选定要素,可考虑使用复制要素工具创建一个临时数据集,该数据集仅包含选定要素,然后将该中间数据集用作投影工具的输入。

  • 当将要素数据集内的要素类用作输入时,无法将输出写入同一要素数据集。这是因为要素数据集内的要素类均必须具有相同的坐标系。在这种情况下,会将输出要素类写入包含要素数据集的地理数据库。

  • 选中保留形状参数后将创建输出要素,该要素可更加准确地表示其真实投影位置。线或面边界为数字化长直线且折点很少时,保留形状非常有用。如果并未选中保留形状,那么将投影输入线或面边界的现有折点,这可能会导致要素在新投影中的位置不准确。选中保留形状(Python 中的preserve_shape = "PRESERVE_SHAPE")时,会在投影前将额外的折点添加到要素中。这些额外的折点将保留要素的投影形状。最大偏移偏差参数控制要添加的额外折点数;该值为工具所计算的投影要素可从其准确投影位置偏移的最大距离。值越小,添加的折点越多。根据需要选择值。例如,您的投影输出是针对常规小比例制图显示,则可选择较大偏差。反之,如果您的投影输出用于大比例、小区域分析,则可能需要较小偏差。

语法

Project_management (in_dataset, out_dataset, out_coor_system, {transform_method}, {in_coor_system}, {preserve_shape}, {max_deviation})
参数说明数据类型
in_dataset

要投影的要素类、要素图层或要素数据集。

Feature Layer; Feature Dataset
out_dataset

将要写入结果的输出数据集。

Feature Class; Feature Dataset
out_coor_system

有效值是空间参考对象、扩展名为 .prj 的文件或坐标系的字符串表达形式。

Coordinate System
transform_method
(可选)

此方法可用于在两个地理坐标系或基准面之间对数据进行转换。如果输入和输出坐标系具有不同的基准面,则可能需要此可选参数。

提示:

变换是双向的。例如,如果将数据从 WGS 1984 转换为 NAD 1927,可以选取一个名为 NAD_1927_到_WGS_1984_3 的变换,然后此工具即可正确应用它。如果未提供变换,则将使用默认变换。该默认变换适用于常规制图应用程序,但是可能并不适用于对位置精度要求高的应用程序。

String
in_coor_system
(可选)

输入要素类或数据集的坐标系。当输入具有未知或未指定的坐标系时,可在不修改输入数据的情况下指定数据的坐标系(不适用于输入为只读格式的情况)。

Coordinate System
preserve_shape
(可选)

向输出线或面添加折点,以便其投影形状更加准确。

  • NO_PRESERVE_SHAPE —不向输出线或面添加其他折点。这是默认设置。
  • PRESERVE_SHAPE —根据需要向输出线或面添加额外折点,以便其投影形状更加准确。
Boolean
max_deviation
(可选)

确定 preserve_shape = "PRESERVE_SHAPE" 时投影线或面可从其准确投影位置偏移的距离。默认为输出数据集空间参考 XY 容差的 100 倍。

Linear unit

代码实例

投影示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用“投影”函数。

import arcpy

# input data is in NAD 1983 UTM Zone 11N coordinate system
input_features = r"C:/data/Redlands.shp"

# output data
output_feature_class = r"C:/data/Redlands_Project.shp"

# create a spatial reference object for the output coordinate system
out_coordinate_system = arcpy.SpatialReference('NAD 1983 StatePlane California V FIPS 0405 (US Feet)')

# run the tool
arcpy.Project_management(input_features, output_feature_class, out_coordinate_system)
投影示例 2(独立脚本)

以下独立脚本演示了如何在独立脚本中使用“投影”。

# 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])

环境

  • 当前工作空间
  • 临时工作空间
  • XY 分辨率
  • XY 容差

相关主题

  • 投影和变换工具集概述
  • 关于地图投影
  • 支持的地图投影的列表
  • 什么是地理坐标系?
  • 什么是投影坐标系?
  • GIS 专业人员需了解的投影基础知识
  • 空间参考和地理处理
有关此主题的反馈?

ArcGIS for Desktop

  • 主页
  • 文档
  • 合约
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • 内部人员博客
  • 用户大会
  • 开发者峰会
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | 隐私政策 | 法律声明