Résoudre des conflits de bâtiments (Cartographie)
Récapitulatif
Résout les conflits de symboles entre bâtiments et en fonction des entités d'interruption linéaires en déplaçant ou en masquant des bâtiments.
En savoir plus sur le fonctionnement de l'outil Résoudre des conflits de construction
Cet outil ne produit pas de couches en sortie mais il permet de modifier les classes d'entités source des couches en entrée. Si les couches en entrée sont affichées avec une représentation (dont le comportement de mise à jour est défini pour stocker les débrayages de forme), les entités modifiées sont stockées en tant que débrayages de forme dans la représentation. Si la couche n'est pas affichée avec une représentation, la géométrie des entités en entrée est modifiée. L'utilisation de représentations est recommandée avec les outils de résolution des conflits. Ainsi, si les résultats ne sont pas acceptables ou si vous souhaitez réexécuter l'outil avec d'autres paramètres, il vous suffit de supprimer les débrayages à l'aide de l'outil Supprimer un débrayage. Nous vous conseillons vivement de faire une copie des entités en entrée si vous n'utilisez pas de représentations dont le comportement de mise à jour est défini pour stocker les débrayages de forme.
Un avertissement s'affiche si les entités en entrée ne sont pas dans un système de coordonnées projetées. Cet outil s'appuie sur des unités de distance linéaire, qui créent des résultats inattendus dans un système de coordonnées non projetées. Nous vous conseillons vivement d'exécuter cet outil sur des données dans un système de coordonnées projetées pour obtenir des résultats fiables. Une erreur s'affiche et l'outil ne fonctionne pas si le système de coordonnées manque ou s'il est inconnu.
Illustration
Utilisation
-
Cet outil fonctionne en évaluant les conflits graphiques des entités symbolisées. L'étendue de symbologie et l'échelle de référence sont considérées conjointement. Exécutez cet outil uniquement après avoir finalisé l'apparence des symboles et assurez-vous que l'échelle de référence correspond à l'échelle finale voulue.
-
Le Champ d'invisibilité doit être présent et avoir le même nom pour toutes les classes d'entités en entrée. La valeur 0 est affectée aux entités devant rester visibles ; la valeur 1 est affectée à celles qui doivent être supprimées de l'affichage. Utilisez un ensemble de définitions de couche ou une sélection pour afficher l'ensemble simplifié obtenu (par exemple, invisibilité <> 1). Vous pouvez utiliser plusieurs champs d'invisibilité pour stocker des résultats (correspondant à des échelles en sortie différentes) sur la même classe d'entités.
Avant l'évaluation des conflits, les bâtiments polygonaux sont agrandis à une taille minimale spécifiée par le paramètre Taille de bâtiment minimale autorisée. La taille minimale est mesurée en tant que distance linéaire le long du côté le plus court d'une emprise pivotée la mieux ajustée à l'entité. Pour examiner la taille finale des bâtiments dans les résultats en sortie, ajoutez un double ou un champ flottant à chacune des classes d'entités de bâtiment en entrée appelées RBC_SIZE. Au cours de l'exécution de l'outil, ce champ sera mis à jour avec le plus petit côté d'une emprise pivotée autour de chaque entité.
-
Le paramètre Champ de hiérarchie est facultatif. S'il n'est pas spécifié, les bâtiments se verront affecter une importance relative selon le périmètre du bâtiment et leur proximité aux interruptions. Les bâtiments les plus grands les plus proches de plusieurs interruptions auront une importance plus grande que les plus petits bâtiments relativement éloignés d'une interruption. Vous pouvez utiliser un champ Hiérarchie partiellement renseigné selon lequel une valeur hiérarchique est attribuée uniquement aux bâtiments significatifs. L'importance relative de toutes les autres entités (ayant une valeur de hiérarchie NULL) sera calculée en interne.
-
Si le paramètre Champ de hiérarchie est utilisé, il est possible de forcer les bâtiments à rester visibles en leur affectant une valeur de hiérarchie de 0 (zéro). Ils ne seront pas masqués par l'outil. Un bâtiment ayant une hiérarchie de zéro est considéré comme important en local. C'est pourquoi les bâtiments proches peuvent être compromis plus que la normale si ce bâtiment n'avait pas été forcé à rester visible. Les bâtiments de hiérarchie de zéro peuvent toujours être transformés (déplacés, pivoté ou redimensionnés) afin qu'ils correspondent à d'autres paramètres requis et de résoudre les conflits.
Tous les bâtiments dont la géométrie est en conflit avec les interruptions (à savoir lorsque la géométrie réelle, et pas seulement la symbologie, des bâtiments chevauche celle d'une entité interruption telle qu'une route) ne seront pas déplacés de l'entité interruption. Ces bâtiments peuvent être marqués d'un indicateur en vue d'être masqués lors du traitement de la résolution des conflits, mais ne seront pas déplacés et un conflit demeurera.
Si la symbologie des entités interruptions n'est pas distribuée symétriquement dans la géométrie, c'est-à-dire, si le symbole est plus épais d'un côté de la ligne que de l'autre, une plus grande distance bâtiment-à-interruption peut apparaître sur le côté de l'interruption avec la symbologie plus mince.
Le traitement conjoint de grands jeux de données ou de plusieurs couches d'interruptions peut dépasser les limites de la mémoire. Dans ce cas, traitez les données de bâtiments en entrée par partition en identifiant une classe d'entités surfaciques pertinente dans le paramètre d'environnement Entités de partition. Les portions de données de bâtiments, définies par les limites des partitions, sont traitées séquentiellement. Les couches résultantes seront transparentes et cohérentes aux tronçons de partition. Reportez-vous à Fonctionnement de Résoudre des conflits de bâtiments pour plus d'informations sur l'exécution de cet outil avec le partitionnement.
Syntaxe
Paramètre | Explication | Type de données |
in_buildings [in_buildings,...] |
Couches en entrée qui contiennent des entités de bâtiment susceptibles d'être en conflit, ou plus petites que la taille autorisée. Les bâtiments peuvent être des points ou des polygones. Les bâtiments seront modifiés pour résoudre les conflits impliquant d'autres bâtiments et des entités interruptions. | Layer |
invisibility_field |
Champ qui stocke les valeurs d'invisibilité qui peuvent être utilisées pour supprimer des bâtiments de l'affichage afin de résoudre des conflits de symboles. Les bâtiments ayant une valeur de 1 doivent être supprimés de l'affichage ; ceux ayant une valeur de zéro doivent rester. Utilisez un ensemble de définitions sur la couche pour afficher uniquement les bâtiments visibles. Aucune entité n'est supprimée. | String |
in_barriers [[Layer, Boolean, Linear Unit],...] |
Couches qui contiennent les entités linéaires ou surfaciques qui constituent des interruptions en conflit avec les entités de bâtiment en entrée. Pour résoudre les conflits entre bâtiments et interruptions, les bâtiments seront modifiés. La valeur Orientation est Booléenne. Elle indique si les bâtiments doivent être orientés vers la couche d'interruptions. La valeur Distance spécifie la distance à laquelle les bâtiments doivent être rapprochés ou éloignés de la couche d'interruptions. Vous devez entrer une unité avec la valeur.
Remarque : Si aucune unité n'est entrée avec la valeur Distance (par exemple, 10 au lieu de 10 mètres), l'unité linéaire du système de coordonnées de l'entité en entrée sera utilisée. | Value Table |
building_gap |
Distance minimale autorisée entre des bâtiments symbolisés à l'échelle. Les bâtiments qui sont les plus proches les uns des autres seront déplacés ou masqués pour appliquer cette distance. La distance minimale autorisée est définie en fonction de l'échelle de référence (par exemple, 15 mètres à une échelle de 1:50 000). La valeur est 0 si l'échelle de référence n'est pas définie. | Linear unit |
minimum_size |
Taille minimale autorisée du côté le plus court de l'emprise pivotée la mieux adaptée autour de l'entité de bâtiment symbolisée dessinée à l'échelle de référence. Un bâtiment doté d'une emprise dont un côté est plus petit que cette valeur sera agrandi qu'il la touche. Il se peut que le redimensionnement ne soit pas proportionnel, ce qui provoque un changement dans la morphologie des bâtiments. | Linear unit |
hierarchy_field (Facultatif) |
Champ qui contient le classement hiérarchique de l'importance des entités, où 1 correspond à "très important". Plus les entiers sont grands, moins l'importance est grande. Une valeur de 0 (zéro) force le bâtiment à rester visible. Le bâtiment peut toutefois être quelque peu déplacé pour résoudre des conflits. Si ce paramètre n'est pas utilisé, l'importance des entités sera évaluée par l'outil selon la longueur du périmètre et la proximité aux entités interruptions. | String |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de l'outil ResolveBuildingConflicts en mode immédiat.
import arcpy
from arcpy import env
env.workspace = "C:/data"
env.referenceScale = "50000"
arcpy.ResolveBuildingConflicts("C:/data/footprints.lyr; \
C:/data/bldg_points.lyr",
"invisible",
"'C:/data/roads.lyr' \
'true' \
'5 Meters'; \
'C:/data/trails.lyr' \
'false' \
'10 Meters'; \
'C:/data/streams.lyr' \
'false' \
'5 Meters'",
"10 meters",
"15 meters",
"bldg_hierarchy")
Ce script autonome montre un exemple de l'utilisation de l'outil ResolveBuildingConflicts.
# Name: ResolveBuildingConflicts_standalone_script.py
# Description: Resolves the symbology conflicts between
# buildings and nearby barriers,
# in this case - roads
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
env.referenceScale = "50000"
# Set local variables
in_buildings = "C:/data/footprints.lyr;C:/data/bldg_pts.lyr"
invisibility_field = "invisible"
in_barriers = "'C:/data/roads.lyr' 'true' '5 Meters';\
'C:/data/trails.lyr' 'false' '10 Meters';\
'C:/data/streams.lyr' 'false' '5 Meters'"
building_gap = "10 meters"
minimum_size = "15 meters"
hierarchy_field = "bldg_hierarchy"
# Execute Resolve Building Conflicts
arcpy.ResolveBuildingConflicts(in_buildings,
invisibility_field,
in_barriers,
building_gap,
minimum_size,
hierarchy_field)