Entités issues de règles CityEngine (3D Analyst)

Disponible avec une licence 3D Analyst.

Synthèse

Génère des géométries 3D à partir d’entités en entrée 2D et 3D à l’aide de règles écrites dans ArcGIS CityEngine.

Utilisation

  • Les entités en entrée peuvent être des points, des polygones ou des multipatchs. La règle @StartRule dans le fichier du paquetage de règles CityEngine (.rpk) doit indiquer le type d’entité en entrée attendu : annotation @InPoint pour les points, @InPolygon pour les polygones ou @InMesh pour les entités multipatch. Si la règle @StartRule n’est pas annotée avec l’un de ces éléments, l’entité est considérée comme étant de type surfacique. Une erreur est déclenchée si un type de géométrie inattendu est indiqué en entrée.

  • Les entités en entrée peuvent être des couches d’entités symbolisées par procédure. Les règles CityEngine définissent généralement un certain nombre de propriétés (appelées attrs dans CityEngine) qui déterminent le mode de génération des modèles 3D en sortie à partir des formes en entrée. Par exemple, une règle qui génère une enveloppe de bâtiment peut avoir un attr de type double pour BuildingHeight et un attr de type entier pour FloorCount. Si la classe d’entités en entrée possède un champ attributaire qui comporte les mêmes nom et type de données qu’une propriété de règle CityEngine, les valeurs de ce champ attributaire sont automatiquement utilisées pour générer les modèles en sortie. Cet appariement automatique des propriétés de règle CityEngine aux champs attributaires se nomme appariement de champs par défaut.

    Si la couche d’entités en entrée est symbolisée avec une symbologie à un seul symbole dont le symbole contient une couche de symboles procédurale qui référence le même paquetage de règles que le paquetage de règles en entrée, l’outil applique les remplacements configurés dans la couche de symboles procédurale lorsqu’il crée la sortie. La couche de symboles procédurale peut ainsi être utilisée pour la configuration d’un appariement de champs personnalisé, dans lequel les noms de champ appariés ne correspondent pas exactement aux noms d’attribut du paquetage de règles, ou pour le remplacement d’un attribut de paquetage de règles avec une seule valeur personnalisée. Pour plus d’informations, reportez-vous à la rubrique Symbologie gérée par attribut.

  • La valeur du paramètre Paquetage de règles est un fichier CityEngine .rpk. Il s’agit d’un fichier compressé qui contient une règle CityEngine compilée et les ressources associées utilisées par cette règle. Le paramètre Exporter les formes de feuilles n’est disponible que si le paquetage de règles en entrée déclare qu’il prend en charge cette opération via l’annotation CGA suivante : @StartRule @Out (granularity=separatedShapes).

  • Lorsque des formes de feuilles sont générées avec le paramètre Exporter les formes de feuilles, un jeu standard de classes d’entités est créé au même emplacement que la classe d’entités multipatch en sortie principale et les mêmes conventions de dénomination sont appliquées, c’est-à-dire : <outputFC_Points>, <outputFC_MPoints> et <outputFC_Lines>. Toutes les classes d’entités en sortie contiennent un champ attributaire OriginalOID qui fait référence au champ ObjectID de l’entité en entrée à partir de laquelle la sortie a été générée. Le champ OriginalOID permet de joindre la classe d’entités en sortie à la classe d’entités en entrée. Si des rapports sont générés avec le paramètre Inclure les rapports, la classe d’entités en sortie reçoit également un attribut pour chaque rapport.

  • Un champ OriginalOID est ajouté aux classes d’entités en sortie pour contenir la valeur ObjectID de l’entité en entrée à partir de laquelle chaque entité en sortie a été générée. Si la classe d'entité en entrée possède déjà un champ nommé OriginalOID, le nouveau nom de champ est ajouté dans un format numérique, tel que OriginalOID2.

  • Les erreurs détaillées ou les avertissements déclenchés pendant la conversion sont consignés dans un fichier journal nommé ArcGISProLog<process ID and GUID>.xml (lorsque l’outil est exécuté de manière interactive dans ArcGIS AllSource et que la journalisation des diagnostics est activée) ou pythonLog<process ID and GUID>.xml (lorsque l’outil est exécuté via un script Python autonome et si la journalisation des diagnostics est activée) dans lequel <process ID and GUID> est un ID de processus ; un nouveau GUID est ajouté à la fin du nom du fichier journal à chaque exécution de l’outil, par exemple, ArcGISProLog-12300~1A9C1C2A-A2CB-41AF-BEB9-1F8CDC4F6D29.xml ou pythonLog-2160~807AFBC8-CA35-4370-9F90-4EDB2F9238AE.xml. Ce fichier se trouve dans <Install drive>:\Users\<user name>\Documents\ArcGIS\Diagnostics.

Paramètres

ÉtiquetteExplicationType de données
Entités en entrée

Entités ponctuelles, surfaciques ou multipatch en entrée. Les entités en entrée peuvent être des couches d'entités symbolisées par procédure. L'appariement de champ (propriétés de symboles gérés par des attributs) sera respecté.

Feature Layer
Paquetage de règles

Fichier de paquetage de règles CityEngine (*.rpk) contenant des informations sur les règles CGA et les ressources. La règle annotée avec @StartRule dans le fichier .rpk doit être annotée avec @InPoint pour un paquetage de règles destiné à des entités ponctuelles, @InPolygon pour un paquetage de règles destiné à des entités surfaciques et @InMesh pour un paquetage de règles destiné à des entités multipatch. Si @StartRule n’est pas annoté avec @InPoint, @InPolygon ou @InMesh, l’entité est considérée comme étant de type surfacique.

File
Entités en sortie

Classe d'entités en sortie contenant des entités multipatch auxquelles des règles CGA sont appliquées. Un champ OriginalOID est ajouté aux classes d’entités en sortie pour contenir la valeur ObjectID de l’entité en entrée à partir de laquelle chaque entité en sortie a été générée.

Feature Class
Inclure les champs existants
(Facultatif)

Indique si la classe d’entités en sortie inclut les champs attributaires de la classe d’entités en entrée.

  • Activé : les champs attributaires de la classe d'entités en entrée sont inclus dans la classe d'entités en sortie. Il s’agit de l’option par défaut.
  • Désactivé : les champs attributaires de la classe d’entités en entrée ne sont pas inclus dans la classe d’entités en sortie. Cette option n'est pas utilisée automatiquement si le paramètre Exporter les formes de feuilles est activé.

Boolean
Inclure les rapports
(Facultatif)

Indique si la sortie inclut des champs de génération de rapports supplémentaires si spécifiés par le paquetage de règles procédurales. Selon les modalités de création du paquetage de règles, il peut contenir une logique qui génère un ou plusieurs rapports lorsque les modèles sont créés. Ces rapports peuvent contenir diverses informations concernant les entités. Par exemple, un paquetage de règles peut signaler le nombre de fenêtres qui sont générées pour chaque modèle de bâtiment.

  • Activé : la classe d’entités en sortie inclut de nouveaux champs attributaires destinés à contenir les valeurs signalées pour chaque entité, comme le définit la logique de génération des rapports du paquetage de règles. Un attribut unique est créé pour chaque valeur signalée.
  • Désactivé : les rapports générés dans le paquetage de règles sont ignorés et aucun nouvel attribut associé à ces rapports n’est généré. Il s’agit de l’option par défaut.

Ce paramètre est ignoré si le paquetage de règles ne contient aucune logique de génération des rapports.

Boolean
Exporter les formes de feuilles
(Facultatif)

Indique si chaque entité en entrée est convertie en une entité multipatch unique et fusionnée ou si elle se transforme en un ensemble d’entités pouvant être des points, des lignes ou des multipatchs.

Les paquetages de règles CityEngine construisent du contenu en générant des parties de composants et en les fusionnant dans un seul objet 3D. Toutefois, il est également possible de stocker ces composants, ou formes de feuilles, en tant qu’entités distinctes. Cette option peut être particulièrement importante pour exécuter des opérations analytiques en utilisant des sous-éléments d’un objet 3D, comme les fenêtres d’un bâtiment.

Par exemple, une règle peut générer des modèles de bâtiment transparents à partir d’emprises de polygone en entrée, ou créer des entités distinctes pour la façade de chaque appartement, y compris un panneau dirigé vers l’extérieur, un point central représentatif et des lignes illustrant les bordures. Dans cet exemple, les panneaux des appartements, les points centraux et les contours sont tous considérés comme des formes de feuilles.

  • Activé : des classes d’entités en sortie supplémentaires sont générées. Les champs attributaires de la classe d’entités en entrée ne sont pas inclus dans la classe d’entités en sortie. La classe d’entités en sortie contient un champ nommé OriginalOID qui référence le champ ObjectID de l’entité en entrée à partir de laquelle la sortie a été générée.
  • Désactivé : aucune classe d’entités supplémentaire en sortie n’est générée, même si des formes de feuilles additionnelles sont définies dans la logique de la règle. Toute la géométrie est contenue dans les entités multipatch en sortie. Il s’agit de l’option par défaut.

Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Entités ponctuelles en sortie

Lorsque des formes de feuilles sont générées, une classe d’entités ponctuelles en sortie est créée au même emplacement que la classe d’entités multipatch en sortie principale.

Feature Class
Entités linéaires en sortie

Lorsque des formes de feuilles sont générées, une classe d’entités polylignes en sortie est créée au même emplacement que la classe d’entités multipatch en sortie principale.

Feature Class
Entités multi-points en sortie

Lorsque des formes de feuilles sont générées, une classe d’entités surfaciques en sortie est créée au même emplacement que la classe d’entités multipatch en sortie principale.

Feature Class

arcpy.ddd.FeaturesFromCityEngineRules(in_features, in_rule_package, out_feature_class, {in_existing_fields}, {in_include_reports}, {in_leaf_shapes})
NomExplicationType de données
in_features

Entités ponctuelles, surfaciques ou multipatch en entrée. Les entités en entrée peuvent être des couches d'entités symbolisées par procédure. L'appariement de champ (propriétés de symboles gérés par des attributs) sera respecté.

Feature Layer
in_rule_package

Fichier de paquetage de règles CityEngine (*.rpk) contenant des informations sur les règles CGA et les ressources. La règle annotée avec @StartRule dans le fichier .rpk doit être annotée avec @InPoint pour un paquetage de règles destiné à des entités ponctuelles, @InPolygon pour un paquetage de règles destiné à des entités surfaciques et @InMesh pour un paquetage de règles destiné à des entités multipatch. Si @StartRule n’est pas annoté avec @InPoint, @InPolygon ou @InMesh, l’entité est considérée comme étant de type surfacique.

File
out_feature_class

Classe d'entités en sortie contenant des entités multipatch auxquelles des règles CGA sont appliquées. Un champ OriginalOID est ajouté aux classes d’entités en sortie pour contenir la valeur ObjectID de l’entité en entrée à partir de laquelle chaque entité en sortie a été générée.

Feature Class
in_existing_fields
(Facultatif)

Indique si la classe d’entités en sortie inclut les champs attributaires de la classe d’entités en entrée. Ce paramètre n’est pas pris en compte lorsque le paramètre in_leaf_shapes est utilisé.

  • INCLUDE_EXISTING_FIELDSLes champs attributaires de la classe d'entités en entrée sont inclus dans la classe d'entités en sortie. Il s’agit de l’option par défaut.
  • DROP_EXISTING_FIELDSLes champs attributaires de la classe d’entités en entrée ne sont pas inclus dans la classe d’entités en sortie. Cette option est automatiquement utilisée si le paramètre in_leaf_shapes est défini sur FEATURE_PER_LEAF_SHAPE.
Boolean
in_include_reports
(Facultatif)

Selon les modalités de création du paquetage de règles, il peut contenir une logique qui génère un ou plusieurs rapports lorsque les modèles sont créés. Ces rapports peuvent contenir diverses informations concernant les entités. Par exemple, un paquetage de règles peut signaler le nombre de fenêtres qui sont générées pour chaque modèle de bâtiment.

  • INCLUDE_REPORTSLa classe d’entités en sortie inclut de nouveaux champs attributaires destinés à contenir les valeurs signalées pour chaque entité, comme le définit la logique de génération des rapports du paquetage de règles. Un attribut unique est créé pour chaque valeur signalée.
  • EXCLUDE_REPORTSLes rapports générés dans le paquetage de règles sont ignorés et aucun nouvel attribut associé à ces rapports n’est généré. Il s’agit de l’option par défaut.

Ce paramètre est ignoré si le paquetage de règles ne contient aucune logique de génération des rapports.

Boolean
in_leaf_shapes
(Facultatif)

Indique si chaque entité en entrée est convertie en une entité multipatch unique et fusionnée ou si elle se transforme en un ensemble d’entités pouvant être des points, des lignes ou des multipatchs.

Les paquetages de règles CityEngine construisent du contenu en générant des parties de composants et en les fusionnant dans un seul objet 3D. Toutefois, il est également possible de stocker ces composants, ou formes de feuilles, en tant qu’entités distinctes. Cette option peut être particulièrement importante pour exécuter des opérations analytiques en utilisant des sous-éléments d’un objet 3D, comme les fenêtres d’un bâtiment.

Par exemple, une règle peut générer des modèles de bâtiment transparents à partir d’emprises de polygone en entrée, ou créer des entités distinctes pour la façade de chaque appartement, y compris un panneau dirigé vers l’extérieur, un point central représentatif et des lignes illustrant les bordures. Dans cet exemple, les panneaux des appartements, les points centraux et les contours sont tous considérés comme des formes de feuilles.

  • FEATURE_PER_LEAF_SHAPEDes classes d’entités en sortie supplémentaires sont générées. Les champs attributaires de la classe d’entités en entrée ne sont pas inclus dans la classe d’entités en sortie. La classe d’entités en sortie contient un champ nommé OriginalOID qui référence le champ ObjectID de l’entité en entrée à partir de laquelle la sortie a été générée.
  • FEATURE_PER_SHAPEAucune classe d’entités supplémentaire en sortie n’est générée, même si des formes de feuilles complémentaires sont définies dans la logique de la règle. Toute la géométrie est contenue dans les entités multipatch en sortie. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

NomExplicationType de données
out_points

Lorsque des formes de feuilles sont générées, une classe d’entités ponctuelles en sortie est créée au même emplacement que la classe d’entités multipatch en sortie principale.

Feature Class
out_lines

Lorsque des formes de feuilles sont générées, une classe d’entités polylignes en sortie est créée au même emplacement que la classe d’entités multipatch en sortie principale.

Feature Class
out_multipoints

Lorsque des formes de feuilles sont générées, une classe d’entités surfaciques en sortie est créée au même emplacement que la classe d’entités multipatch en sortie principale.

Feature Class

Exemple de code

Exemple 1 d’utilisation de l’outil FeaturesFromCityEngineRules (fenêtre Python)

La fenêtre de script Python suivante illustre l’utilisation de la fonction FeaturesFromCityEngineRules en mode immédiat.

import arcpy

arcpy.CheckOutExtension("3D")
arcpy.env.workspace = "C:/data"
arcpy.ddd.FeaturesFromCityEngineRules("in_polygons", 
                                      "rules.rpk", 
                                      "out_multipatches")
Exemple 2 d’utilisation de l’outil FeaturesFromCityEngineRules (script autonome)

Le script de fenêtre Python suivant indique comment activer la journalisation des diagnostics lorsque vous utilisez la fonction FeaturesFromCityEngineRules dans un script Python autonome.

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")

Environnements

Cet outil n’utilise pas d’environnement de géotraitement.

Rubriques connexes