SpatialReference

摘要

空间参考的每一部分都具有多个属性,特别是坐标系,它定义了哪些地图投影选项用于定义水平坐标。

说明

也可使用 Describe spatialReference 属性从现有数据集访问 SpatialReference 对象。

dataset = "c:/data/landbase.gdb/Wetlands"
spatial_ref = arcpy.Describe(dataset).spatialReference

XY、Z 和 M 范围与空间参考域有所不同。空间参考中的 XY、Z 和 M 域用于定义可存储在要素类中的坐标值的有效范围。要素类范围反映了存在于要素类中的坐标值的实际范围。这些范围不能大于域。

SpatialReference 对象支持用于比较空间参考的等于 (==) 和不等于 (!=) 运算符。

注:

空间参考属性的可用性取决于所使用的坐标系。 在下面的属性列表中,只可用于投影坐标系的属性以 1 表示;只可用于地理坐标系的属性以 2 表示。

由于投影坐标系基于地理坐标系,因此可以使用 GCS 属性从地理坐标系访问投影坐标系属性。

语法

 SpatialReference ({item}, {vcs}, {text})
参数说明数据类型
item

The horizontal coordinate system used to create the SpatialReference object. The coordinate system can be set using a projection file, name, or factory code.

Create a SpatialReference object using the display name of a coordinate system.

sr = arcpy.SpatialReference("Sinusoidal (world)")

Create a SpatialReference object using the canonical name of a coordinate system.

sr = arcpy.SpatialReference("World_Sinusoidal")

Create a SpatialReference object using a coordinate system's factory code (or authority code or WKID).

# The factory code of 32145 represents: 
# NAD 1983 StatePlane Vermont FIPS 4400 (Meters)

sr = arcpy.SpatialReference(32145)

Create a SpatialReference object using a projection file (.prj).

sr = arcpy.SpatialReference("c:/coordsystems/NAD 1983.prj")

For more information about coordinate system names and factory codes, see the geographic_coordinate_systems.pdf and projected_coordinate_systems.pdf files.

For more information, see Using the spatial reference class.

Variant
vcs

The vertical coordinate system (VCS). The VCS defines information about the z-coordinates and can be set using a name or factory code. See the following examples:

Define the vertical coordinate system using a name.

sr = arcpy.SpatialReference("Hawaii Albers Equal Area Conic", "MSL Height")

Define the vertical coordinate system using a factory code.

# Spatial Reference factory code of 32145 is : NAD 1983 StatePlane Vermont FIPS 4400 (Meters)
# Spatial Reference factory code of 5714 is : Mean Sea Level (Height)

sr = arcpy.SpatialReference(32145, 5714)
Variant
text

A well-known text (WKT or WKT2 format) string that can be used to define a horizontal and vertical coordinate system.

注:

When creating a SpatialReference object with a vertical coordinate system using the text argument, define the vertical coordinate system using the VERTCS section of the WKT string. The vcs argument is not used.

Create a SpatialReference object using a WKT string with a horizontal coordinate system.

# String below is the WKT for the 
# Geographic Coordinate system "WGS 1984" (factory code=4326)
wkt = """
GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],
PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]];
-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;
0.001;0.001;IsHighPrecision
"""

sr = arcpy.SpatialReference(text=wkt)

Create a SpatialReference object using a WKT2 string with a horizontal coordinate system.

# The following string is the WKT2 for the
# Projected Coordinate System "NAD 1983 StatePlane California V FIPS 0405 (US FEET)
# (factory code=2229)
wkt2 = """
PROJCRS[
   "NAD_1983_StatePlane_California_V_FIPS_0405_Feet",
   BASEGEOGCRS["GCS_North_American_1983",DATUM["D_North_American_1983",
   ELLIPSOID["GRS_1980",6378137.0,298.257222101,LENGTHUNIT["Meter",1.0]]
],
PRIMEM["Greenwich",0.0,ANGLEUNIT["Degree",0.017453292519943295]],CS[ellipsoidal,2],
AXIS["Latitude (lat)",north,ORDER[1]],AXIS["Longitude (lon)",east,ORDER[2]],
ANGLEUNIT["Degree",0.017453292519943295]],
CONVERSION["Lambert_Conformal_Conic",METHOD["Lambert_Conformal_Conic"],
PARAMETER["False_Easting",6561666.666666666,LENGTHUNIT["Foot_US",0.30480060960121924]],
PARAMETER["False_Northing",1640416.666666667,LENGTHUNIT["Foot_US",0.30480060960121924]],
PARAMETER["Central_Meridian",-118.0,ANGLEUNIT["Degree",0.017453292519943295]],
PARAMETER["Standard_Parallel_1",34.033333333333331,ANGLEUNIT["Degree",0.017453292519943295]],
PARAMETER["Standard_Parallel_2",35.466666666666669,ANGLEUNIT["Degree",0.017453292519943295]],
PARAMETER["Latitude_Of_Origin",33.5,ANGLEUNIT["Degree",0.017453292519943295]]],CS[Cartesian,2],
AXIS["Easting (X)",east,ORDER[1]],AXIS["Northing (Y)",north,ORDER[2]],
LENGTHUNIT["Foot_US",0.30480060960121924]]
"""

sr = arcpy.SpatialReference(text=wkt2)

Create a SpatialReference object using a WKT string with a horizontal and vertical coordinate system.

# The following string is the WKT for the 
# Geographic Coordinate system "WGS 1984" (factory code=4326)
wkt = """
GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],
PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],
VERTCS['WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],
PARAMETER['Vertical_Shift',0.0],PARAMETER['Direction',1.0],UNIT['Meter',1.0]];
-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;
0.001;0.001;IsHighPrecision
"""

sr = arcpy.SpatialReference(text=wkt)
String

属性

属性说明数据类型
GCS
(只读)

投影坐标系将针对其基于的地理坐标系返回 SpatialReference 对象。 地理坐标系将返回相同的 SpatialReference 值。

SpatialReference
MDomain
(只读)

测量值域的范围。

String
MFalseOriginAndUnits
(只读)

测量假定原点和单位。

String
MResolution
(可读写)

测量分辨率。

Double
MTolerance
(可读写)

测量容差。

Double
VCS
(只读)

如果坐标系具有垂直坐标系,则属性将针对其基于的垂直坐标系返回 VCS 对象。

Object
XYResolution
(可读写)

x,y 分辨率。

Double
XYTolerance
(可读写)

x,y 容差。

Double
ZDomain
(只读)

Z 值域的范围。

String
ZFalseOriginAndUnits
(只读)

Z 假定原点和单位。

String
ZResolution
(可读写)

z 分辨率。

Double
ZTolerance
(可读写)

z 容差。

Double
abbreviation
(可读写)

空间参考的缩写名称。

String
alias
(可读写)

空间参考的别名。

String
domain
(只读)

x,y 值域的范围。

String
factoryCode
(可读写)

空间参考的工厂代码或熟知 ID (WKID)。

Integer
falseOriginAndUnits
(只读)

假定原点和单位。

String
hasMPrecision
(只读)

指定是否已定义 m 值精度信息。

Boolean
hasXYPrecision
(只读)

指定是否已定义 x,y 坐标精度信息。

Boolean
hasZPrecision
(只读)

指定是否已定义 z 值精度信息。

Boolean
isHighPrecision
(可读写)

指定空间参考是否已设置高精度。

Boolean
name
(可读写)

空间参考的名称。

String
remarks
(可读写)

空间参考的注释字符串。

String
type
(可读写)

指定空间参考的类型。

  • Geographic - 地理坐标系
  • Projected - 投影坐标系
  • Unknown - 未知坐标系
String
usage
(只读)

用法说明。

String
PCSCode
(可读写)

投影坐标系代码。1

Integer
PCSName
(可读写)

投影坐标系名称。1

String
azimuth
(可读写)

投影坐标系的方位角。1

Double
centralMeridian
(可读写)

投影坐标系的中央经线。1

Double
centralMeridianInDegrees
(可读写)

投影坐标系的中央经线 (Lambda0)(以度为单位)。1

Double
centralParallel
(可读写)

投影坐标系的中央纬线。1

Double
classification
(只读)

地图投影的分类。1

String
falseEasting
(可读写)

投影坐标系的东偏移量。1

Double
falseNorthing
(可读写)

投影坐标系的北偏移量。1

Double
latitudeOf1st
(可读写)

投影坐标系第一个点的纬度。1

Double
latitudeOf2nd
(可读写)

投影坐标系第二个点的纬度。1

Double
latitudeOfOrigin
(可读写)

投影坐标系原点的纬度。1

Double
linearUnitCode
(可读写)

线性单位代码。1

Integer
linearUnitName
(可读写)

线性单位名称。1

String
longitude
(可读写)

此本初子午线的经度值。1

Double
longitudeOf1st
(可读写)

投影坐标系第一个点的经度。1

Double
longitudeOf2nd
(可读写)

投影坐标系第二个点的经度。1

Double
longitudeOfOrigin
(可读写)

投影坐标系原点的经度。1

Double
metersPerUnit
(只读)

米/线性单位。1

Double
projectionCode
(可读写)

投影代码。1

Integer
projectionName
(可读写)

投影名称。1

String
scaleFactor
(可读写)

投影坐标系的比例因子。1

Double
standardParallel1
(可读写)

投影坐标系的第一条纬线。1

Double
standardParallel2
(可读写)

投影坐标系的第二条纬线。1

Double
GCSCode
(可读写)

地理坐标系代码。2

Integer
GCSName
(可读写)

地理坐标系名称。2

String
angularUnitCode
(可读写)

角度单位代码。2

Integer
angularUnitName
(可读写)

角度单位名称。2

String
datumCode
(可读写)

基准代码。2

Integer
datumName
(可读写)

基准名称。2

String
flattening
(可读写)

此椭球体的扁率。2

Double
longitude
(可读写)

此本初子午线的经度值。2

Double
primeMeridianCode
(可读写)

本初子午线代码。2

Integer
primeMeridianName
(可读写)

本初子午线名称。2

String
radiansPerUnit
(只读)

每角度单位的弧度。2

Double
semiMajorAxis
(可读写)

此椭球体的半长轴长度。2

Double
semiMinorAxis
(可读写)

此椭球体的半短轴长度。2

Double
spheroidCode
(可读写)

椭球体代码。2

Integer
spheroidName
(可读写)

椭球体名称。2

String

方法概述

方法说明
create ()

使用属性创建 SpatialReference 对象。

createFromFile (prj_file)

从投影文件创建 SpatialReference 对象。

exportToString ({encoding})

将对象导出至其字符串表示。

loadFromString (string)

通过 WKT 字符串定义 SpatialReference 对象。

exportToString 方法可用于导出空间参考的 WKT 字符串表示。

  • 将 WKT 字符串与水平坐标系配合使用。
    # The following string is the WKT for the 
    # Geographic Coordinate system "WGS 1984" (factory code=4326)
    wkt = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],\
                  PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]];\
                  -400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;\
                  0.001;0.001;IsHighPrecision'
    
    sr = arcpy.SpatialReference()
    sr.loadFromString(wkt)
  • 将 WKT 字符串与水平坐标系和垂直坐标系配合使用。 请注意,将在 WKT 的 VERTCS 部分中定义垂直坐标系。
    # The following string is the WKT for the 
    # Geographic Coordinate system "WGS 1984" (factory code=4326), 
    # with a vertical coordinate system "WGS 1984" (factory code=115700)
    
    wkt = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],\
                  PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],\
                  VERTCS["WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],\
                  PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Meter",1.0]];\
                  -400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;\
                  0.001;0.001;IsHighPrecision'
    
    sr = arcpy.SpatialReference()
    sr.loadFromString(wkt)

setDomain (x_min, x_max, y_min, y_max)

设置 XY 属性域。

setFalseOriginAndUnits (false_x, false_y, xy_units)

设置 XY 的假定原点和单位。

setMDomain (m_min, m_max)

设置 M 属性域。

setMFalseOriginAndUnits (false_m, m_units)

设置 M 的假定原点和单位。

setZDomain (z_min, z_max)

设置 Z 属性域。

setZFalseOriginAndUnits (false_z, z_units)

设置 Z 的假定原点和单位。

方法

create ()
createFromFile (prj_file)
参数说明数据类型
prj_file

The projection file used to populate the SpatialReference object.

String
exportToString ({encoding})
参数说明数据类型
encoding

Specifies the encoding of the exported string.

  • WKT—The spatial reference will be exported to the WKT standard.
  • WKT2—The spatial reference will be exported to the WKT 2 standard.

(默认值为 WKT)

String
返回值
数据类型说明
String

对象的 WKT 或 WKT 2 表示。

loadFromString (string)
参数说明数据类型
string

The WKT string representation of the object.

String
setDomain (x_min, x_max, y_min, y_max)
参数说明数据类型
x_min

The minimum x-value.

Double
x_max

The maximum x-value.

Double
y_min

The minimum y-value.

Double
y_max

The maximum y-value.

Double
setFalseOriginAndUnits (false_x, false_y, xy_units)
参数说明数据类型
false_x

假定的 x 值。

Double
false_y

假定的 y 值。

Double
xy_units

xy 的单位。

String
setMDomain (m_min, m_max)
参数说明数据类型
m_min

最小 m 值。

Double
m_max

最大 m 值。

Double
setMFalseOriginAndUnits (false_m, m_units)
参数说明数据类型
false_m

The false m-value.

Double
m_units

The m units.

Double
setZDomain (z_min, z_max)
参数说明数据类型
z_min

最小 z 值。

Double
z_max

最大 z 值。

Double
setZFalseOriginAndUnits (false_z, z_units)
参数说明数据类型
false_z

The false z-value.

Double
z_units

The false z units.

Double

代码示例

SpatialReference 示例

对工作空间中的每个要素类,输出其空间参考的名称。

import arcpy

# Set the workspace environment
arcpy.env.workspace = "c:/base/base.gdb"

# Get a list of the feature classes in the input folder
feature_classes = arcpy.ListFeatureClasses()

# Loop through the list
for fc in feature_classes:
    # Create the spatial reference object
    spatial_ref = arcpy.Describe(fc).spatialReference

    # If the spatial reference is unknown
    if spatial_ref.name == "Unknown":
        print(r"{fc} has an unknown spatial reference")

    # Otherwise, print out the feature class name and spatial reference
    else:
        print(f"{fc} : {spatial_ref.name}")

相关主题