Résumé
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 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.
Syntaxe
PolygonToLine(in_features, out_feature_class, {neighbor_option})
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 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")
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]))
Environnements
Informations de licence
- Basic: Non
- Standard: Non
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?