Etiqueta | Explicación | Tipo de datos |
Entidades de entrada | Las entidades de línea de entrada que se van a dividir. Se deben concordar previamente con las entidades coincidentes. | Feature Layer |
Entidades coincidentes | Entidades previamente concordadas con las entidades de entrada. Las entidades coincidentes se utilizan como referencia al dividir las entidades de entrada. | Feature Layer |
Tabla de concordancias de entrada | Una tabla que incluye información de coincidencia entre las entidades de entrada y coincidentes. | Table View |
Clase de entidad de salida | La clase de entidad de salida que contiene líneas de división y líneas originales que no se dividen. | Feature Class |
Distancia de búsqueda | Valor de distancia que se utilizará para determinar ubicaciones de división. El valor debe ser mayor que 0. Si no se especifican unidades, se utilizarán las unidades de la entrada. | Linear Unit |
Entidades de entrada en la concordancia (Opcional) | Especifica si las entidades de entrada de la tabla de concordancias son entidades de origen o entidades de destino, para que se dividan las entidades correctas.
| String |
Puntos de división de salida (Opcional) | La clase de entidad de punto de salida que contiene puntos que representan ubicaciones de división. | Feature Class |
Dividir entidades de nodo colgado (dangle) (Opcional) | Especifica si las líneas colgantes se dividirán.
| Boolean |
Longitud mínima de grupo de coincidencia (Opcional) | Longitud mínima que puede tener un grupo de coincidencia. Un grupo de coincidencia determinado solo participará en el proceso de división si la longitud total de las entidades de entrada o la longitud total de las entidades coincidentes son mayores que el valor proporcionado. | Linear Unit |
Longitud mínima de división (Opcional) | Longitud mínima que puede tener una parte de la división. Si una división da lugar a que una o ambas partes de la división sean más cortas que el valor proporcionado, la división no se producirá. | Linear Unit |
Campos de división (Opcional) | Lista de campos numéricos de las entidades de entrada. Sus valores de campo se basarán en las proporciones de las líneas de división. | Field |
Resumen
Divide entidades en función de sus relaciones de concordancia, para obtener una mejor correspondencia de segmentación de línea.
Al trabajar con entidades de línea en dos datasets diferentes (por ejemplo, carreteras municipales y carreteras estatales), tener entidades con relaciones de concordancia de uno a uno (1:1) en lugar de muchos a muchos (m:n) ayudará en las tareas de alineación completa, como la transferencia de atributos de un origen a otro. Esta herramienta ayuda a convertir las coincidencias m:n en más coincidencias 1:1.
Las entidades de entrada y las entidades coincidentes se deben concordar previamente con una de las herramientas de alineación completa basadas en la coincidencia de entidades, como Detectar cambios de entidades, con una tabla de concordancias producida. Las relaciones de concordancia registradas en la tabla de concordancias son entre las entidades de origen y de destino.
En cada grupo de coincidencia, la herramienta divide las entidades de entrada en función de las condiciones de nodo de las entidades coincidentes. Un nodo puede ser un extremo de línea de nodo colgado (dangle), un pseudonodo entre dos líneas o un cruce de varias líneas. Por ejemplo, un grupo coincidente 1:2 significa que una entidad de origen se concordó con dos entidades de destino y las dos entidades de destino están unidas en un pseudonodo. La herramienta dividirá la línea de entrada en una ubicación cercana al pseudonodo de destino. La finalidad es mejorar las correspondencias entre las líneas de origen y destino para que la siguiente tanda de coincidencia de entidades produzca más coincidencias 1:1 para las necesidades de alineación completa.
Ilustración
Uso
La clase de entidad de salida contiene todas las entidades de entrada que se han dividido o que no se han modificado, así como todos sus atributos. Se agregan los siguientes campos:
- ORIG_FID: los Id. de entidad de la entrada.
- SBM_LnFlag: almacena los siguientes valores:
- Split: líneas que se han dividido.
- Not split: líneas de entrada que no se han modificado.
- Short match group: líneas que no pueden participar en el proceso porque no satisfacen el valor del parámetro Longitud mínima de grupo de coincidencia.
Se puede generar una clase de entidad de punto opcional para almacenar ubicaciones en las que las líneas se han dividido o no se han podido dividir. Estos puntos se pueden utilizar para inspeccionar el resultado. Esta salida incluye los siguientes campos:
- ORIG_FID: los Id. de entidad de la entrada en las ubicaciones de división.
- SBM_PtFlag: almacena los siguientes valores:
- At vertex: ubicaciones en las que una línea de entrada se ha dividido en un vértice existente.
- At nearest: ubicaciones en las que una línea de entrada se ha dividido en la ubicación más cercana al nodo en las entidades coincidentes.
- Short segment: ubicaciones en las que una línea de entrada no se puede dividir de acuerdo con el valor de Longitud mínima de división especificado.
- Out of range: ubicaciones en las que una línea de entrada no se puede dividir porque la ubicación de división candidata está más allá de la distancia de búsqueda. Algunas de estas ubicaciones aún se pueden utilizar para dividir las líneas como un proceso posterior.
Tras la inspección, podría ser posible dividir líneas adicionales por cualquiera de los puntos marcados como Short segment o Out of range con la herramienta Dividir línea en punto.
Utilice el parámetro Distancia de búsqueda para buscar ubicaciones candidatas para dividir una línea de entrada de un nodo en las entidades coincidentes. Para asegurar una mayor posibilidad de encontrar una ubicación de división más cercana a un nodo en las entidades coincidentes, se deriva un valor de distancia interno en función de la cercanía de un nodo a una entidad de entrada. Si la distancia derivada es inferior a un tercio de la distancia de búsqueda, la distancia derivada se establece en un tercio de la distancia de búsqueda. Si la distancia derivada es mayor que la distancia de búsqueda, el valor de distancia derivada se establece en la distancia de búsqueda. Cualquier valor de distancia derivada intermedio se utiliza tal cual. La distancia de búsqueda especificada es el valor máximo que se va a usar. Por ejemplo, si especifica 90 metros como distancia de búsqueda, los valores de distancia derivada utilizados en el proceso son 30 metros, 90 metros y cualquier valor intermedio.
Es importante definir una distancia de búsqueda adecuada. El valor que utilizó en el proceso de concordancia previa puede ser una buena opción. Cuanto mayor es la distancia de búsqueda, más probable es que se utilice un vértice más alejado para dividir una línea de entrada y que se encuentre un nodo de entrada más alejado, lo que impedirá que se produzca una división.
La distancia de búsqueda derivada internamente se utiliza para buscar ubicaciones candidatas en la entidad de entrada de un nodo en las entidades coincidentes. Se utilizan las siguientes reglas para determinar si la línea de entrada debería dividirse y, en caso afirmativo, dónde debería dividirse.
- Si un pseudonodo de coincidencia encuentra un pseudonodo de entrada, no se producirá ninguna división.
- Si un nodo de coincidencia no pseudo encuentra cualquier nodo de entrada, no se producirá ninguna división. Por ejemplo, si un nodo de coincidencia de nodo colgado (dangle) encuentra un nodo de entrada en un cruce en T, la línea de entrada no se dividirá.
- De lo contrario, la entidad de entrada se dividirá en el único vértice encontrado, o el vértice más cercano encontrado, o bien, si no se encuentra ningún vértice, la ubicación más cercana en la línea de entrada. Sin embargo, si un pseudonodo de coincidencia encuentra un nodo de entrada no pseudo, la línea de entrada se dividirá.
Las líneas colgantes se pueden dividir mediante el parámetro Dividir entidades de nodo colgado (dangle). Si una línea de nodo colgado (dangle) de entrada se extiende más allá de la entidad coincidente en el extremo del nodo colgado (dangle), se dividirá de forma predeterminada. Una línea colgante se puede dividir para identificar la diferencia real entre las entidades de origen y destino en la siguiente coincidencia de entidades.
Utilice el parámetro Longitud mínima de grupo de coincidencia para excluir cualquier grupo de coincidencia que sea demasiado corto para ser dividido en relación con el valor especificado. En un grupo de coincidencia determinado, si la longitud total de las entidades de entrada y la longitud total de las entidades coincidentes son menores que el valor especificado, el grupo se excluirá. Evite la división de entidades en grupos de coincidencia cortos para impedir una división excesiva o no satisfactoria. Todas las líneas de entrada implicadas en grupos de coincidencia cortos se escribirán en la salida y se marcarán como Short match group en el campo SBM_LnFlag.
Utilice el parámetro Longitud mínima de división para evitar que se produzcan líneas cortas. Si la división de una línea de entrada diera lugar a una línea más corta que este valor, la línea de entrada no se dividirá. Un punto en la ubicación de división marcado mediante Short segment en el campo SBM_PtFlag se escribirá en la clase de entidad de punto, si se especifica, como referencia para la inspección.
Utilice el parámetro Campos de división para especificar uno o varios campos numéricos, por ejemplo, una longitud de medición de campo, para que sus valores se dividan en función de las proporciones de las líneas de división.
Parámetros
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})
Nombre | Explicación | Tipo de datos |
in_features | Las entidades de línea de entrada que se van a dividir. Se deben concordar previamente con las entidades coincidentes. | Feature Layer |
matched_features | Entidades previamente concordadas con las entidades de entrada. Las entidades coincidentes se utilizan como referencia al dividir las entidades de entrada. | Feature Layer |
in_match_table | Una tabla que incluye información de coincidencia entre las entidades de entrada y coincidentes. | Table View |
out_feature_class | La clase de entidad de salida que contiene líneas de división y líneas originales que no se dividen. | Feature Class |
search_distance | Valor de distancia que se utilizará para determinar ubicaciones de división. El valor debe ser mayor que 0. Si no se especifican unidades, se utilizarán las unidades de la entrada. | Linear Unit |
in_features_as (Opcional) | Especifica si las entidades de entrada de la tabla de concordancias son entidades de origen o entidades de destino, para que se dividan las entidades correctas.
| String |
out_point_feature_class (Opcional) | La clase de entidad de punto de salida que contiene puntos que representan ubicaciones de división. | Feature Class |
split_dangle (Opcional) | Especifica si las líneas colgantes se dividirán.
| Boolean |
min_match_group_length (Opcional) | Longitud mínima que puede tener un grupo de coincidencia. Un grupo de coincidencia determinado solo participará en el proceso de división si la longitud total de las entidades de entrada o la longitud total de las entidades coincidentes son mayores que el valor proporcionado. | Linear Unit |
min_split_length (Opcional) | Longitud mínima que puede tener una parte de la división. Si una división da lugar a que una o ambas partes de la división sean más cortas que el valor proporcionado, la división no se producirá. | Linear Unit |
split_fields [split_field,...] (Opcional) | Lista de campos numéricos de las entidades de entrada. Sus valores de campo se basarán en las proporciones de las líneas de división. | Field |
Muestra de código
El siguiente script de la ventana de Python demuestra cómo utilizar la función SplitLineByMatch de modo inmediato.
import arcpy
arcpy.env.workspace = "C:/data/roads.gdb"
arcpy.edit.SplitLineByMatch("city_Roads", "county_Roads", "match_table",
"city_roads_split", "50 Meters")
El siguiente script independiente es un ejemplo de cómo aplicar la función SplitLineByMatch en un entorno 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)