Polygone vers ligne (Gestion des données)
Récapitulatif
Crée une classe d'entités contenant des lignes converties de limites de polygone en tenant compte ou non des polygones voisins.
Illustration
Utilisation
Si la case Identifier et enregistrer les informations de voisinage du polygone est cochée (l'option neighbor_option est paramétrée sur IDENTIFY_NEIGHBORS dans l'écriture de script), 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 voisins du côté gauche (à l'extérieur) de sa limite externe et du côté gauche (à l'intérieur) de la limite du trou, les lignes résultantes auront une valeur de -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 et 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 son 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.
-
Si la case Identifier et enregistrer les informations de voisinage du polygone n'est pas cochée (l'option neighbor_option est paramétrée sur IGNORE_NEIGHBORS dans l'écriture de script), 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 dans la sortie. Les attributs des entités en entrée seront conservés dans la classe d'entités points 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.
-
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.
Syntaxe
Paramètre | Explication | Type 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.
| Boolean |
Exemple de code
Le script de fenêtre Python suivant montre comment utiliser la fonction PolygonToLine en mode immédiat.
import arcpy from arcpy import env env.workspace = "C:/data" arcpy.PolygonToLine_management("Habitat_Analysis.gdb/vegtype", "C:/output/Output.gdb/vegtype_lines", "IGNORE_NEIGHBORS")
Le script autonome suivant dessous est un exemple d'application 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. # Author: ESRI # import system modules import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data/landcovers.gdb" # Create variables for the input and output feature classes inFeatureClass = "bldgs" outFeatureClass = "bldgs_lines" # Use error trapping in case a problem occurs when running the tool try: # 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.getOutput(0) == "0"): print "No overlapping or shared boundary lines were found." else: print result.getOutput(0) + " overlapping or shared " +\ "boundary lines were found." except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message