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
(чтение и запись)

Разрешение xy.

Double
XYTolerance
(чтение и запись)

Допуск xy.

Double
ZDomain
(только чтение)

Экстент z-домена.

String
ZFalseOriginAndUnits
(только чтение)

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

String
ZResolution
(чтение и запись)

Свойство z-разрешения.

Double
ZTolerance
(чтение и запись)

Свойство z-допуска.

Double
abbreviation
(чтение и запись)

Сокращенное имя пространственной привязки.

String
alias
(чтение и запись)

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

String
domain
(только чтение)

Экстент домена xy.

String
factoryCode
(чтение и запись)

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

Integer
falseOriginAndUnits
(только чтение)

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

String
hasMPrecision
(только чтение)

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

Boolean
hasXYPrecision
(только чтение)

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

Boolean
hasZPrecision
(только чтение)

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

Boolean
isHighPrecision
(чтение и запись)

Обозначает, была ли для пространственной привязки задана высокая точность.

Boolean
name
(чтение и запись)

Имя пространственной привязки.

String
remarks
(чтение и запись)

Строка комментария пространственной привязки.

String
type
(чтение и запись)

Тип пространственной привязки.

  • Geographic — географическая система координат.
  • Projected — система координат проекции.
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)

Определяет объект 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)

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

Минимальное x-значение.

Double
x_max

Максимальное x-значение.

Double
y_min

Минимальное y-значение.

Double
y_max

Максимальное y-значение.

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

Смещение m-значения.

Double
m_units

Единицы измерения m.

Double
setZDomain (z_min, z_max)
ПараметрОписаниеТип данных
z_min

Минимальное z-значение.

Double
z_max

Максимальное z-значение.

Double
setZFalseOriginAndUnits (false_z, z_units)
ПараметрОписаниеТип данных
false_z

Смещение z-значения.

Double
z_units

Единицы измерения смещения z.

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

Связанные разделы