Tipos de entradas personalizadas de imágenes orientadas

Los tipos de entradas personalizadas de imágenes orientadas se pueden implementar en Python de acuerdo con los datos de imágenes de entrada que desee agregar al dataset de imágenes orientadas. Los tipos de entradas personalizadas permiten que los usuarios integren imágenes al dataset de imágenes orientadas a la vez que mantienen la coherencia y cumplen los estándares de metadatos predefinidos.

Utilice las directrices siguientes al crear el módulo Python. El módulo proporciona funciones para definir los metadatos, recuperar valores y extraer datos en el esquema de imágenes orientadas.

Convenciones de nomenclatura de clase y módulo

Nombre de la carpeta que contiene el módulo, módulo y clase detrás del tipo de entrada para agregar imágenes al dataset de imágenes orientadas. La convención de nomenclatura garantiza que el módulo y la clase sean identificables y se usen de forma intuitiva.

Por ejemplo, si el tipo de entrada es MyInputType, nombre la carpeta, el módulo y la clase como sigue:

  • Nombre de carpeta: MyInputType
  • Nombre de módulo: MyInputType.py
  • Nombre de clase: MyInputType

Métodos de clase

La clase incluye métodos para definir el esquema de datos de entrada, los parámetros auxiliares, los campos de dataset de imágenes orientadas y las propiedades del dataset de imágenes orientadas, así como para generar los registros de imágenes orientadas. La clase debe contener los métodos input_data_schema, auxiliary_parameters, oriented_imagery_fields, oriented_imagery_properties y oriented_imagery_records.

input_data_schema

El método input_data_schema define los datos de entrada necesarios para generar registros de imágenes orientadas y devuelve el valor descrito a continuación.

Retorno

El método input_data_schema devuelve un diccionario que contiene el esquema de datos de entrada.

Cada clave representa la entrada necesaria para agregar las imágenes al dataset de imágenes orientadas y debe especificarse en el valor de la clave, ya se requiera o se trate de una entrada opcional.

Este es un ejemplo del método 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

El método auxiliary_parameters define parámetros auxiliares con los valores predeterminados.

Retorno

El método auxiliary_parameters devuelve un diccionario que contiene información de los parámetros auxiliares.

El parámetro auxiliar debe especificarse como la clave y el valor predeterminado de la clase como cadenas de texto. Si no se requiere ningún parámetro auxiliar, debe devolverse un diccionario vacío.

Este es un ejemplo del método auxiliary_parameters.

def auxiliary_parameters(self):
    """Defines auxiliary parameters."""
    return {
        "Default Ground Elevation": "0",
        "Offset": "1.2"		
    }

El panel Geoprocesamiento, los parámetros Datos de entrada y Parámetros auxiliares de la herramienta Agregar imágenes desde tipo de entrada personalizado se actualizan basándose en los valores devueltos de los métodos input_data_schema y auxiliary_parameters.

oriented_imagery_fields

El método oriented_imagery_fields define los campos que deben agregarse al dataset de imágenes orientadas.

Argumentos

Los argumentos son los siguientes:

  • input_data: diccionario que contiene información de los datos de entrada.

    Las claves de input_data corresponden a las claves devueltas por el método input_data_schema; los valores son los datos de entrada proporcionados por el usuario como cadenas de texto.

    Este es un ejemplo de un valor input_data.

    {
         "Metadata File": "C:/Documents/Files/metadata.json",
         "Image Location": "C:/Documents/Images",
         "DEM": None					
     }

  • aux_input: diccionario de parámetros y valores auxiliares.

    Las claves de aux_input corresponden a las claves devueltas por el método auxiliary_parameters; los valores son los valores de parámetros como cadenas de texto.

    Este es un ejemplo de un valor aux_input.

    {
         "Default Ground Elevation": "309",
         "Offset": "1.2"				
     }

Retorno

El método oriented_imagery_fields devuelve una tupla con las listas siguientes:

Este es un ejemplo del método 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

El método oriented_imagery_fields define los valores predeterminados de las propiedades de datasets de imágenes orientadas. Estos valores pueden modificarse con la herramienta Actualizar propiedades del dataset de imágenes orientadas.

Argumentos

Los argumentos son los siguientes:

  • input_data: diccionario que contiene información de los datos de entrada.

    Las claves de input_data corresponden a las claves devueltas por el método input_data_schema; los valores son los datos de entrada proporcionados por el usuario como cadenas de texto.

  • aux_input: diccionario de parámetros y valores auxiliares.

    Las claves de aux_input corresponden a las claves devueltas por el método auxiliary_parameters; los valores son los valores de parámetros en formato de cadena de texto.

Retorno

El método oriented_imagery_fields devuelve un diccionario con valores y nombres de propiedades de datasets de imágenes orientadas.

La función ArcPy Describe recupera todas las propiedades de imágenes orientadas y sus valores correspondientes como diccionario. El método oriented_imagery_properties puede devolver cualquier propiedad, excepto horizontalMeasurementUnit. La unidad de medición horizontal viene determinada por el sistema de coordenadas del dataset.

Este es un ejemplo del método 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

El método oriented_imagery_records lee los metadatos para recuperar la información y genera diccionarios con valores en el esquema definido.

Argumentos

Los argumentos son los siguientes:

  • input_data: diccionario que contiene información de los datos de entrada.

    Las claves de input_data corresponden a las claves devueltas por el método input_data_schema; los valores son los datos de entrada proporcionados por el usuario en formato de cadena de texto.

  • aux_input: diccionario de parámetros y valores auxiliares.

    Las claves de aux_input corresponden a las claves devueltas por el método auxiliary_parameters; los valores son los valores de parámetros como cadenas de texto.

Ceda el paso

El método oriented_imagery_records produce un diccionario que contiene los valores de campo de la tabla del dataset de imágenes orientadas.

El diccionario debe contener todos los campos que se definen en el método oriented_imagery_fields como sus claves. La clave SHAPE@ debe contener la ubicación de cámara como un objeto ArcPy PointGeometry.

Este es un ejemplo del método 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
    }

Temas relacionados