Skip to main content

SpatialReference

Краткая информация

Каждая часть пространственной привязки имеет множество свойств, в частности, систему координат, которая определяет, какие опции картографической проекции используются для определения горизонтальных координат.

Обсуждение

Объект SpatialReference так же может быть доступен из существующих наборов данных, используя свойство Describe spatialReference.

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

Экстенты XY, Z и M – это не тоже самое, что домены в пространственной привязке. Домены XY, Z и M значений в пространственной привязке задают допустимый диапазон значений координат, которые можно сохранить в классе объектов. Экстенты класса объектов отражают реальный диапазон значений координат, в пределах которых располагаются объекты этого класса. Эти экстенты не могут быть больше, чем значения домена.

Объект SpatialReference обеспечивает работу операторов equal (==) и not equal (!=) для сравнения пространственных привязок.

Примечание:

Какие свойства пространственной привязки доступны, зависит от используемой системы координат. В списке свойств, приведенном ниже, свойства, доступные с системой координат проекции, обозначаются цифрой 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

(Чтение / Запись)

Заводской код WKID пространственной привязки.

Integer

falseOriginAndUnits

(Только для чтения)

Смещение относительно начала координат и единицы измерения.

String

hasMPrecision

(Только для чтения)

Определяет, была ли задана информация о точности m-значения.

Boolean

hasXYPrecision

(Только для чтения)

Определяет, была ли задана информация о точности xy.

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 из файла проекции.

Имя Объяснение Тип данных

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)

Определяет объект SpatialReference из строки WKT.

Метод 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 с горизонтальной и вертикальной системами координат. Помните, что вертикальная система координат задается в разделе VERTCS WKT.

    
    # 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)
    
    
Имя Объяснение Тип данных

string

The WKT string representation of the object.

String

setDomain(x_min, x_max, y_min, y_max)

Задает домен x,y.

Имя Объяснение Тип данных

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)

Устанавливает смещение начала координат для x,y и единицы измерения.

Имя Объяснение Тип данных

false_x

The false x-value.

Double

false_y

The false y-value.

Double

xy_units

The x,y-units.

String

setMDomain(m_min, m_max)

Устанавливает m-домен.

Имя Объяснение Тип данных

m_min

The minimum m-value.

Double

m_max

The maximum m-value.

Double

setMFalseOriginAndUnits(false_m, m_units)

Устанавливает смещение начала координат для m и единицы измерения.

Имя Объяснение Тип данных

false_m

The false m-value.

Double

m_units

The m-units.

Double

setZDomain(z_min, z_max)

Устанавливает z-домен.

Имя Объяснение Тип данных

z_min

The minimum z-value.

Double

z_max

The maximum z-value.

Double

setZFalseOriginAndUnits(false_z, z_units)

Устанавливает смещение начала координат для z и единицы измерения.

Имя Объяснение Тип данных

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}")