Mensuration

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

Выполняет измерения на изображении с помощью модели сенсора, которая включает геометрическую модель сенсора и соответствующие метаданные (Image Support Data), поставляемые с изображением. Поддерживаемые типы измерений включают точку, расстояние или длину, площадь и высоту объекта.

Обсуждение

Измерение изображения основывается на преобразовании модели сенсора изображения на землю. Для измерения одного изображения преобразованию требуется высота точки. Высоту можно оценить по средней высоте, но модель поверхности даст более точные результаты. Для вычисления измерения требуются координаты x, y изображения и координата z на земле. Когда модель поверхности включена, расчет является итеративным, пересекая луч от изображения до модели поверхности, чтобы определить точку пересечения с землей. В редких случаях, особенно в случаях пересеченной местности и большого наклона, итерация может не привести к правильному решению из-за неоднозначности. В этих случаях система не может вычислить отдельную точку, что приводит к отсутствию действительного решения.

Примечание:

Методы измерения (точка, длина, площадь и высота объекта) могут не возвращать значение, если решение не определено. С этой функцией важно использовать только координаты изображения, поскольку координаты карты сначала будут преобразованы в пространство изображения, что приведет к возможной ошибке.

Сенсоры фиксируют двухмерное представление трехмерного мира.

Вычислите центральную точку изображения.

import arcpy
raster = arcpy.sa.Raster(raster_path)
mens = arcpy.ia.Mensuration(raster)
result = mens.point((raster.width/2, raster.height/2))
print(f"Center: ({result.lat}, {result.lon})")

Для методов, в которых используются две точки, будут возвращены расстояние и направление. Расстояние - это линейное измерение по плоскости земли. Направление - это северный азимут от линии, определяемой от первой измеренной точки до второй измеренной точки. Важно измерять точки на изображении, расположенные вдоль плоской поверхности.

Для высоты, измеряемой от основания объекта до верха объекта, предполагается, что точки выровнены по вертикали, что означает, что нижняя точка находится непосредственно под верхней точкой. Для измерений с использованием теней информация об угле солнца должна быть включена в метаданные модели сенсора. Предполагается, что объект отбрасывает тень на ровную местность, которая пересекает основание объекта в точке, которая считается базой. Если местность имеет уклон, возвращаемое значение высоты может увеличиваться или уменьшаться.

Правильное измерение высоты

Вычислите расстояние по верхнему краю изображения.

import arcpy
raster = arcpy.sa.Raster(raster_path)
mens = arcpy.ia.Mensuration(raster)
result = mens.distance((0, 0), (raster.width, 0))
print(f"Image Width: {result.distance} m")

При расчете площади используется модель сенсора изображения и определенная поверхность для расчета покрытия земли и периметра изображения. Это вычисляется на эллипсоиде и не соответствует рельефу. Этот метод может не возвращать значение, если он не может свести решение. С этой функцией важно использовать только координаты изображения, поскольку координаты карты сначала будут преобразованы в пространство изображения, что приведет к возможной ошибке.

Вычислите площадь земной поверхности на изображении.

import arcpy
raster = arcpy.sa.Raster(raster_path)
mens = arcpy.ia.Mensuration(raster)
result = mens.area([(0, 0), (raster.width, 0),
                    (raster.width, raster.height), (0, raster.height)])
print(f"Image Size: {result.area} m^2")

Расчет высоты выполняется на эллипсоиде и не учитывает рельеф местности. Этот метод может не возвращать значение, если он не может свести решение. В этом методе важно использовать только координаты изображения (столбец, строка), поскольку координаты карты будут преобразованы в пространство изображения, что приведет к возможной ошибке.

Измерение высоты

Вычислите высоту объекта:

import arcpy
raster = arcpy.sa.Raster(raster_path)
mens = arcpy.ia.Mensuration(raster)
result = mens.height((base_x, base_y),
                     (top_x, top_y),
                      Mensuration.base_to_top)
print (f"Height: {result.height} m")

Синтаксис

 Mensuration (raster)
ПараметрОписаниеТип данных
raster

A raster object created with the Raster class, or the path to a raster dataset.

Raster

Свойства

СвойствоОписаниеТип данных
base_to_shadow
(чтение и запись)

Рассчитывает высоту объекта путем измерения от основания объекта до верхней точки его тени на поверхности земли.

Long
base_to_top
(чтение и запись)

Рассчитывает высоту наземного объекта путем измерения от основания объекта до его верхней точки.

Long
top_to_shadow
(чтение и запись)

Рассчитывает высоту объекта путем измерения от вершины объекта до верхней точки его тени на поверхности земли.

Long

Обзор метода

МетодОписание
area (polygon)

Вычисляет площадь полигона на изображении на основе модели сенсора.

distance (from_point, to_point)

Вычисляет географическое расстояние между двумя точками на изображении на основе модели сенсора.

height (base_point, top_point, height_type)

Вычислите вертикальную высоту объекта.

point (point)

Вычисляет географические координаты на основе модели сенсора.

Методы

area (polygon)
ПараметрОписаниеТип данных
polygon

The input polygon. The polygon can be specified as a Polygon object, a list of Point objects, or a list of coordinate pairs in tuples.

If specified as a list of tuples, the x- and y-coordinate values must be in the image coordinate system (column, row). If other spatial reference systems are preferred, use Polygon or Point objects with a spatial reference system defined.

Polygon
Возвращаемое значение
Тип данныхОписание
AreaMeasurement

Вычисленные значения площади. Возвращаются следующие атрибуты:

  • area (float) - Площадь в квадратных метрах.
  • perimeter (float) - Периметр в метрах.
  • sensor_name (string) - Название модели сенсора.

Вычислите площадь земной поверхности на изображении.

import arcpy
in_raster = arcpy.sa.Raster('Charlotte_multiband.tif')
mensuration = arcpy.ia.Mensuration(in_raster)
result = mensuration.area([(0, 0), (in_raster.width, 0), (in_raster.width, in_raster.height), (0, in_raster.height)])
print(f"Image Size: {result.area} m^2")
distance (from_point, to_point)
ПараметрОписаниеТип данных
from_point

The input coordinates of the origin point. The point can be specified as a Point object, a PointGeometry object, or a coordinate pair in a tuple.

If specified as a tuple, the x- and y-coordinate values must be in an image coordinate system (column, row). If other spatial reference systems are preferred, use the Point or PointGeometry objects with a spatial reference system defined.

Point
to_point

The input coordinates of the destination point. The point can be specified as a Point object, a PointGeometry object, or a coordinate pair in a tuple.

If specified as a tuple, the x-and y-coordinate values must be in the image coordinate system (column, row). If other spatial reference systems are preferred, use Point or PointGeometry objects with a spatial reference system defined.

Point
Возвращаемое значение
Тип данныхОписание
LinearMeasurement

Вычисленные значения расстояния. Возвращаются следующие атрибуты:

  • distance (float) - Расстояние в метрах.
  • azimuth (float) - Азимутальный угол в десятичных градусах.
  • sensor_name (string) - Название модели сенсора.

Вычислите расстояние по верхнему краю изображения.

import arcpy
in_raster = arcpy.Raster('Charlotte_multiband.tif')
mensuration = arcpy.ia.Mensuration(in_raster)
result = mensuration.distance((0, 0),( raster.width, 0))
print(f"Image Width: {result.distance} m")
height (base_point, top_point, height_type)
ПараметрОписаниеТип данных
base_point

The input coordinates of the base of the feature to measure. This can be specified as a Point object, a PointGeometry object, or a coordinate pair in a tuple.

If specified as a tuple, the x- and y-coordinate values should be in the image coordinate system (column, row). If other spatial reference systems are preferred, use PointGeometry or Point objects with a spatial reference system defined.

Point
top_point

The input coordinates of the top of the feature to measure. The point can be specified as a Point object, a PointGeometry object, or a coordinate pair in a tuple.

If specified as a tuple, the x- and y-coordinate values should be in the image coordinate system (column, row). If other spatial reference systems are preferred, use PointGeometry or Point objects with a spatial reference system defined.

Point
height_type

Height measurements of an object can be obtained when a sensor model exists for an image. Sun angle information is required to make measurements using shadows. The height of an object is calculated between two points, based on a sensor model. Three types of height measurements are supported:

  • base_to_top—Calculates the height of a ground feature by measuring from the base of the object to the top of the object.
  • base_to_shadow—Calculates the height of a feature by measuring from the base of the object to the top of the object's shadow on the ground.
  • top_to_shadow—Calculates the height of a feature by measuring from the top of the object to the top of the object's shadow on the ground.

Integer
Возвращаемое значение
Тип данныхОписание
HeightMeasurement

Вычисленные значения высоты. Возвращаются следующие атрибуты:

  • height (float) - Высота в метрах.
  • sensor_name (string) - Название модели сенсора.

Вычислите высоту объекта.

import arcpy
in_raster = arcpy.sa.Raster('Charlotte_multiband.tif')
mensuration = arcpy.ia.Mensuration(in_raster)
result = mensuration.height((base_x, base_y), (top_x, top_y), Mensuration.base_to_top)
print(f"Height: {result.height} m")
point (point)
ПараметрОписаниеТип данных
point

The input coordinates to measure. The point can be specified as a Point object, a PointGeometry object, or a coordinate pair in a tuple.

If specified as a tuple, the x- and y-coordinate values must be in the image coordinate system (column, row). If other spatial reference systems are preferred, use Point or PointGeometry objects with a spatial reference system defined.

Point
Возвращаемое значение
Тип данныхОписание
PointMeasurement

Вычисленное наземное местоположение. Возвращаются следующие атрибуты:

  • lon (float) - Долгота в десятичных градусах (WGS84).
  • lat (float) - Широта в десятичных градусах (WGS84).
  • elev (float) - Высота в метрах (HAE).
  • sensor_name (string) - Название модели сенсора.

Возвращает значения широты и долготы центральной точки изображения.

import arcpy
in_raster = arcpy.Raster('Charlotte_multiband.tif')
mensuration = arcpy.ia.Mensuration(in_raster)
result = mensuration.point((in_raster.width/2, in_raster.height/2))
print(f"Center: ({result.lat}, {result.lon})")