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.
-
Cet outil 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 Géotraitement sur jeux de données volumineux.
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