Polygones vers lignes (Gestion des données)

Synthèse

Crée une classe d'entités contenant des lignes converties de limites de polygone en tenant compte ou non des polygones voisins.

Illustration

Illustration de l'outil Polygone vers ligne

Utilisation

  • Si la case Identify and store polygon neighboring information (Identifier et enregistrer les informations de voisinage du polygone) est cochée (l'option neighbor_option est paramétrée sur IDENTIFY_NEIGHBORS dans Python), la relation avec le polygone voisin est analysée. Comme illustré ci-dessus, les limites sont converties en lignes en tenant compte des segments mitoyens ou en intersection ; deux nouveaux champs, LEFT_FID et RIGHT_FID, seront ajoutés à la classe d’entités en sortie et définis sur les identifiants des entités des polygones en entrée à gauche et à droite de chaque ligne en sortie. Les attributs des entités en entrée ne seront pas conservés dans la classe d'entités en sortie. Les scénarios suivants vous aident à comprendre plus en détail le processus et la sortie :

    • Dans une géométrie de polygone, la limite externe est toujours stockée dans le sens des aiguilles d'une montre. Si le polygone a un trou, la limite du trou (ou intérieure) est toujours stockée dans le sens inverse des aiguilles d'une montre. Par conséquent, pour un polygone sans voisin à gauche (à l’extérieur) de sa limite externe et à gauche (à l’intérieur) de la limite du trou, les lignes résultantes auront la valeur -1 pour LEFT_FID et l’identifiant d’entité surfacique comme RIGHT_FID.
    • Si un polygone contient un autre polygone, une ligne en sortie dans le sens des aiguilles d’une montre sera générée afin de représenter la limite partagée, LEFT_FID étant défini sur l’identifiant d’entité surfacique extérieure et RIGHT_FID sur l’identifiant d’entité surfacique intérieure.
    • Si deux polygones partagent une portion de leurs limites, une ligne en sortie sera générée afin de représenter le segment mitoyen. La direction de la ligne sera arbitraire ; LEFT_FID et RIGHT_FID seront définis en conséquence sur les identifiants d’entité surfacique gauche ou droit.
    • Si un polygone se superpose à un autre polygone, deux lignes en sortie seront générées afin de représenter deux fois chaque limite en intersection. La première ligne représentera la limite extérieure de l’un des polygones superposés ; son LEFT_FID sera donc l’identifiant d’entité du polygone qu’il croise et RIGHT_FID son propre identifiant d’entité surfacique. La deuxième ligne ira dans la direction opposée, fractionnant l’autre polygone ; son LEFT_FID et son RIGHT_FID seront donc identiques à l’autre identifiant d’entité surfacique.
    • Dans les polygones en entrée, les multi-parties ne sont pas gérées. Les lignes en sortie sont toutes en une seule partie.

    Pour les entités en entrée qui sont des courbes paramétriques (vrai), les lignes en sortie resteront de vraies courbes même si elles sont fractionnées. Cela ne s'applique pas aux données des fichiers de formes.

    Cette option utilise un processus de tuilage pour la gestion des jeux de données très volumineux afin d'améliorer les performances et l'évolutivité. Pour plus de détails, reportez-vous à la rubrique Traitement tuilé de jeux de données volumineux.

  • Si la case Identify and store polygon neighboring information (Identifier et enregistrer les informations de voisinage du polygone) est décochée (l'option neighbor_option est paramétrée sur IGNORE_NEIGHBORS dans Python), la relation avec le polygone voisin est ignorée. Chaque limite de polygone en entrée sera écrite comme entité linéaire délimitée. Un polygone multi-parties deviendra une ligne multi-parties en sortie. Les attributs des entités en entrée seront conservés dans la classe d'entités en sortie. Un nouveau champ, ORIG_FID, sera ajouté à la sortie et défini sur les identifiants d’entité en entrée de chaque ligne.

Paramètres

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

Entités en entrée qui doivent être des polygones.

Feature Layer
Classe d’entités en sortie

Classe d’entités linéaires en sortie.

Feature Class
Identifier et enregistrer les informations de voisinage du polygone
(Facultatif)

Indique s'il faut ou non identifier et stocker les données du polygone voisin.

  • Activé : la relation avec le polygone voisin est identifiée et stockée dans la sortie. Si différents segments de la limite d'un polygone sont mitoyens avec d'autres polygones, la limite sera fractionnée de sorte que chaque segment mitoyen unique devienne une ligne et que les identifiants des entités surfaciques voisines soient stockés dans la sortie, comme indiqué dans l'illustration. Il s’agit de l’option par défaut.
  • Désactivé : la relation avec le polygone voisin est ignorée ; chaque limite de polygone deviendra une entité linéaire et son identifiant d'entité surfacique original sera stocké dans la sortie.

Boolean

arcpy.management.PolygonToLine(in_features, out_feature_class, {neighbor_option})
NomExplicationType de données
in_features

Entités en entrée qui doivent être des polygones.

Feature Layer
out_feature_class

Classe d’entités linéaires en sortie.

Feature Class
neighbor_option
(Facultatif)

Indique s'il faut ou non identifier et stocker les données du polygone voisin.

  • IDENTIFY_NEIGHBORSLa relation avec le polygone voisin est identifiée et stockée dans la sortie. Si différents segments de la limite d'un polygone sont mitoyens avec d'autres polygones, la limite sera fractionnée de sorte que chaque segment mitoyen unique devienne une ligne dont les identifiants des entités surfaciques voisines seront stockés dans la sortie. Il s’agit de l’option par défaut.
  • IGNORE_NEIGHBORSLa relation avec le polygone voisin est ignorée ; chaque limite de polygone deviendra une entité linéaire et son identifiant d'entité surfacique original sera stocké dans la sortie.
Boolean

Exemple de code

Exemple 1 d'utilisation de l'outil PolygonToLine (fenêtre Python)

Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction PolygonToLine en mode immédiat.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.PolygonToLine_management("Habitat_Analysis.gdb/vegtype", 
                               "C:/output/Output.gdb/vegtype_lines",
                               "IGNORE_NEIGHBORS")
Exemple 2 d'utilisation de l'outil PolygonToLine (script autonome)

Le script autonome suivant est un exemple simple de la fonction PolygonToLine dans un environnement de scripts.

# Name: PolygonToLine_Example2.py
# Description: Use PolygonToLine function to convert polygons to lines,
#              and report how many shared or overlapping boundary lines
#              were found.
# import system modules 
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data/landcovers.gdb"
 
# Create variables for the input and output feature classes
inFeatureClass = "bldgs"
outFeatureClass = "bldgs_lines"
 
# Run PolygonToLine to convert polygons to lines using default neighbor_option
arcpy.PolygonToLine_management(inFeatureClass, outFeatureClass)
# Select lines that have LEFT_FID values greater than -1
arcpy.MakeFeatureLayer_management(outFeatureClass, "selection_lyr", 
                                  "\"LEFT_FID\" > -1")
result = arcpy.GetCount_management("selection_lyr")
if result[0] == "0":
    print("No overlapping or shared boundary lines were found.")
else:
    print("{} overlapping or shared boundary lines were found.".format(result[0]))

Rubriques connexes