Сводка
Создает объект SpatialReference с пользовательской системой координат, оптимальной для определенного экстента и назначения вашей карты или анализа.
Поскольку невозможно спроецировать изогнутую поверхность на плоскость без искажений, существуют различные картографические проекции, которые обеспечивают компромисс между сохранением формы, площади, расстояния или направления. Назначенная цель и экстент карты может помочь определить, какое из этих свойств необходимо сохранять. Например, равноугольную проекцию можно выбрать для навигационной карты, чтобы сохранять направление курса, а проекцию, сохраняющую площади, можно использовать для визуализации или измерения относительного размера объектов.
Синтаксис
GenerateOptimalCoordinateSystem (extent, property, {custom_name})
Parameter | Объяснение | Тип данных |
extent | Экстент интереса. У объекта Extent должна быть пространственная привязка в географической системе координат, например, в WGS84. | Extent |
property | Свойство, представляющее цель проекции.
Не все свойства поддерживаются для всех экстентов интереса. Свойства CONFORMAL и EQUIDISTANT_MERIDIANS поддерживаются только для крупномасштабных экстентов, а свойство COMPROMISE_WORLD – только для экстентов на весь мир. Свойства EQUAL_AREA EQUIDISTANT_ONE_POINT поддерживаются для всех экстентов. | String |
custom_name | Имя пользовательской системы координат проекции. Если не указано, имя будет Custom_Projection. | String |
Тип данных | Объяснение |
SpatialReference | Объект SpatialReference с пользовательской системой координат проекции, оптимальной для определенного экстента и назначенной цели. |
Пример кода
Создает пользовательскую систему координат проекции, оптимизирующую сохранение формы в экстенте класса пространственных объектов, и проецирует класс объектов в пользовательскую систему координат.
import arcpy
# Input features in Projected Coordinate System
infc = r"C:\Projected.gdb\Colorado_Counties"
# Get extent of features
desc = arcpy.Describe(infc)
extent = desc.extent
# Project the extent to Geographic Coordinate System WGS84
gcs_sr = arcpy.SpatialReference(4326)
prj_extent = extent.projectAs(gcs_sr)
# Create custom projected coordinate system
custom_sr = arcpy.GenerateOptimalCoordinateSystem(prj_extent, "EQUAL_AREA",
"EQUAL_AREA_COLORADO")
# Project the input features to the custom projection
fc_prj = arcpy.management.Project(infc, "TestPoly_Projected", custom_sr)
Создает простой полигональный объект и проецирует его в пользовательскую систему координат с сохранением формы.
import arcpy
gcs_sr = arcpy.SpatialReference(4326) # Create WGS84 spatial reference
# Create polygon
poly_info = [[20, 20], [20, 60], [60, 60], [60, 20], [20, 20]]
poly_pts = arcpy.Array([arcpy.Point(*coords) for coords in poly_info])
poly = arcpy.Polygon(poly_pts, gcs_sr)
# Create extent object from polygon
extent = poly.extent
# Create custom projected coordinate system
custom_sr = arcpy.GenerateOptimalCoordinateSystem(extent, "CONFORMAL")
# Project the polygon to the custom projection
poly_prj = poly.projectAs(custom_sr)