Benutzerdefinierte Oriented Imagery-Eingabetypen können in Python gemäß den Eingabebilddaten implementiert werden, die Sie dem Oriented Imagery-Dataset hinzufügen möchten. Mit den benutzerdefinierten Eingabetypen können Benutzer Bilder in das Oriented Imagery-Dataset integrieren und dabei gleichzeitig die Konsistenz wahren sowie vordefinierte Metadatenstandards einhalten.
Beachten Sie beim Erstellen des Python-Moduls die folgenden Richtlinien. Das Modul bietet Funktionen zum Definieren der Metadaten, zum Abrufen von Werten und zum Extrahieren von Daten im Oriented Imagery-Schema.
Benennungsregeln für Modul und Klasse
Benennen Sie den Ordner, der das Modul enthält, das Modul und die Klasse nach dem Eingabetyp zum Hinzufügen von Bilddaten zum Oriented Imagery-Dataset. Die Benennungsregel stellt sicher, dass das Modul und die Klasse identifiziert und intuitiv verwendet werden können.
Wenn der Eingabetyp z. B. MyInputType ist, benennen Sie den Ordner, das Modul und die Klasse wie folgt:
- Ordnername: MyInputType
- Modulname: .MyInputType.py
- Klassenname: MyInputType
Klassenmethoden
Die Klasse umfasst Methoden zum Definieren des Eingabedatenschemas, der Hilfsparameter sowie der Felder und der Eigenschaften des Oriented Imagery-Datasets und zum Generieren von Oriented Imagery-Datensätzen. Die Klasse muss die Methoden input_data_schema, auxiliary_parameters, oriented_imagery_fields, oriented_imagery_properties und oriented_imagery_records enthalten.
input_data_schema
Die Methode input_data_schema definiert die erforderlichen Eingabedaten zum Generieren von Oriented Imagery-Datensätzen und gibt den unten beschriebenen Wert zurück.
Rückgabe
Die Methode input_data_schema gibt ein Wörterbuch zurück, das das Eingabedatenschema enthält.
Jeder Schlüssel stellt eine Eingabe dar, die zum Hinzufügen der Bilder zum Oriented Imagery-Dataset erforderlich ist. Im Wert der Schlüssel muss angegeben sein, ob es sich um eine erforderliche oder eine optionale Eingabe handelt.
Dies ist ein Beispiel für die Methode 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
Die Methode auxiliary_parameters definiert Hilfsparameter mit den Standardwerten.
Rückgabe
Die Methode auxiliary_parameters gibt ein Wörterbuch zurück, das Informationen zu Hilfsparametern enthält.
Der Hilfsparameter muss als Schlüssel angegeben werden, und der entsprechende Standardwert des Schlüssels als Zeichenfolge. Wenn keine Hilfsparameter erforderlich sind, muss ein leeres Wörterbuch zurückgegeben werden.
Dies ist ein Beispiel für die Methode auxiliary_parameters.def auxiliary_parameters(self):
"""Defines auxiliary parameters."""
return {
"Default Ground Elevation": "0",
"Offset": "1.2"
}
Im Bereich Geoverarbeitung werden die Parameter Eingabedaten und Hilfsparameter des Werkzeugs Bilder aus benutzerdefiniertem Eingabetyp hinzufügen basierend auf den Rückgabewerten der Methoden input_data_schema und auxiliary_parameters aktualisiert.
oriented_imagery_fields
Die Methode oriented_imagery_fields definiert die Felder, die dem Oriented Imagery-Dataset hinzugefügt werden müssen.
Argumente
Folgende Argumente stehen zur Verfügung:
- input_data: Ein Wörterbuch, das Informationen zu Hilfsparametern enthält.
Die Schlüssel von input_data entsprechen den Schlüsseln, die von der Methode input_data_schema zurückgegeben werden, und die Werte sind die vom Benutzer bereitgestellten Eingabedaten als Zeichenfolgen.
Dies ist ein Beispiel für einen input_data-Wert.
{ "Metadata File": "C:/Documents/Files/metadata.json", "Image Location": "C:/Documents/Images", "DEM": None }
- aux_input: Ein Wörterbuch der Hilfsparameter und Werte.
Die Schlüssel von aux_input entsprechen den Schlüsseln, die von der Methode auxiliary_parameters zurückgegeben werden, und die Werte sind die Parameterwerte als Zeichenfolgen.
Dies ist ein Beispiel für einen aux_input-Wert.
{ "Default Ground Elevation": "309", "Offset": "1.2" }
Rückgabe
Die Methode oriented_imagery_fields gibt ein Tupel mit den folgenden Listen zurück:
- Zeichenfolgenliste: Die Felder, die Teil des Schemas der Oriented Imagery-Attributtabelle sind. Die Felder ImagePath und SHAPE@ sind erforderlich und müssen in der Liste vorhanden sein.
- Wörterbuchliste: Weitere benutzerdefinierte Felder müssen als Wörterbuchliste mit field_name und field_type als Schlüssel bereitgestellt werden. Überprüfen Sie die Regeln und Beschränkungen für Feldnamen und die unterstützten ArcGIS-Felddatentypen, wenn zusätzliche Feldnamen definiert werden.
Dies ist ein Beispiel für die Methode 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
Die Methode oriented_imagery_fields definiert die Standardwerte für die Eigenschaften des Oriented Imagery-Datasets. Diese Werte können mit dem Werkzeug Eigenschaften für Oriented Imagery-Dataset aktualisieren geändert werden.
Argumente
Folgende Argumente stehen zur Verfügung:
- input_data: Ein Wörterbuch, das Informationen zu Hilfsparametern enthält.
Die Schlüssel von input_data entsprechen den Schlüsseln, die von der Methode input_data_schema zurückgegeben werden, und die Werte sind die vom Benutzer bereitgestellten Eingabedaten als Zeichenfolgen.
- aux_input: Ein Wörterbuch der Hilfsparameter und Werte.
Die Schlüssel von aux_input entsprechen den Schlüsseln, die von der Methode auxiliary_parameters zurückgegeben werden, und die Werte sind die Parameterwerte im Zeichenfolgenformat.
Rückgabe
Die Methode oriented_imagery_fields gibt ein Wörterbuch mit den Eigenschaftennamen und -werten des Oriented Imagery-Datasets zurück.
Die ArcPy-Funktion Describe ruft alle Oriented Imagery-Eigenschaften und deren entsprechende Werte als Wörterbuch ab. Die Methode oriented_imagery_properties kann eine beliebige Eigenschaft außer horizontalMeasurementUnit zurückgeben. Die horizontale Maßeinheit wird vom Koordinatensystem des Datasets definiert.
Dies ist ein Beispiel für die Methode 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
Die Methode oriented_imagery_records liest die Metadaten, um die Informationen abzurufen, und erzeugt Wörterbücher mit Werten im definierten Schema.
Argumente
Folgende Argumente stehen zur Verfügung:
- input_data: Ein Wörterbuch, das Informationen zu Hilfsparametern enthält.
Die Schlüssel von input_data entsprechen den Schlüsseln, die von der Methode input_data_schema zurückgegeben werden, und die Werte sind die vom Benutzer bereitgestellten Eingabedaten im Zeichenfolgenformat.
- aux_input: Ein Wörterbuch der Hilfsparameter und Werte.
Die Schlüssel von aux_input entsprechen den Schlüsseln, die von der Methode auxiliary_parameters zurückgegeben werden, und die Werte sind die Parameterwerte als Zeichenfolgen.
Vorfahrt gewähren
Die Methode oriented_imagery_records erzeugt ein Wörterbuch, dass die Tabellenfeldwerte des Oriented Imagery-Datasets enthält.
Das Wörterbuch muss alle Felder enthalten, die in der Methode oriented_imagery_fields als Schlüssel definiert sind. Der Schlüssel SHAPE@ muss die Kameraposition als ArcPy-Objekt PointGeometry enthalten
Dies ist ein Beispiel für die Methode 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
}