Types d’entrée personnalisés d’imagerie orientée

Les types d’entrée personnalisés d’imagerie orientée peuvent être implémentés dans Python selon les données d’image en entrée que vous voulez ajouter au jeu de données d’imagerie orientée. Les types d’entrée personnalisés permettent aux utilisateurs d’intégrer des images dans le jeu de données d’imagerie orientée tout en conservant la cohérence et en respectant des nomes relatives aux métadonnées prédéfinies.

Suivez les conseils ci-dessous pour créer le module Python. Le module fournit la fonctionnalité permettant de définir les métadonnées, d’extraire des valeurs et d’extraire des données dans la structure d’imagerie orientée.

Conventions de dénomination du module et de la classe

Nommez le dossier contenant le module, le module et la classe d’après le type d’entrée pour l’ajout d’images au jeu de données d’imagerie orientée. La convention de dénomination garantit que le module et la classe pourront être identifiés et utilisés de façon intuitive.

Par exemple, si le type d’entrée est MyInputType, nommez le dossier, le module et la classe comme suit :

  • Nom du dossier : MyInputType
  • Nom du module : MyInputType.py
  • Nom de la classe : MyInputType

Méthodes de classe

La classe inclut des méthodes permettant de définir la structure de données en entrée, les paramètres auxiliaires, les champs du jeu de données d’imagerie orientée et les propriétés du jeu de données d’imagerie orientée, ainsi que de générer des enregistrements d’imagerie orientée. La classe doit contenir les méthodes input_data_schema, auxiliary_parameters, oriented_imagery_fields, oriented_imagery_properties et oriented_imagery_records.

input_data_schema

La méthode input_data_schema définit les données en entrée requises pour générer des enregistrements d’imagerie orientée et renvoie la valeur décrite ci-dessous.

Retour

La méthode input_data_schema renvoie un dictionnaire contenant la structure de données en entrée.

Chaque clé représente l’entrée requise pour ajouter les images au jeu de données d’imagerie orientée et doit être spécifiée dans la valeur de la clé, qu’il s’agisse d’une entrée requise ou facultative.

Voici un exemple pour la méthode 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

La méthode auxiliary_parameters associe les paramètres auxiliaires aux valeurs par défaut.

Retour

La méthode auxiliary_parameters renvoie un dictionnaire contenant les informations relatives aux paramètres auxiliaires.

Le paramètre auxiliaire doit être spécifié en tant que clé et la valeur par défaut correspondante de la clé doit être spécifiée sous forme de chaînes. Si aucun paramètre auxiliaire n’est requis, un dictionnaire vide doit être renvoyé.

Voici un exemple pour la méthode auxiliary_parameters.

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

Dans la fenêtre Géotraitement, les paramètres Données en entrée et Paramètres auxiliaires de l’outil Ajouter des images à partir d’un type d’entrée personnalisé sont mis à jour en fonction des valeurs de retour des méthodes input_data_schema et auxiliary_parameters.

oriented_imagery_fields

La méthode oriented_imagery_fields définit les champs à ajouter au jeu de données d’imagerie orientée.

Arguments

Les arguments sont les suivants :

  • input_data : dictionnaire contenant les informations relatives aux données en entrée.

    Les clés de input_data correspondent aux clés renvoyées par la méthode input_data_schema et les valeurs sont les données en entrée fournies par l’utilisateur sous forme de chaînes.

    Voici un exemple de valeur input_data.

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

  • aux_input : dictionnaire de paramètres auxiliaires et de valeurs.

    Les clés de aux_input correspondent aux clés renvoyées par la méthode auxiliary_parameters et les valeurs sont les valeurs de paramètre sous forme de chaînes.

    Voici un exemple de valeur aux_input.

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

Retour

La méthode oriented_imagery_fields renvoie un tuple avec les listes suivantes :

Voici un exemple pour la méthode 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

La méthode oriented_imagery_fields définit les valeurs par défaut des propriétés du jeu de données d’imagerie orientée. Ces valeurs peuvent être modifiées à l’aide de l’outil Mettre à jour les propriétés du jeu de données d’imagerie orientée.

Arguments

Les arguments sont les suivants :

  • input_data : dictionnaire contenant les informations relatives aux données en entrée.

    Les clés de input_data correspondent aux clés renvoyées par la méthode input_data_schema et les valeurs sont les données en entrée fournies par l’utilisateur sous forme de chaînes.

  • aux_input : dictionnaire de paramètres auxiliaires et de valeurs.

    Les clés de aux_input correspondent aux clés renvoyées par la méthode auxiliary_parameters et les valeurs sont les valeurs de paramètre au format chaîne.

Retour

La méthode oriented_imagery_fields renvoie un dictionnaire contenant les noms et les valeurs des propriétés du jeu de données d’imagerie orientée.

La fonction ArcPy Describe extrait toutes les propriétés d’imagerie orientée ainsi que leurs valeurs dans un dictionnaire. La méthode oriented_imagery_properties peut renvoyer une propriété, à l’exception de horizontalMeasurementUnit. L’unité de mesure horizontale est définie par le système de coordonnées du jeu de données.

Voici un exemple pour la méthode 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

La méthode oriented_imagery_records lit les métadonnées pour extraire les informations et génère des dictionnaires contenant des valeurs dans la structure définie.

Arguments

Les arguments sont les suivants :

  • input_data : dictionnaire contenant les informations relatives aux données en entrée.

    Les clés de input_data correspondent aux clés renvoyées par la méthode input_data_schema et les valeurs sont les données en entrée fournies par l’utilisateur au format chaîne.

  • aux_input : dictionnaire de paramètres auxiliaires et de valeurs.

    Les clés de aux_input correspondent aux clés renvoyées par la méthode auxiliary_parameters et les valeurs sont les valeurs de paramètre sous forme de chaînes.

Céder le passage

La méthode oriented_imagery_records génère un dictionnaire contenant les valeurs des champs de la table du jeu de données d’imagerie orientée.

Le dictionnaire doit contenir tous les champs qui sont définis dans la méthode oriented_imagery_fields en tant que clés. La clé SHAPE@ doit contenir la localisation de la caméra en tant qu’objet ArcPy PointGeometry.

Voici un exemple pour la méthode 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
    }

Rubriques connexes