Fractionner la ligne par appariement (Mise à jour)

Synthèse

Fractionne des entités en fonction des relations d’appariement pour obtenir une meilleure segmentation de ligne correspondante.

Lorsque des entités linéaires se trouvent dans deux jeux de données différents (par exemple, des routes de ville et des routes d’état), le fait d’avoir des entités dans des relations d’appariement 1:1 au lieu de plusieurs vers plusieurs (m:n) facilite les tâches de regroupement, telles que le transfert d’attributs d’une source vers une autre. Cet outil permet de transformer les appariements m:n en un plus grand nombre d’appariements 1:1.

Les entités en entrée et les entités appariées doivent être préalablement appariées par l’un des outils de regroupement basés sur l’appariement des entités, tels que Détecter les modifications apportées aux entités et une table d’appariement doit être générée. Les relations d’appariement enregistrées dans la table d’appariement se situent entre les entités source et cible.

Pour chaque groupe d’appariement, l’outil fractionne les entités en entrée en fonction des conditions de nœud dans les entités appariées. Un nœud peut être l’extrémité pendante d’une ligne, un pseudo nœud entre deux lignes ou une jonction de plusieurs lignes. Par exemple, un groupe apparié 1:2 signifie qu’une entité source est appariée à deux entités cible et que les deux entités cible sont jointes à un pseudo nœud. L’outil fractionne la ligne en entrée à un emplacement proche du pseudo nœud cible. Ceci améliore les correspondances entre les lignes source et cible afin que la prochaine série d’appariement d’entités produise plusieurs d’appariements 1:1 pour répondre aux besoins en regroupement.

Illustration

Illustration de l’outil Fractionner la ligne par appariement

Utilisation

  • La classe d’entités en sortie contient toutes les entités en entrée qui ont été fractionnées ou qui sont restées intactes, ainsi que tous leurs attributs. Les champs suivants sont ajoutés :

    • ORIG_FID : ID des entités de l’entrée.
    • SBM_LnFlag : stocke les valeurs suivantes :
      • Split : lignes qui ont été fractionnées.
      • Not split : lignes en entrée qui n’ont pas été modifiées.
      • Short match group : lignes qui ne peuvent pas faire partie du processus, car elles ne répondent pas à la valeur du paramètre Longueur minimale du groupe d’appariement.

    Une classe d’entités ponctuelles facultative peut être générée pour stocker les emplacements dans lesquels des lignes ont été fractionnées ou n’ont pas pu être fractionnées. Ces points peuvent servir à inspecter le résultat. Cette sortie comprend les champs suivants :

    • ORIG_FID : ID des entités de l’entrée aux localisations de fractionnement.
    • SBM_PtFlag : stocke les valeurs suivantes :
      • At vertex : localisations où une ligne en entrée a été fractionnée à un sommet existant.
      • At nearest : localisations où une ligne en entrée a été fractionnée à la localisation la plus proche du nœud dans les entités appariées.
      • Short segment : localisations où une ligne en entrée ne peut pas être fractionnée conformément à la valeur Longueur minimale de fractionnement spécifiée.
      • Out of range : localisations où une ligne en entrée ne peut pas être fractionnée, car la localisation de fractionnement candidate se situe au-delà de la distance de recherche. Certaines de ces localisations peuvent toujours être utilisées pour fractionner les lignes après le processus.

      Lors de l’inspection, il est possible de fractionner des lignes supplémentaires en fonction d’un des points signalés comme Short segment ou Out of range à l’aide de l’outil Fractionner une ligne sur un point.

  • Utilisez le paramètre Distance de recherche pour rechercher les localisations candidates et fractionner une ligne en entrée à partir d’un nœud dans les entités appariées. Pour optimiser les chances de trouver un emplacement de fractionnement plus proche d’un nœud dans les entités appariées, une valeur de distance interne est dérivée en fonction de la proximité d’un nœud par rapport à une entité en entrée. Si la distance dérivée est inférieure au tiers de la distance de recherche, la distance dérivée est définie sur un tiers de la distance de recherche. Si la distance dérivée est supérieure à la distance de recherche, la valeur de la distance dérivée est définie sur la distance de recherche. Les valeurs des distances dérivées situées entre les deux sont utilisées en l’état. La distance de recherche spécifiée est la valeur maximale à utiliser. Par exemple, si vous spécifiez une distance de recherche de 90 mètres, les valeurs des distances dérivées utilisées dans le processus sont de 30 mètres, 90 mètres et toutes les valeurs comprises entre les deux.

    Il est important de définir une distance de recherche appropriée. La valeur que vous avez utilisée avant le processus d’appariement peut convenir. Plus la distance de recherche est importante et plus il est probable qu’un sommet plus éloigné soit utilisé pour fractionner une ligne en entrée et qu’un nœud en entrée plus éloigné soit trouvé, ce qui empêche tout fractionnement.

  • La distance de recherche dérivée en interne permet de rechercher les emplacements candidats sur l’entité en entrée à partir d’un nœud dans les entités appariées. Les règles suivantes servent à déterminer si la ligne en entrée doit être fractionnée et si tel est le cas, où la fractionner.

    • Si un pseudo nœud d’appariement trouve un pseudo nœud en entrée, aucun fractionnement n’a lieu.
    • Si un non-pseudo nœud d’appariement trouve un nœud en entrée, aucun fractionnement n’a lieu. Par exemple, si un nœud d’appariement d’arc pendant trouve un nœud en entrée à une jonction en Té, la ligne en entrée n’est pas fractionnée.
    • Sinon, l’entité en entrée est fractionnée au seul sommet trouvé, ou au sommet le plus proche trouvé. Si aucun sommet n’est trouvé, elle est fractionnée à la localisation la plus proche de la ligne en entrée. Toutefois, si un pseudo nœud d’appariement trouve un non-pseudo nœud en entrée, la ligne en entrée sera fractionnée.

  • Les lignes pendantes peuvent être fractionnées avec le paramètre Fractionner les entités d’arc pendant. Si une ligne pendante en entrée s’étend au-delà de l’entité appariée à l’extrémité de l’arc pendant, elle est fractionnée par défaut. Une ligne pendante peut être fractionnée pour identifier la différence réelle entre les entités source et cible dans l’appariement d’entités suivant.

  • Utilisez le paramètre Longueur minimale du groupe d’appariement pour exclure les groupes d’appariement qui sont trop courts pour être fractionnés par rapport à la valeur spécifiée. Dans un groupe d’appariement donné, si la longueur totale des entités en entrée et la longueur totale des entités appariées sont toutes les deux inférieures à la valeur spécifiée, le groupe est exclu. Évitez de fractionner les entités dans les groupes d’appariement courts afin d’empêcher un fractionnement trop récurrent et non satisfaisant. Toutes les lignes en entrée qui font partie de groupes d’appariement courts sont écrites dans la sortie et signalées par la mention Short match group dans le champ SBM_LnFlag.

  • Utilisez le paramètre Longueur minimale de fractionnement pour éviter les lignes courtes. Si le fractionnement d’une ligne en entrée génère une ligne de longueur inférieure à cette valeur, la ligne en entrée n’est pas fractionnée. Un point à la localisation de fractionnement signalé par la mention Short segment dans le champ SBM_PtFlag est enregistré dans la classe d’entités ponctuelles, le cas échéant, en tant que référence pour l’inspection.

  • Utilisez le paramètre Champs de fractionnement pour spécifier que les valeurs d’un ou de plusieurs champs numériques (champ mesurant la longueur, par exemple) doivent être fractionnées en fonction des proportions des lignes de fractionnement.

Paramètres

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

Entités linéaires en entrée à fractionner. Elles doit être préalablement appariées avec les entités appariées.

Feature Layer
Entités appariées

Entités qui ont été préalablement appariées avec les entités en entrée. Les entités appariées servent de référence lors du fractionnement des entités en entrée.

Feature Layer
Table d'appariement en entrée

Table qui comprend les informations d’appariement entre les entités en entrée et appariées.

Table View
Classe d’entités en sortie

Classe d’entités en sortie contenant les lignes de fractionnement et les lignes d’origine qui ne sont pas fractionnées.

Feature Class
Distance de recherche

Valeur de distance qui servira à déterminer les localisations de fractionnement. La valeur doit être supérieure à 0. Si aucune unité n'est renseignée, les unités de l’entrée sont utilisées.

Linear Unit
Entités en entrée incluses dans l’appariement
(Facultatif)

Indique si les entités en entrée dans la table d’appariement sont des entités source ou cible, afin de fractionner les entités appropriées.

  • En tant qu’entités sourceLes entités en entrée sont stockées en tant qu’entités source dans la table d’appariement. Il s’agit de l’option par défaut.
  • En tant qu’entités cibleLes entités en entrée sont stockées en tant qu’entités cible dans la table d’appariement.
String
Points de fractionnement en sortie
(Facultatif)

Classe d’entités ponctuelles en sortie contenant les points qui représentent les emplacements de fractionnement.

Feature Class
Fractionner les entités d'arc pendant
(Facultatif)

Indique si les lignes pendantes sont fractionnées.

  • Activé : les lignes pendantes sont fractionnées conformément aux règles de fractionnement de l’outil. Il s’agit de l’option par défaut.
  • Désactivé : les lignes pendantes ne sont pas fractionnées.
Boolean
Taille minimale du groupe d’appariement
(Facultatif)

Taille minimale possible pour un groupe d’appariement. Un groupe d’appariement donné fait uniquement partie du fractionnement si la longueur totale des entités en entrée ou la longueur totale des entités appariées est supérieure à la valeur fournie.

Linear Unit
Longueur minimale de fractionnement
(Facultatif)

Longueur minimale d’un composant de fractionnement. Si un fractionnement risque de générer un ou deux composants de longueur inférieure à la valeur spécifiée, le fractionnement n’a pas lieu.

Linear Unit
Champ(s) de fractionnement
(Facultatif)

Liste des champs numériques à partir des entités en entrée. Leurs valeurs de champ reposent sur les proportions des lignes de fractionnement.

Field

arcpy.management.SplitLineByMatch(in_features, matched_features, in_match_table, out_feature_class, search_distance, {in_features_as}, {out_point_feature_class}, {split_dangle}, {min_match_group_length}, {min_split_length}, {split_fields})
NomExplicationType de données
in_features

Entités linéaires en entrée à fractionner. Elles doit être préalablement appariées avec les entités appariées.

Feature Layer
matched_features

Entités qui ont été préalablement appariées avec les entités en entrée. Les entités appariées servent de référence lors du fractionnement des entités en entrée.

Feature Layer
in_match_table

Table qui comprend les informations d’appariement entre les entités en entrée et appariées.

Table View
out_feature_class

Classe d’entités en sortie contenant les lignes de fractionnement et les lignes d’origine qui ne sont pas fractionnées.

Feature Class
search_distance

Valeur de distance qui servira à déterminer les localisations de fractionnement. La valeur doit être supérieure à 0. Si aucune unité n'est renseignée, les unités de l’entrée sont utilisées.

Linear Unit
in_features_as
(Facultatif)

Indique si les entités en entrée dans la table d’appariement sont des entités source ou cible, afin de fractionner les entités appropriées.

  • AS_SOURCELes entités en entrée sont stockées en tant qu’entités source dans la table d’appariement. Il s’agit de l’option par défaut.
  • AS_TARGETLes entités en entrée sont stockées en tant qu’entités cible dans la table d’appariement.
String
out_point_feature_class
(Facultatif)

Classe d’entités ponctuelles en sortie contenant les points qui représentent les emplacements de fractionnement.

Feature Class
split_dangle
(Facultatif)

Indique si les lignes pendantes sont fractionnées.

  • SPLIT_DANGLELes lignes pendantes sont fractionnées conformément aux règles de fractionnement de l’outil. Il s’agit de l’option par défaut.
  • NO_SPLIT_DANGLELes lignes pendantes ne sont pas fractionnées.
Boolean
min_match_group_length
(Facultatif)

Taille minimale possible pour un groupe d’appariement. Un groupe d’appariement donné fait uniquement partie du fractionnement si la longueur totale des entités en entrée ou la longueur totale des entités appariées est supérieure à la valeur fournie.

Linear Unit
min_split_length
(Facultatif)

Longueur minimale d’un composant de fractionnement. Si un fractionnement risque de générer un ou deux composants de longueur inférieure à la valeur spécifiée, le fractionnement n’a pas lieu.

Linear Unit
split_fields
[split_field,...]
(Facultatif)

Liste des champs numériques à partir des entités en entrée. Leurs valeurs de champ reposent sur les proportions des lignes de fractionnement.

Field

Exemple de code

Exemple 1 d’utilisation de l’outil SplitLineByMatch (fenêtre Python)

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

import arcpy
arcpy.env.workspace = "C:/data/roads.gdb"
arcpy.edit.SplitLineByMatch("city_Roads", "county_Roads", "match_table",
                            "city_roads_split", "50 Meters")
Exemple 2 d’utilisation de l’outil SplitLineByMatch (script autonome)

Le script autonome suivant est un exemple d’application de la fonction SplitLineByMatch dans un environnement de scripts.

"""
Name:        SplitLineByMatch_example_script2.py
Description: Use DetectFeatureChanges to get initial matching and then use
             SplitLineByMatch to split the source and target to improve spatial
             correspondence. 
             Finally use TransferAttributes to transfer a field value from the
             split source to the split target features.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflation\Tools\splitlinebym\roads.gdb"

# Set local variables
sourceFeatures = "sourceRoads"
targetFeatures = "targetRoads"

dfcOutput = "DFC"
searchDistance = "100 Feet"
dfcMatchTable = "DFC_mtable"

slbmSourceOutput = "out_source"
slbmSourceOutputPts = "out_sourcePoints"
slbmTargetOutput = "out_target"
slbmTargetOutputPts = "out_targetPoints"
dangle = "SPLIT_DANGLE"
minSplitLength = "300 Feet"

transfer_fields = "Mile_Length"

# Use Detect Feature Changes tool to generate the needed match table
arcpy.management.DetectFeatureChanges(sourceFeatures, targetFeatures, dfcOutput, searchDistance, dfcMatchTable)

# Use Split Line By Match tool twice to split source and then target features to improve spatial correspondence
arcpy.edit.SplitLineByMatch(sourceFeatures, targetFeatures, dfcMatchTable, slbmSourceOutput, searchDistance,
                            "AS_SOURCE", slbmSourceOutputPts, dangle, "", minSplitLength)

arcpy.edit.SplitLineByMatch(targetFeatures, sourceFeatures, dfcMatchTable, slbmTargetOutput, searchDistance,
                            "AS_TARGET", slbmTargetOutputPts, dangle, "", minSplitLength)

# Perform attribute transfer using the split results
arcpy.edit.TransferAttributes(slbmSourceOutput, slbmTargetOutput, transfer_fields, searchDistance)