Convertir le diagramme en entités (Schematics)
Récapitulatif
Convertit un diagramme schématique en classes d'entités ou fichiers de formes standard.
Les diagrammes schématiques sont tous stockés dans des classes d'entités masquées spécifiques à Schematics et nécessitent le reste des informations et tables de configuration schématiques. Cet outil permet de partager des diagrammes avec d'autres utilisateurs sans fournir l'intégralité du jeu de données schématique (tous les diagrammes et toute la configuration). Si vous prévoyez de convertir plusieurs diagrammes, vous pouvez choisir de tous les placer dans le même jeu de fichiers de formes ou de classes d'entités standard ou de placer chacun d'eux dans un jeu distinct.
Reportez-vous à la section Exemple de code pour obtenir un exemple d'outil de script qui permet de convertir tous les diagrammes contenus dans un jeu de données schématique ou dans un dossier schématique.
Utilisation
-
Pour convertir une couche de diagrammes schématiques en classes d'entités standard, recherchez puis sélectionnez un jeu de données de géodatabases/d'entités pour le paramètre d'emplacement en sortie spécifié. Pour convertir une couche de diagrammes schématiques en fichiers de formes, recherchez puis sélectionnez un dossier.
-
Pour convertir plusieurs diagrammes dans les mêmes classes d'entités/fichiers de formes standard, sélectionnez l'option Réutiliser la structure existante. Pour convertir plusieurs diagrammes en classes d'entités/fichiers de formes standard différents, désactivez l'option Réutiliser la structure existante.
-
Sélectionnez l'option Exporter tous les attributs d'entités associés si vous voulez ajouter tous les attributs des classes d'entités "réelles" aux enregistrements schématiques pendant la conversion.
-
L' option Exporter tous les attributs d'entités associés s'applique uniquement aux classes d'entités schématiques dont la valeur du champ Table/classe d'entités associée est connue. Si aucune table/classe d'entités associée n'est spécifiée pour une classe d'entités schématiques, ses attributs d'entités associés ne peuvent pas être exportés.
-
Sélectionnez POLYGON dans Géométrie du conteneur si vous souhaitez que tous les conteneurs du diagramme schématique en entrée soient convertis en entités surfaciques. Pour convertir ces conteneurs en entités polylignes (ou ponctuelles), sélectionnez POLYLINE (ou POINT).
Attention :Si vous utilisez l'option Réutiliser la structure existante et que POLYGON (POLYLINE ou POINT) a été sélectionné pour la première conversion du diagramme, vous ne pouvez pas modifier la conversion en POLYLINE ou POINT (POLYGON) pour les prochaines conversions. Si vous souhaitez la modifier, vous devez supprimer la structure et procéder à une nouvelle conversion de vos diagrammes.
-
Si la couche de diagramme schématique en entrée a déjà été convertie dans l'emplacement en sortie spécifié, elle est supprimée avant d'être recréée.
Syntaxe
Paramètre | Explication | Type de données |
in_diagram |
Couche de diagrammes schématiques à convertir | Schematic Layer |
out_location |
Espace de travail ou jeu de données d'entité dans lequel le diagramme schématique est converti. Ce conteneur doit déjà exister au préalable. | Workspace;Feature Dataset |
reuse_fc [reuse_fc,...] (Facultatif) | Indique si la couche de diagrammes schématiques en entrée est convertie dans les mêmes classes d'entités/fichiers de formes standard que les autres diagrammes basés sur le même modèle.
| Boolean |
export_related_attributes (Facultatif) | Indique si tous les attributs stockés dans les classes d'entités réelles/tables d'objets associées aux classes d'entités schématiques seront également convertis.
Remarque : Si aucune table/classe d'entités associée n'est spécifiée pour une classe d'entités schématiques, aucun attribut d'entité ne peut être converti. Remarque : Lors de l'utilisation de REUSE_FC et EXPORT_RELATED_ATTRIBUTES, la structure doit déjà exister avec les champs d'entité associés pour que les attributs associés soient convertis. | Boolean |
container_geometry [container_geometry,...] (Facultatif) |
Indique le type de géométrie des entités créées pour les conteneurs schématiques convertis du diagramme en entrée.
Remarque : Si vous utilisez l'option Réutiliser la structure existante et que la structure existe déjà avec les classes d'entités POLYGON (POLYLINE ou POINT) créées pour les entités schématiques de conteneur, vous ne pouvez pas modifier le type de classe d'entités en POLYLINE ou POINT (POLYGON) pour les prochaines conversions. | String |
config_keyword (Facultatif) |
Mot-clé de configuration qui détermine les paramètres de stockage de la table dans un système de gestion de bases de données relationnelles (SGBDR). Pour ArcSDE uniquement. | String |
Exemple de code
Le script ci-dessous illustre l'utilisation de la fonction ConvertDiagram dans un outil de script. L'outil de script s'exécute sur tous les diagrammes contenus dans un conteneur schématique en entrée, à savoir un jeu de données schématique ou un dossier schématique, puis les convertit en fichiers de formes ou entités standard dans un emplacement en sortie.
Procédure de création et de configuration de cet outil de script :
- Copiez le script suivant dans un éditeur de texte et enregistrez le fichier texte avec l'extension .py.
- Démarrez ArcCatalog et ouvrez la fenêtre ArcToolbox.
- Ajoutez un nouveau script :
- Saisissez un nom (ConvertDiagramsTool, par exemple).
- Pour le paramètre Script File, spécifiez le fichier .py que vous venez de créer.
- Définissez ensuite les cinq paramètres suivants :
- Nom complet : Conteneur de schématique en entrée, Type de données : Jeu de données schématique ou Dossier schématique ; Propriété du type =Requis, Propriété Direction=Entrée
- Nom complet : Emplacement en sortie, Type de données : Espace de travail ou Jeu de données d'entité ; Propriété du type =Requis, Propriété Direction=Entrée
- Nom complet : Récursif, Type de données : Booléen ; Propriété du type =Requis, Propriété Direction=Entrée, Valeur par défaut=Vrai
- Nom complet : Filtre de classe de diagrammes, Type de données : Chaîne ; Propriété du type =Facultatif, Propriété Direction=Entrée
- Nom complet : Emplacement en sortie dérivé, Type de données : Espace de travail ou Jeu de données d'entité ; Propriété du type =Dérivé, Propriété Direction=Sortie, Obtenu à partir de=Output_Location
Paramètres en entrée requis : conteneur de schématique en entrée (jeu de données ou dossier) + emplacement en sortie (géodatabase, jeu de données d'entité ou dossier pour les fichiers de formes)
Arguments facultatifs : balise récursive + filtre de classe de diagrammes
Emplacement dérivé en sortie : espace de travail ou jeu de données d'entité
# Name: ConvertDiagrams.py
# Description: Convert schematic diagrams
# Requirement: Extension ArcGIS Schematics
# import arcpy, sys, math
import arcpy, sys, math
msgInputsErr = "Invalid arguments."
msgParseErr = "Cannot parse input arguments."
msgConvertErr = "Error during conversion."
msgNoLicenseAvailable = "Extension ArcGIS Schematics license required"
# Recursively searches for schematic diagrams in the folders
def RecursiveSearch(inCont, bRecursive):
try:
childs = inCont.Children
dataset = None
for dataset in childs:
if dataset.DataType == "SchematicFolder" and bRecursive:
RecursiveSearch(dataset, bRecursive)
elif dataset.DataType == "SchematicDiagram":
if diagramClassFilter == "" or diagramClassFilter == dataset.DiagramClassname:
pathList.append(dataset.CatalogPath)
except:
raise
try:
# Checks out the Extension ArcGIS Schematics license
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
except Exception as exc:
print exc
raise
arcpy.env.overwriteOutput = True
# Decodes parameters
try:
inputContainer = arcpy.GetParameterAsText(0)
outputLocation = arcpy.GetParameterAsText(1)
recursive = arcpy.GetParameterAsText(2)
if recursive == "false":
recursive = None
diagramClassFilter = arcpy.GetParameterAsText(3)
if inputContainer == "":
raise Exception()
except:
print msgParseErr
arcpy.AddError(msgParseErr)
raise
# Main code
try:
pathList = [] # List for diagram names to convert
arcpy.SetProgressorLabel("Searching diagrams to convert...")
RecursiveSearch(arcpy.Describe(inputContainer), recursive)
arcpy.SetProgressor("step", "Converting...", 0, len(pathList), 1)
for path in pathList:
# Execute convert
mes = "Converting Schematic Diagram : " + path
# Set the progressor label
arcpy.SetProgressorLabel(mes)
arcpy.AddMessage(mes)
arcpy.ConvertDiagram_schematics(path, outputLocation, "REUSE_FC", "NO_RELATED_ATTRIBUTES", "#")
arcpy.SetProgressorPosition()
# Returns the Extension ArcGIS Schematics licence
arcpy.CheckInExtension("Schematics")
except:
arcpy.AddError(msgConvertErr)
raise