Features aus CityEngine-Regeln (3D Analyst)

Mit der 3D Analyst-Lizenz verfügbar.

Zusammenfassung

Generiert 3D-Geometrien aus vorhandenen 2D- und 3D-Eingabe-Features mithilfe von Regeln, die in ArcGIS CityEngine erstellt wurden.

Verwendung

  • Eingabe-Features können Punkte, Polygone oder Multipatches sein. @StartRule in der Regelpaketdatei CityEngine (.rpk) sollte den erwarteten Eingabe-Feature-Typ angeben: die Annotation @InPoint für Punkte, @InPolygon für Polygone oder @InMesh für Multipatch-Features. Wenn @StartRule mit keinem dieser Feature-Typen beschriftet ist, wird Polygon als Feature-Typ vorausgesetzt. Bei Eingabe eines unerwarteten Geometrietyps wird ein Fehler generiert.

  • Eingabe-Features können prozedural symbolisierte Feature-Layer sein. CityEngine-Regeln definieren üblicherweise eine Reihe von Eigenschaften (in CityEngine als attrs bezeichnet), anhand derer die Erstellung von Ausgabe-3D-Modellen aus Eingabe-Shapes gesteuert wird. Eine Regel, die eine Gebäudehülle erstellt, verfügt möglicherweise über einen attr vom Typ "Double" für BuildingHeight und einen attr vom Typ "Integer" für FloorCount. Wenn die Eingabe-Feature-Class ein Attributfeld aufweist, das denselben Namen und Datentyp aufweist wie eine CityEngine-Regeleigenschaft, dann werden Werte aus diesem Attributfeld automatisch verwendet, um die Ausgabemodelle zu erstellen. Dieser automatische Abgleich von CityEngine-Regeleigenschaften mit Attributfeldern wird als Standardfeldzuordnung bezeichnet.

    Wenn der Eingabe-Feature-Layer mit Einzelsymbolsymbolisierung symbolisiert wird und das Symbol einen Prozedural-Symbol-Layer enthält, der dasselbe Regelpaket referenziert wie das Eingabe-Regelpaket, wendet das Werkzeug die Overrides an, die beim Erstellen der Ausgabe im Prozedural-Symbol-Layer konfiguriert wurden. Auf diese Weise kann der Prozedural-Symbol-Layer zum Konfigurieren von benutzerdefinierten Feldzuordnungen, bei denen die zugeordneten Feldnamen nicht exakt mit den Attributnamen des Regelpakets übereinstimmen, oder zum Überschreiben eines Regelpaketattributs mit einem einzigen benutzerdefinierten Wert verwendet werden. Weitere Informationen finden Sie unter Attributgesteuerte Symbolisierung.

  • Der Wert des Parameters Regelpaket ist eine CityEngine .rpk-Datei. Hierbei handelt es sich um eine komprimierte Datei, die eine kompilierte CityEngine-Regel sowie zugehörige Ressourcen enthält, die von dieser Regel verwendet werden. Der Parameter Leaf Shapes exportieren ist nur verfügbar, wenn im Eingabe-Regelpaket angegeben ist, dass dieser Vorgang durch Einbeziehung der folgenden CGA-Annotation unterstützt wird: @StartRule @Out (granularity=separatedShapes).

  • Wenn Leaf Shapes mit dem Parameter Leaf Shapes exportieren generiert werden, wird eine Gruppe von Feature-Classes im selben Verzeichnis wie die primäre Ausgabe-Multipatch-Feature-Class und mit den folgenden Namenskonventionen erstellt: <outputFC_Points>, <outputFC_MPoints> und <outputFC_Lines>. Alle Ausgabe-Feature-Classes enthalten ein OriginalOID-Attributfeld, das die ObjectID des Eingabe-Features referenziert, aus dem die Ausgabe generiert wurde. Das Feld OriginalOID kann verwendet werden, um die Ausgabe-Feature-Class mit der Eingabe-Feature-Class zu verbinden. Wenn Berichte mit dem Parameter Berichte einbeziehen erstellt werden, erhält die Ausgabe-Feature-Class außerdem ein Attribut für jeden Bericht.

  • Ein OriginalOID-Feld wird zu der/den Ausgabe-Feature-Class(es) hinzugefügt. Es enthält die ObjectID des Eingabe-Features, aus dem jedes Ausgabe-Feature erstellt wurde. Wenn die Eingabe-Feature-Class bereits über ein Feld namens OriginalOID verfügt, wird der neue Feldname mit entsprechender Nummerierung angefügt, z. B. OriginalOID2.

  • Detaillierte Fehler oder Warnungen, die während der Konvertierung auftreten, werden in eine Protokolldatei geschrieben. Diese trägt entweder den Namen ArcGISProLog<process ID and GUID>.xml (wenn das Werkzeug interaktiv in ArcGIS AllSource ausgeführt wird und die Diagnoseprotokollierung aktiviert ist) oder pythonLog<process ID and GUID>.xml (wenn das Werkzeug mit einem eigenständigen Python-Skript ausgeführt wird und die Diagnoseprotokollierung aktiviert ist), wobei <process ID and GUID> eine Prozess-ID und eine neue GUID sind, die bei jeder Ausführung des Werkzeugs an den Namen der Protokolldatei angehängt werden (Beispiel: ArcGISProLog-12300~1A9C1C2A-A2CB-41AF-BEB9-1F8CDC4F6D29.xml oder pythonLog-2160~807AFBC8-CA35-4370-9F90-4EDB2F9238AE.xml). Diese Datei befindet sich unter <Install drive>:\Users\<user name>\Documents\ArcGIS\Diagnostics.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Features

Die Eingabe-Punkt-, -Polygon- oder -Multipatch-Features. Eingabe-Features können prozedural symbolisierte Feature-Layer sein. Feldzuordnungen (attributgesteuerte Symboleigenschaften) werden berücksichtigt.

Feature Layer
Regelpaket

Die Regelpaketdatei (*.rpk) von CityEngine, die die Informationen und Elemente der CGA-Regeln enthält. Die mit @StartRule beschriftete Regel in der .rpk-Datei sollte mit @InPoint beschriftet werden, um auf ein Regelpaket für Punkt-Features hinzuweisen, mit @InPolygon, um auf ein Regelpaket für Polygon-Features hinzuweisen, oder mit @InMesh, um auf ein Regelpaket für Multipatch-Features hinzuweisen. Wenn @StartRule weder mit @InPoint, @InPolygon noch mit @InMesh beschriftet ist, wird Polygon als Feature-Typ vorausgesetzt,

File
Ausgabe-Features

Die Ausgabe-Feature-Class, die Multipatch-Features mit angewendeten CGA-Regeln enthält. Ein OriginalOID-Feld wird zu der/den Ausgabe-Feature-Class(es) hinzugefügt. Es enthält die ObjectID des Eingabe-Features, aus dem jedes Ausgabe-Feature erstellt wurde.

Feature Class
Vorhandene Felder einbeziehen
(optional)

Gibt an, ob die Ausgabe-Feature-Class die Attributfelder der Eingabe-Feature-Class beinhaltet.

  • Aktiviert: Die Attributfelder der Eingabe-Feature-Class werden in die Ausgabe-Feature-Class einbezogen. Dies ist die Standardeinstellung.
  • Deaktiviert: Die Attributfelder der Eingabe-Feature-Class werden nicht in die Ausgabe-Feature-Class einbezogen. Diese Option wird automatisch verwendet, wenn der Paramater Leaf Shapes exportieren aktiviert ist.

Boolean
Berichte einbeziehen
(optional)

Gibt an, ob die Ausgabe zusätzliche Berichtsfelder gemäß den Angaben im prozeduralen Regelpaket enthält. Je nachdem, wie das Regelpaket erstellt wurde, enthält es möglicherweise Logik, die beim Erstellen der Modelle mindestens einen Bericht generiert. Diese Berichte enthalten eine Vielzahl von Informationen zu den Features. Ein Beispiel ist ein Regelpaket, das die Anzahl der Fenster erfasst, die für jedes Gebäudemodell erstellt werden.

  • Aktiviert: Die Ausgabe-Feature-Class enthält neue Attributfelder, die die gemäß Definition der Erstellungslogik für den Regelpaketbericht gemeldeten Werte für jedes Feature enthalten. Für jeden erfassten Wert wird ein eindeutiges Attribut erstellt.
  • Deaktiviert: Im Regelpaket erstellte Berichte werden ignoriert, und es werden keine neuen Attribute erstellt, die sich auf die Berichte beziehen. Dies ist die Standardeinstellung.

Dieser Parameter wird ignoriert, wenn das Regelpaket keine Logik zum Generieren von Berichten enthält.

Boolean
Leaf Shapes exportieren
(optional)

Gibt an, ob jedes Eingabe-Feature in ein einzelnes, zusammengeführtes Multipatch-Feature oder in eine Gruppe aus vielen Features, bei denen es sich um Punkte, Linien oder Multipatches handeln kann, umgewandelt werden soll.

CityEngine-Regelpakete konstruieren Inhalt, indem Komponententeile erstellt und in einem einzelnen 3D-Objekt zusammengeführt werden. Diese Komponenten, oder "Blattformen", können jedoch auch als eigene Features gespeichert werden. Diese Option ist besonders wichtig, um Analysevorgänge für Unterelemente eines 3D-Objekts, beispielsweise die Fenster eines Gebäudes, durchzuführen.

Eine Regel kann beispielsweise Gebäudemodelle aus Eingabe-Polygon-Grundrissen oder alternativ getrennte Features für jede Fassade der Appartements, einschließlich eines externen Bereichs, eines repräsentativen Mittelpunktes und Linien erstellen, die die Umrandungen darstellen. In diesem Beispiel werden alle Appartmentbereiche, Mittelpunkte und Umrisslinien als Leaf Shapes betrachtet.

  • Aktiviert: Es werden zusätzliche Ausgabe-Feature-Classes erstellt. Die Attributfelder aus der Eingabe-Feature-Class werden nicht in die Ausgabe-Feature-Class einbezogen. Die Ausgabe-Feature-Class enthält ein Feld mit dem Namen OriginalOID, das die ObjectID des Eingabe-Features referenziert, aus dem die Ausgabe generiert wurde.
  • Deaktiviert: Es werden auch dann keine zusätzlichen Ausgabe-Feature-Classes erstellt, wenn zusätzliche Leaf Shapes in der Logik der Regel definiert sind. Die gesamte Geometrie ist in den Ausgabe-Multipatch-Features enthalten. Dies ist die Standardeinstellung.

Boolean

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Ausgabe-Punkt-Features

Wenn Leaf Shapes generiert werden, wird eine Ausgabe-Point-Feature-Class im selben Verzeichnis wie die primäre Ausgabe-Multipatch-Feature-Class erstellt.

Feature Class
Ausgabe-Linien-Features

Wenn Leaf Shapes generiert werden, wird eine Ausgabe-Polyline-Feature-Class im selben Verzeichnis wie die primäre Ausgabe-Multipatch-Feature-Class erstellt.

Feature Class
Ausgabe-Multipoint-Features

Wenn Leaf Shapes generiert werden, wird eine Ausgabe-Polygon-Feature-Class im selben Verzeichnis wie die primäre Ausgabe-Multipatch-Feature-Class erstellt.

Feature Class

arcpy.ddd.FeaturesFromCityEngineRules(in_features, in_rule_package, out_feature_class, {in_existing_fields}, {in_include_reports}, {in_leaf_shapes})
NameErläuterungDatentyp
in_features

Die Eingabe-Punkt-, -Polygon- oder -Multipatch-Features. Eingabe-Features können prozedural symbolisierte Feature-Layer sein. Feldzuordnungen (attributgesteuerte Symboleigenschaften) werden berücksichtigt.

Feature Layer
in_rule_package

Die Regelpaketdatei (*.rpk) von CityEngine, die die Informationen und Elemente der CGA-Regeln enthält. Die mit @StartRule beschriftete Regel in der .rpk-Datei sollte mit @InPoint beschriftet werden, um auf ein Regelpaket für Punkt-Features hinzuweisen, mit @InPolygon, um auf ein Regelpaket für Polygon-Features hinzuweisen, oder mit @InMesh, um auf ein Regelpaket für Multipatch-Features hinzuweisen. Wenn @StartRule weder mit @InPoint, @InPolygon noch mit @InMesh beschriftet ist, wird Polygon als Feature-Typ vorausgesetzt,

File
out_feature_class

Die Ausgabe-Feature-Class, die Multipatch-Features mit angewendeten CGA-Regeln enthält. Ein OriginalOID-Feld wird zu der/den Ausgabe-Feature-Class(es) hinzugefügt. Es enthält die ObjectID des Eingabe-Features, aus dem jedes Ausgabe-Feature erstellt wurde.

Feature Class
in_existing_fields
(optional)

Gibt an, ob die Ausgabe-Feature-Class die Attributfelder der Eingabe-Feature-Class beinhaltet. Dieser Parameter wird nicht berücksichtigt, wenn der Parameter in_leaf_shapes verwendet wird.

  • INCLUDE_EXISTING_FIELDSDie Attributfelder der Eingabe-Feature-Class werden in die Ausgabe-Feature-Class einbezogen. Dies ist die Standardeinstellung.
  • DROP_EXISTING_FIELDSDie Attributfelder der Eingabe-Feature-Class werden nicht in die Ausgabe-Feature-Class einbezogen. Diese Option wird automatisch verwendet, wenn der Parameter in_leaf_shapes auf FEATURE_PER_LEAF_SHAPE festgelegt ist.
Boolean
in_include_reports
(optional)

Je nachdem, wie das Regelpaket erstellt wurde, enthält es möglicherweise Logik, die beim Erstellen der Modelle mindestens einen Bericht generiert. Diese Berichte enthalten eine Vielzahl von Informationen zu den Features. Ein Beispiel ist ein Regelpaket, das die Anzahl der Fenster erfasst, die für jedes Gebäudemodell erstellt werden.

  • INCLUDE_REPORTSDie Ausgabe-Feature-Class enthält neue Attributfelder, die die gemäß Definition der Erstellungslogik für den Regelpaketbericht gemeldeten Werte für jedes Feature enthalten. Für jeden erfassten Wert wird ein eindeutiges Attribut erstellt.
  • EXCLUDE_REPORTSIm Regelpaket erstellte Berichte werden ignoriert, und es werden keine neuen Attribute erstellt, die sich auf die Berichte beziehen. Dies ist die Standardeinstellung.

Dieser Parameter wird ignoriert, wenn das Regelpaket keine Logik zum Generieren von Berichten enthält.

Boolean
in_leaf_shapes
(optional)

Gibt an, ob jedes Eingabe-Feature in ein einzelnes, zusammengeführtes Multipatch-Feature oder in eine Gruppe aus vielen Features, bei denen es sich um Punkte, Linien oder Multipatches handeln kann, umgewandelt werden soll.

CityEngine-Regelpakete konstruieren Inhalt, indem Komponententeile erstellt und in einem einzelnen 3D-Objekt zusammengeführt werden. Diese Komponenten, oder "Blattformen", können jedoch auch als eigene Features gespeichert werden. Diese Option ist besonders wichtig, um Analysevorgänge für Unterelemente eines 3D-Objekts, beispielsweise die Fenster eines Gebäudes, durchzuführen.

Eine Regel kann beispielsweise Gebäudemodelle aus Eingabe-Polygon-Grundrissen oder alternativ getrennte Features für jede Fassade der Appartements, einschließlich eines externen Bereichs, eines repräsentativen Mittelpunktes und Linien erstellen, die die Umrandungen darstellen. In diesem Beispiel werden alle Appartmentbereiche, Mittelpunkte und Umrisslinien als Leaf Shapes betrachtet.

  • FEATURE_PER_LEAF_SHAPEEs werden zusätzliche Ausgabe-Feature-Classes erstellt. Die Attributfelder aus der Eingabe-Feature-Class werden nicht in die Ausgabe-Feature-Class einbezogen. Die Ausgabe-Feature-Class enthält ein Feld mit dem Namen OriginalOID, das die ObjectID des Eingabe-Features referenziert, aus dem die Ausgabe generiert wurde.
  • FEATURE_PER_SHAPEEs werden auch dann keine zusätzlichen Ausgabe-Feature-Classes erstellt, wenn zusätzliche Leaf Shapes in der Logik der Regel definiert sind. Die gesamte Geometrie ist in den Ausgabe-Multipatch-Features enthalten. Dies ist die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

NameErläuterungDatentyp
out_points

Wenn Leaf Shapes generiert werden, wird eine Ausgabe-Point-Feature-Class im selben Verzeichnis wie die primäre Ausgabe-Multipatch-Feature-Class erstellt.

Feature Class
out_lines

Wenn Leaf Shapes generiert werden, wird eine Ausgabe-Polyline-Feature-Class im selben Verzeichnis wie die primäre Ausgabe-Multipatch-Feature-Class erstellt.

Feature Class
out_multipoints

Wenn Leaf Shapes generiert werden, wird eine Ausgabe-Polygon-Feature-Class im selben Verzeichnis wie die primäre Ausgabe-Multipatch-Feature-Class erstellt.

Feature Class

Codebeispiel

FeaturesFromCityEngineRules – Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion FeaturesFromCityEngineRules im unmittelbaren Modus verwendet wird.

import arcpy

arcpy.CheckOutExtension("3D")
arcpy.env.workspace = "C:/data"
arcpy.ddd.FeaturesFromCityEngineRules("in_polygons", 
                                      "rules.rpk", 
                                      "out_multipatches")
FeaturesFromCityEngineRules – Beispiel 2 (eigenständiges Skript)

Das folgende Skript für das Python-Fenster veranschaulicht die Aktivierung der Diagnoseprotokollierung bei Verwendung der Funktion FeaturesFromCityEngineRules in einem eigenständigen Python-Skript.

import arcpy
import ctypes
from arcpy import env

def enableDiagnostics(enable: bool = True):
  pro = arcpy.GetInstallInfo()['InstallDir']
  dll = ctypes.CDLL(f'{pro}/bin/DADFLib.dll')
  if enable:
    dll.EventLogEnable()
  else:
    dll.EventLogDisable()

def setLogLevel(level: int = 2):
  pro = arcpy.GetInstallInfo()['InstallDir']
  dll = ctypes.CDLL(f'{pro}/bin/DADFLib.dll')
  dll.EventLogSetLogLevel(level)

enableDiagnostics(True) #enable diagnostic logging
# Setting a log level (0 == error, 1 == warning, 2 == information, 3 == debug)
# will get that level and everything below it. 0 is only errors, 1 is warnings and errors etc.
setLogLevel(3) # Max diagnostic log level 

arcpy.CheckOutExtension("3D")
env.workspace = r"C:\data"
arcpy.ddd.FeaturesFromCityEngineRules(r"geometry.gdb\in_polygons", 
                                      "rules.rpk", 
                                      r"geometry.gdb\out_multipatches")

Umgebungen

Dieses Werkzeug verwendet keine Geoverarbeitungsumgebungen.

Verwandte Themen