Créer une topologie

Disponible avec une licence Standard ou Advanced.

La méthode principale pour créer une topologie dans ArcGIS Pro est l’assistant Créer une topologie Une fois que vous savez comment créer une topologie, vous pouvez automatiser cette tâche à l'aide d'une suite d'outils de géotraitement.

Créez une topologie à l’aide de l’assistant Créer une topologie.

Pour créer une topologie à l’aide de l’assistant Create Topology (Créer une topologie), procédez comme suit.

  1. Dans la fenêtre Catalog (Catalogue), cliquez avec le bouton droit sur le jeu de classes d’entités auquel vous souhaitez ajouter une topologie et cliquez sur New (Nouveau) > Create Topology (Créer une topologie).
  2. Nommez la nouvelle topologie et spécifiez la tolérance de grappe. La valeur par défaut est définie sur la tolérance x,y du jeu de classes d'entités. La valeur par défaut recommandée est de 0.001 mètre ou son équivalent dans les unités de votre référence spatiale (par exemple, 0.003281 pieds si vos unités sont les pieds ou 0.0000000556 degrés si vos unités sont en latitude-longitude comme degrés décimaux).
  3. Cochez les cases des classes d’entités qui participeront à la topologie. Vous verrez une liste de toutes les classes d’entités dans votre jeu de classes d’entités.
  4. Définissez les rangs de précision des coordonnées pour chaque classe d’entités dans la topologie.

    Si une ou plusieurs de vos classes d’entités contiennent des valeurs Z de coordonnées, cliquez sur Z Properties (Propriétés Z) pour définir les rangs Z. La tolérance Z est utilisée pour distinguer la hauteur z, ou l’altitude des sommets dans la tolérance les uns des autres. Par exemple, deux entités adjacentes de différentes hauteurs peuvent partager entre elles un tronçon commun. Toutefois, seuls leurs sommets x,y sont alignés, et pas leur hauteur ou valeur z. La tolérance z facilite le traitement de ces informations au cours des opérations de validation et d'agrégation. La valeur de tolérance z par défaut est la même valeur par défaut que la tolérance x,y (0.001 mètre dans les unités réelles).

  5. Cliquez sur Next (Suivant).
  6. Maintenant, vous créerez les règles de topologie entre les classes d’entités participantes et leurs sous-types. Depuis le menu déroulant Feature Class 1 (Classe d’entités 1), sélectionnez une classe d’entités. Si vous êtes sur le point de créer une règle associée aux sous-types, utilisez le menu déroulant Subtype 1 (Sous-type 1) pour choisir un sous-type.
  7. Dans la colonne suivante, choisissez la Rule (Règle) correspondante. Les règles vous aident à structurer les relations spatiales entre les entités et contrôlent et valident la manière dont les entités partagent la géométrie.
  8. Si applicable à la règle que vous avez choisie, complétez la règle en choisissant une seconde classe d’entités et sous-type depuis les menus déroulants Feature Class 2 (Classe d’entités 2) et Subtype 2 (Sous-type 2).
  9. Répétez les étapes 6,7 et 8 pour créer autant de règles que nécessaire. Lorsque vous avez terminé, cliquez sur Next (Suivant).
  10. Passez en revue le résumé et cliquez sur Finish (Terminer). Vous venez d’ajouter la nouvelle topologie à votre jeu de classes d’entités. Un message s’affiche vous demandant si vous souhaitez valider la topologie dans votre jeu de classes d’entités. Si vous avez des données dans vos classes d’entités, cliquez sur Yes (Oui).

Créez une topologie à l’aide d’outils de géotraitement.

ArcToolbox contient une série d’outils de géotraitement pour la topologie. Le jeu d'outils Topologie se situe dans la boîte à outils Gestion des données.

Ces outils peuvent servir à générer des scripts de création et de modification des topologies de géodatabase. Les scripts peuvent être utilisés pour automatiser une série de tâches et construire des workflows reproductibles.

Pour créer une topologie à l’aide de l’outil Create Topology (Créer une topologie), procédez comme suit :

  1. Choisissez les classes d'entités qui participeront à la topologie. Ajoutez ces classes d'entités à la topologie à l'aide de l'outil de géotraitement Ajouter une classe d’entités à une topologie.

    Exécutez cet outil plusieurs fois jusqu'à ce que toutes les classes d'entités devant participer à la topologie soient ajoutées.

  2. Maintenant que la topologie est créée et que certaines classes d'entités ont été ajoutées, vous pouvez ajouter une série de règles à l'aide de l'outil de géotraitement Ajouter une règle à une topologie. Les règles de topologie vous aident à structurer les relations spatiales entre les entités et contrôlent et valident la manière dont les entités partagent la géométrie.

    Vous devrez peut-être également exécuter cet outil plusieurs fois jusqu'à ce que toutes les règles de topologie souhaitées soient ajoutées à la topologie.

  3. Vous disposez désormais d'une nouvelle topologie dans votre jeu de classes d'entités avec des classes d'entités et des règles de topologie. Si vous avez des données dans vos classes d’entités, utilisez l’outil de géotraitement Validate Topology (Valider la topologie) pour valider votre topologie.

Le script Python autonome d'exemple suivant permet de créer une topologie et d'ajouter plusieurs classes d'entités et règles à la topologie :

Ce script Python autonome permet de créer une topologie, d'ajouter plusieurs classes d'entités et règles et de valider la topologie.

import arcpy
import os
# Input variables
input_dataset = r"C:\MyProjects\MyProject.gdb\fds"
topo_name = "Topology"
cluster_tol = 0.001
input_fc = r"C:\MyProjects\MyProject.gdb\fds\fc1 1 1;C:\MyProjects\MyProject.gdb\fds\fc2 1 1"
rules = r"'Must Not Overlap (Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc1 #;'Must Be Covered By Feature Class Of (Area-Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc2 #"
validate = "true"
# Create the topology
out_topo = arcpy.CreateTopology_management(input_dataset, topo_name, cluster_tol)
print("Created topology.")
# Loop through the list of feature classes and add them to the topology
input_fcL = input_fc.split(";")
for fc in input_fcL:
    param = fc.rsplit(" ", 2)
    in_fc = param[0]
    xy_rank = param[1]
    z_rank = param[2]
    arcpy.AddFeatureClassToTopology_management(out_topo, in_fc, xy_rank, z_rank)
    print(arcpy.GetMessages())
    
# Loop through the list of rules and add rules to the topology
rulesL = rules.split(";")
for rule in rulesL:
    r = rule.rsplit(" ", 4)
    rule_type = r[0].replace("'","")
    in_fc1 = r[1]
    subtype1 = r[2]
    in_fc2 = r[3]
    subtype2 = r[4]
    arcpy.AddRuleToTopology_management(out_topo, rule_type, in_fc1, subtype1, in_fc2, subtype2)
    print(arcpy.GetMessages())
    
# Validate the topology
if validate == "true":
    try:
        arcpy.ValidateTopology_management(out_topo)
    except:
        print(arcpy.GetMessages())
print("Finished.")