Пользовательские входные типы ориентированных изображений

Пользовательские входные типы ориентированных изображений могут быть реализованы в 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 возвращает кортеж со следующими списками:

Это пример метода 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
    }

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