Пользовательские входные типы ориентированных изображений могут быть реализованы в Python в соответствии с входными данными изображений, которые вы хотите добавить в набор данных ориентированных изображений. Пользовательские типы входных данных позволяют пользователям интегрировать изображения в набор данных ориентированных изображений, сохраняя при этом согласованность и придерживаясь предопределенных стандартов метаданных.
При создании модуля Python используйте приведенные ниже рекомендации. Модуль предоставляет функциональные возможности для задания метаданных, извлечения значений и данных в схеме ориентированных изображений.
Правила присвоения имен для модуля и класса
Назовите папку, содержащую модуль, сам модуль и класс, в соответствии с типом входных данных для добавления изображений в набор данных ориентированных изображений. Соглашение об именовании гарантирует, что модуль и класс будут идентифицированы и интуитивно понятны в использовании.
Например, если используются входные данные MyInputType, назовите папку, модуль и класс следующим образом:
- Имя папки - MyInputType
- Имя модуля - MyInputType.py
- Имя класса - MyInputType
Методы класса
Этот класс включает методы для определения схемы входных данных, вспомогательных параметров, полей набора данных ориентированных изображений и свойств набора данных ориентированных изображений, а также для создания записей об ориентированных изображениях. Класс должен содержать методы input_data_schema, auxiliary_parameters, oriented_imagery_fields, oriented_imagery_properties и oriented_imagery_records.
input_data_schema
Метод input_data_schema определяет необходимые входные данные для создания записей ориентированных изображений и возвращает значение, описанное ниже.
Возврат
Метод input_data_schema возвращает словарь, содержащий схему входных данных.
Каждый ключ представляет собой входные данные, необходимые для добавления изображений в набор данных ориентированных изображений, в значении ключа должно быть указано, является ли он обязательным или дополнительным.
Это пример метода input_data_schema.def input_data_schema(self):
"""Defines input data."""
return {
"Metadata File": {"required": True},
"Image Location": {"required": True},
"DEM": {"required": False}
}
auxiliary_parameters
Метод auxiliary_parameters задает вспомогательные параметры со значениями по умолчанию.
Возврат
Метод auxiliary_parameters возвращает словарь, содержащий информацию о вспомогательных параметрах.
Вспомогательный параметр должен быть указан как ключ, а соответствующее ключу значение по умолчанию - как строки. Если вспомогательный параметр не требуется, должен быть возвращен пустой словарь.
Это пример метода auxiliary_parameters.def auxiliary_parameters(self):
"""Defines auxiliary parameters."""
return {
"Default Ground Elevation": "0",
"Offset": "1.2"
}
На панели Геообработка параметры Добавить изображения из пользовательского входного типа, Входные данные и Вспомогательные параметры обновляются на основе возвращаемых значений от методов input_data_schema и auxiliary_parameters.
oriented_imagery_fields
Метод oriented_imagery_fields задает поля, которые должны быть добавлены в набор данных ориентированных изображений.
Аргументы
Аргументы следующие:
- input_data - словарь, содержащий информацию о входных данных.
Ключи input_data соответствуют ключам, возвращаемым методом input_data_schema, а значения являются входными данными, предоставленными пользователем в виде строк.
Это пример значения input_data.
{ "Metadata File": "C:/Documents/Files/metadata.json", "Image Location": "C:/Documents/Images", "DEM": None }
- aux_input - словарь вспомогательных параметров и значений.
Ключи aux_input соответствуют ключам, возвращаемым методом auxiliary_parameters, а значения являются значениями параметров в виде строк.
Это пример значения aux_input.
{ "Default Ground Elevation": "309", "Offset": "1.2" }
Возврат
Метод oriented_imagery_fields возвращает кортеж со следующими списками:
- Список строк - поля, которые являются частью схемы таблицы атрибутов ориентированных изображений. Поля ImagePath и SHAPE@ являются обязательными и должны присутствовать в списке.
- Список словарей - дополнительные пользовательские поля должны быть предоставлены в виде списка словарей с field_name и field_type в качестве ключей. При задании имен дополнительных полей ознакомьтесь с правилами и ограничениями в отношении имен файлов, а также с поддерживаемыми типами данных полей ArcGIS.
Это пример метода oriented_imagery_fields.def oriented_imagery_fields(self, input_data, aux_params):
"""Define the input schema for the tool."""
standard_fields = [
"SHAPE@",
"Name",
"ImagePath",
"AcquisitionDate",
"CameraHeading",
"CameraPitch",
"CameraRoll",
"HorizontalFieldOfView",
"VerticalFieldOfView",
"CameraHeight",
"FarDistance",
"NearDistance",
"OrientedImageryType",
"CameraOrientation"
]
additional_fields = [
{"field_name":"CameraId", "field_type":"LONG"},
{"field_name":"CameraType", "field_type":"TEXT"}
]
return standard_fields, additional_fields
oriented_imagery_properties
Метод oriented_imagery_fields задает значения по умолчанию для свойств набора данных ориентированных изображений. Эти значения можно изменить с помощью инструмента Обновить свойства набора данных ориентированных изображений.
Аргументы
Аргументы следующие:
- input_data - словарь, содержащий информацию о входных данных.
Ключи input_data соответствуют ключам, возвращаемым методом input_data_schema, а значения являются входными данными, предоставленными пользователем в виде строк.
- aux_input - словарь вспомогательных параметров и значений.
Ключи aux_input соответствуют ключам, возвращаемым методом auxiliary_parameters, а значения являются значениями параметров в формате строки.
Возврат
Метод oriented_imagery_fields возвращает словарь с именами и значениями свойств набора данных ориентированных изображений.
Функция ArcPy Describe извлекает все свойства ориентированных изображений и соответствующие им значения в виде словаря. Метод oriented_imagery_properties может возвращать любое свойство, за исключением horizontalMeasurementUnit. Горизонтальные единицы измерения определяется системой координат набора данных.
Это пример метода oriented_imagery_properties.def oriented_imagery_properties(self, input_data, aux_params):
"""Define the default properties for the tool."""
return {
"maximumDistance": 2000,
"orientedImageryType": "Oblique",
"cameraPitch": 45,
"farDistance": 500,
"nearDistance": 120
}
oriented_imagery_records
Метод oriented_imagery_records считывает метаданные для извлечения информации и выдает словари со значениями в заданной схеме.
Аргументы
Аргументы следующие:
- input_data - словарь, содержащий информацию о входных данных.
Ключи input_data соответствуют ключам, возвращаемым методом input_data_schema, а значения являются входными данными, предоставленными пользователем в формате строки.
- aux_input - словарь вспомогательных параметров и значений.
Ключи aux_input соответствуют ключам, возвращаемым методом auxiliary_parameters, а значения являются значениями параметров в виде строк.
Уступи дорогу
Метод oriented_imagery_records позволяет получить словарь, содержащий значения полей таблицы набора данных ориентированных изображений.
Словарь должен содержать все поля, которые заданы в методе oriented_imagery_fields в качестве его ключей. Ключ SHAPE@ должен содержать местоположение камеры в качестве объекта ArcPy PointGeometry.
Это пример метода oriented_imagery_properties.def oriented_imagery_properties(self, input_data, aux_input):
"""Generate the oriented imagery records."""
metadata = input_data["Metadata File"]
image_folder = input_data["Image Location"]
dem = input_data["DEM"]
def_ground = aux_input["Default Ground Elevation"]
offset = aux_input["Offset"]
# Implementation goes here
yield {
"SHAPE@": camera_point_geom,
"Name": image_name,
"ImagePath": image_path,
"AcquisitionDate": acquisition_date,
"CameraHeading": heading,
"CameraPitch": pitch,
"CameraRoll": roll,
"HorizontalFieldOfView": hfov,
"VerticalFieldOfView": vfov,
"CameraHeight": camera_height,
"FarDistance": far_distance,
"NearDistance": near_distance,
"OrientedImageryType": oi_type,
"CameraOrientation": cam_ori,
"CameraId": int(c_id),
"CameraType": c_type
}