Etiqueta | Explicación | Tipo de datos |
Entidades de actualización | Las entidades de línea que se compararán con las entidades base. | Feature Layer |
Entidades de base | Las entidades de línea que se compararán con las entidades de actualización para la detección de cambios. | Feature Layer |
Clase de entidad de salida | La clase de entidad de línea de salida que contiene la información de los cambios. La salida contiene todas las entidades de actualización que participan (coincidentes o no) y todas las entidades de base sin coincidencia. | Feature Class |
Distancia de búsqueda
| Distancia utilizada para buscar candidatos que coinciden. Se debe especificar una distancia que debe ser mayor que cero. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad. | Linear Unit |
Campos de coincidencia (Opcional) | Los campos de coincidencia de las entidades base y de actualización. Si se especifican, cada pareja de campos se compara para buscar candidatos coincidentes con el fin de determinar la concordancia adecuada. | Value Table |
Tabla de concordancias de salida (Opcional) | Tabla de salida que contiene información completa de coincidencia de entidades. | Table |
Cambiar tolerancia (Opcional) | Distancia que se utiliza para determinar si hay un cambio espacial. Todas las entidades de actualización y las entidades base coincidentes se comparan con esta tolerancia. Si alguna parte de las entidades de actualización o base queda fuera de la zona alrededor de la entidad coincidente, se considera un cambio espacial. El valor debe ser mayor que la Tolerancia XY de los datos de entrada para que se pueda realizar este proceso y la salida incluirá los campos LEN_PCT y LEN_ABS. El valor predeterminado es 0, lo que significa que no se realiza este proceso. Cualquier valor entre 0 y la Tolerancia XY de los datos (incluida) hará que el proceso sea irrelevante y se reemplazará por 0. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad. | Linear Unit |
Comparar campos (Opcional) |
Los campos que determinarán si existe un cambio en atributos entre entidades de actualización y base coincidentes. | Value Table |
Comparar dirección de líneas (Opcional) | Especifica si las direcciones de las líneas se compararán en busca de entidades coincidentes.
| Boolean |
Resumen
Detecta dónde coinciden espacialmente las entidades de línea de actualización con las entidades de línea base y detecta cambios espaciales, cambios en atributos o ambos, así como ningún cambio. A continuación, crea una clase de entidad de salida que contiene entidades de actualización coincidentes con información sobre sus cambios, entidades de actualización sin coincidencia y entidades base sin coincidencia.
Más información sobre el funcionamiento de las coincidencias de entidades
Ilustración
Uso
Un caso de uso típico de esta herramienta es usar un conjunto de entidades de línea, por ejemplo, carreteras, y recibir actualizaciones periódicamente de colaboradores en forma de conjuntos nuevos de entidades de carreteras. En este caso querrá saber cuáles de las entidades actualizadas son modificaciones de las entidades de base existentes o se trata de entidades nuevas que se deben agregar, y qué entidades de base son antiguas y se deben eliminar. Esta herramienta busca las entidades coincidentes entre los datasets de línea base y de actualización, detecta cambios espaciales, cambios en atributos o ambas cosas, así como la ausencia de cambios, y crea una clase de entidad de salida que contiene información sobre los cambios de las entidades.
La clase de entidad de salida contiene todas las entidades de actualización que participan (coincidentes o no) y todas las entidades de base sin coincidencia. La información sobre los cambios detectados se escribe en los campos siguientes:
- UPDATE_FID: Id. de entidad de la entidad de actualización. El valor es -1 para una entidad de base no coincidente.
- BASE_FID: el Id. de entidad de la entidad base. El valor es -1 para una entidad de actualización no coincidente.
- CHANGE_TYPE: el tipo de cambio detectado, con los valores como se muestran a continuación:
- S: una entidad de actualización coincidente con un cambio espacial.
- A: una entidad de actualización coincidente con un cambio de atributo.
- SA: una entidad de actualización coincidente con cambios espaciales y de atributos.
- S_LD: un cambio espacial, así como direcciones de líneas opuestas.
- SA_LD: cambios espaciales y de atributos, así como direcciones de líneas opuestas.
- NC: una entidad de actualización coincidente sin cambios.
- N: una entidad de actualización no coincidente que es nueva en los datos base.
- D: una entidad base no coincidente la cual es posible que se deba eliminar de los datos base.
El proceso de concordancia de entidades se realiza primero según la Distancia de búsqueda y los valores opcionales del parámetro Campos de coincidencia. Es posible generar una tabla de coincidencias de salida para almacenar la información de coincidencias.
El parámetro Distancia de búsqueda se utiliza para buscar candidatos que coinciden. Utilice una distancia que sea lo suficientemente grande para captar la mayoría de cambios entre las entidades correspondientes, pero no demasiado para generar el procesamiento innecesario de un exceso de candidatos y obtener potencialmente coincidencias erróneas.
Una vez que se encuentran candidatos coincidentes, se evalúan mediante un conjunto de medidas geométricas para determinar si son lo suficientemente similares para considerarlos espacialmente coincidentes.
Si especifica una o más parejas de campos para el parámetro Campos de coincidencia, los candidatos coincidentes espacialmente se comparan con estos valores de campo para ayudar a determinar la coincidencia correcta. Por ejemplo, si las entidades de actualización y base tienen un campo STREET_NAME que contiene nombres de calles y una entidad de actualización coincide espacialmente con dos entidades base, pero solo un candidato base tiene el mismo valor STREET_NAME que la entidad de actualización, se considera la mejor coincidencia. La comparación de cadenas de texto no distingue entre mayúsculas y minúsculas, lo que significa que First St se considera lo mismo que first st.
La Tabla de concordancia de salida es opcional. Esta tabla de concordancia proporciona exhaustiva información de coincidencia de entidades, incluidos los FID de origen y destino, los grupos coincidentes, las relaciones coincidentes y el nivel de confianza de la correspondencia derivada de las condiciones coincidentes de espacio y atributo. Esta información puede servir para comprender las situaciones coincidentes y facilitar la inspección posterior, la postedición y los análisis adicionales. Consulte Acerca de la geocodificación de entidades y la tabla de coincidencias para obtener información detallada.
En la tabla de concordancias de salida, los valores de los campos SRC_FID y TGT_FID representan Id. de entidades de actualización e Id. de entidades base, respectivamente.
El proceso de identificación de cambios se realiza después de la coincidencia de entidades. Las condiciones espaciales y de atributos, así como las direcciones de líneas de todas las entidades de actualización coincidentes, se comparan con las entidades base correspondientes para determinar sus valores de CHANGE_TYPE.
Se detecta un cambio espacial (tipo de cambio S) cuando se produce uno de los puntos siguientes o ambos:
- Las entidades de actualización coincidentes difieren de sus entidades base correspondientes en topología. Por ejemplo, una entidad de actualización coincide con dos entidades base.
- En cada grupo de coincidencia, cualquier parte de la entidad base o de actualización queda fuera del valor del parámetro Cambiar tolerancia.
El valor del parámetro Cambiar tolerancia sirve como ancho de una zona de influencia alrededor de las entidades de actualización o entidades base. Para cada grupo de coincidencia, se crea una zona de influencia de actualización alrededor de todas las entidades de actualización y una zona de influencia base alrededor de todas las entidades base. A continuación, se comparan todas las entidades de actualización con la zona de influencia base y todas las entidades base con la zona de influencia de actualización. Si alguna parte de las entidades de actualización queda fuera de la zona de influencia base o bien si alguna parte de las entidades base queda fuera de la zona de influencia de actualización (o ambos casos), se considera un cambio espacial. Cuando se especifica un valor mayor que la Tolerancia XY de los datos de entrada, la salida incluirá los siguientes campos nuevos:
- LEN_PCT: este campo almacena valores de porcentaje de longitud basados en grupos de coincidencia.
- LEN_ABS: este campo almacena valores de longitud absoluta en unidades de entidad basados en grupos de coincidencia.
Los valores de estos campos vienen determinados por el grupo de coincidencia al que pertenece la entidad de salida, dependiendo de las condiciones siguientes:
- Si solo las entidades de actualización quedan fuera de la zona de influencia base:
- Lu = longitud total de las partes externas de las entidades de actualización.
- Pu (el porcentaje de longitud) = Lu / la longitud total de todas las entidades de actualización * 100.
- LEN_PCT = Pu
- LEN_ABS = Lu
- Si solo las entidades base quedan fuera de la zona de influencia de actualización:
- Lb = longitud total de las partes externas de las entidades base.
- Pb (el porcentaje de longitud) = Lb / la longitud total de todas las entidades base * 100.
- LEN_PCT = Pb
- LEN_ABS = Lb
- Si se dan ambos casos:
- Se escribe el valor mayor de Lu y Lb, junto con su valor de porcentaje asociado. En el caso de que se escriba Lb, se agrega un signo negativo por el mismo motivo mencionado anteriormente.
El valor del porcentaje varía de 0 a 100, donde 0 indica que las entidades de actualización y base de un grupo de coincidencia se incluyen por completo en las zonas de cambio de tolerancia y 100 indica que todas las entidades de actualización o base quedan fuera de las zonas de cambio de tolerancia.
Los valores de LEN_PCT y LEN_ABS pueden ayudar a determinar si un cambio es significativo. Cuanto mayores son los valores, mayor es el cambio. Solo las entidades con cambios espaciales reciben estos valores; las demás obtienen -1.
Un cambio en atributos (cambio de tipo A) se detecta en función del valor del parámetro Comparar campos. Si se especifican uno o más pares de campos en el parámetro Comparar campos, las entidades coincidentes se comparan con estos campos para determinar si hay un cambio en los atributos. La comparación de cadenas de texto no distingue entre mayúsculas y minúsculas, lo que significa que First St se considera lo mismo que first st. Si se detectan cambios espaciales y de atributos en una entidad de actualización coincidente, se le asigna el tipo de cambio SA. Si no se detectan cambios espaciales ni de atributos en una entidad de actualización coincidente, se considera que no hay cambios y se le asigna el tipo de cambio NC.
El cambio en la dirección de las líneas (tipos de cambio S_LD o SA_LD) se considera un cambio espacial y se puede detectar como una opción.
- A las entidades de actualización coincidentes se les asigna el tipo de cambio S_LD si la dirección de alguna de sus líneas es opuesta en una o más entidades base coincidentes, con o sin los cambios espaciales descritos anteriormente. Dicho de otra manera, son del tipo S o NC si no se comparan las direcciones de las líneas.
- A las entidades de actualización coincidentes se les asigna el tipo de cambio SA_LD si la dirección de alguna de sus líneas es opuesta a una o más entidades base coincidentes, además del cambio de atributos o de los cambios espaciales y de atributos descritos anteriormente. Dicho de otra manera, son del tipo A o SA si no se comparan las direcciones de las líneas.
La unión de las extensiones de entrada se utiliza como extensión de procesamiento. Los recuentos de las entidades de origen y destino que participan se notifican en los mensajes de procesamiento.
La precisión de la coincidencia de entidades depende de la calidad de los datos, la complejidad y la similitud de las dos entradas.
Como entrada durante el procesamiento previo, debe minimizar los errores de datos y seleccionar las entidades relevantes. En general, siempre es útil que dentro de un dataset de entrada, las entidades sean topológicamente correctas, tengan una geometría válida y sean de parte simple y no duplicadas; de lo contrario, pueden producirse errores inesperados.
Los cambios detectados se pueden revisar en la clase de entidad de salida. Puede encontrar que las diferencias espaciales entre las dos fuentes de datos son significativas y decidir que una de ellas se debe ajustar para que coincida mejor con la otra. También es posible transferir atributos entre entidades de actualización y entidades de base. Puede utilizar las herramientas de estirado "rubber sheeting" y transferencia de atributos en el conjunto de herramientas Alineación completa para realizar los cambios.
Nota:
Todas las entradas deben estar en el mismo sistema de coordenadas.
Parámetros
arcpy.management.DetectFeatureChanges(update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields}, {compare_line_direction})
Nombre | Explicación | Tipo de datos |
update_features | Las entidades de línea que se compararán con las entidades base. | Feature Layer |
base_features | Las entidades de línea que se compararán con las entidades de actualización para la detección de cambios. | Feature Layer |
out_feature_class | La clase de entidad de línea de salida que contiene la información de los cambios. La salida contiene todas las entidades de actualización que participan (coincidentes o no) y todas las entidades de base sin coincidencia. | Feature Class |
search_distance | Distancia utilizada para buscar candidatos que coinciden. Se debe especificar una distancia que debe ser mayor que cero. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad. | Linear Unit |
match_fields [[source_field, target_field],...] (Opcional) | Los campos de coincidencia de las entidades base y de actualización. Si se especifican, cada pareja de campos se compara para buscar candidatos coincidentes con el fin de determinar la concordancia adecuada. | Value Table |
out_match_table (Opcional) | Tabla de salida que contiene información completa de coincidencia de entidades. | Table |
change_tolerance (Opcional) | Distancia que se utiliza para determinar si hay un cambio espacial. Todas las entidades de actualización y las entidades base coincidentes se comparan con esta tolerancia. Si alguna parte de las entidades de actualización o base queda fuera de la zona alrededor de la entidad coincidente, se considera un cambio espacial. El valor debe ser mayor que la Tolerancia XY de los datos de entrada para que se pueda realizar este proceso y la salida incluirá los campos LEN_PCT y LEN_ABS. El valor predeterminado es 0, lo que significa que no se realiza este proceso. Cualquier valor entre 0 y la Tolerancia XY de los datos (incluida) hará que el proceso sea irrelevante y se reemplazará por 0. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad. | Linear Unit |
compare_fields [[source_field, target_field],...] (Opcional) |
Los campos que determinarán si existe un cambio en atributos entre entidades de actualización y base coincidentes. | Value Table |
compare_line_direction (Opcional) | Especifica si las direcciones de las líneas se compararán en busca de entidades coincidentes.
| Boolean |
Muestra de código
La siguiente secuencia de comandos de la ventana de Python demuestra cómo utilizar la función DetectFeatureChanges de modo inmediato.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.DetectFeatureChanges_edit("update_Roads.shp",
"base_Roads.shp", "output_changes.shp"
"25 Feet", #, #, "7.6 Meters",
["rdClass", "roadClass"])
El siguiente script independiente es un ejemplo de cómo aplicar la función DetectFeatureChanges en un entorno de scripts.
# Name: DetectFeatureChanges_example_script2.py
# Description: Perform change detection between newly received road data and
# existing road data and find the number of new roads and the
# total length of them.
# Author: Esri
# -----------------------------------------------------------------------
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.overwriteOutput = True
env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"
# Set local variables
updateFeatures = "updateRoads"
baseFeatures = "baseRoads"
dfcOutput = "dfc_out"
search_distance = "300 Feet"
match_fields = "RD_NAME FULLNAME"
statsTable = "new_roads_stats"
# Perform spatial change detection
arcpy.DetectFeatureChanges_management(updateFeatures, baseFeatures, dfcOutput, search_distance, match_fields)
# ====================================================================================
# Note 1: The result of DetectFeatureChanges may contain errors; see tool reference.
# Inspection and editing may be necessary to ensure correct CHANGE_TYPE N, which
# represents un-matched update feautres, before further calculations.
#
# One of the quick ways of checking whether the CHANGE_TYPE N features have
# matching base features is to find their mid-points and use them to search for
# features in base data, as processed below.
# ====================================================================================
# ======== Check update roads with CHANGE_TYPE N for potential match
# Make Feature Layer with selection of CHANGE_TYPE = 'N' (un-matched update features)
arcpy.MakeFeatureLayer_management(dfcOutput, "sel_N_layer", "CHANGE_TYPE = 'N'")
# Get mid-points of the selected features; the mid-points carry all the attributes.
arcpy.FeatureVerticesToPoints_management("sel_N_layer", "in_memory\midPts", "MID")
# Find nearest base features from the mid-points
arcpy.Near_analysis("in_memory\midPts", baseFeatures, "300 Feet")
# ====================================================================================
# Note 2: At this point you can manually inspect the midPts by the NEAR_DIST values;
# the lower the values, the higher chance (not always) a match was missed in the
# dfc process. Delete features from midPts that have found matching base features
# before further process.
# ====================================================================================
# Transfer CHANGE_TYPE values from features of midPts to update features
arcpy.JoinField_management(updateFeatures, "OBJECTID", "in_memory\midPts", "UPDATE_FID", "CHANGE_TYPE")
# Get the count of new roads and the total length; the remaining roads have
# Null values for CHANGE_TYPE.
arcpy.Frequency_analysis(updateFeatures, statsTable, "CHANGE_TYPE", "Shape_Length")
Información de licenciamiento
- Basic: No
- Standard: No
- Advanced: Sí