Resumen
Encuentra dónde coinciden espacialmente las entidades de línea de actualización con las entidades de línea de base y detecta los cambios espaciales, los cambios en atributos o ambas cosas, así como la inexistencia de cambios, y genera una clase de entidad de salida que contiene entidades de actualización coincidentes con información sobre los cambios, las entidades de actualización sin coincidencia y las entidades de 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 socios 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 de 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 en 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 de base. El valor es -1 para una entidad de actualización no coincidente.
- CHANGE_TYPE: el tipo de cambio detectado, como se muestra a continuación.
- S para espacial, indica una entidad de actualización coincidente con un cambio espacial.
- A para atributo, indica una entidad de actualización coincidente con un cambio en atributos.
- SA para espacial y atributo, indica una entidad de actualización coincidente con cambios espaciales y en atributos.
- NC indica que no hay cambios; una entidad de actualización coincidente sin cambios.
- N para nuevo; indica una entidad de actualización sin coincidencia nueva en los datos de base.
- D para eliminación; indica una entidad de base sin coincidencia que tal vez deba eliminarse de los datos de base.
El proceso de coincidencia de entidades se hace primero a base de Distancia de búsqueda y Coincidencia de campos opcional. 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 a coincidencias, se continúa con la evaluación mediante un conjunto de mediciones geométricas para determinar si son lo suficientemente parecidas para considerarse que coinciden espacialmente.
Si especifica una o más parejas de campos para el parámetro Campos coincidentes, los candidatos coincidentes espacialmente se comprueban frente a estos valores de campo para ayudar a determinar la coincidencia correcta. Por ejemplo, supongamos que tanto las entidades base como las de actualización tienen un campo STREET_NAME que contiene nombres de calles. Si una entidad de actualización coincide espacialmente con dos entidades de base, pero solo un candidato de base tiene el mismo valor STREET_NAME que la entidad de actualización, se considera la mejora concordancia. La comparación de cadenas de texto no distingue mayúsculas de minúsculas, lo que significa que Calle Mayor se considera igual que calle mayor.
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 coincidencias de salida, los valores de los campos SRC_FID y TGT_FID representan ID de entidades de actualización e ID de entidades respectivamente.
El proceso de identificación de cambios se realiza después de la coincidencia de entidades. Las condiciones espaciales y de atributos de todas las entidades de actualización coincidentes se comparan con entidades de 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 de base correspondientes en topología. Por ejemplo, una entidad de actualización coincide con dos entidades de base.
- Una parte de una entidad de actualización o una entidad base queda fuera de Cambiar tolerancia.
Cambiar tolerancia sirve como ancho de una zona de influencia alrededor de las entidades de actualización y las entidades base. Todas las entidades de actualización y las entidades base coincidentes se comprueban con relación a esta tolerancia. Si alguna parte de una entidad de actualización queda fuera de la zona alrededor de la entidad base coincidente o si alguna parte de una entidad base queda fuera de la zona alrededor de la entidad de actualización coincidente, se considera un cambio espacial. Cuando se especifica un valor mayor que 0, la salida contiene dos campos adicionales:
- LEN_PCT: este campo almacena valores porcentuales, donde cada uno se calcula comparando la longitud de la parte de una entidad de actualización o una entidad base que queda fuera de la zona de tolerancia de cambios en toda su longitud. El valor 0 significa que la entidad de actualización o la entidad base está totalmente dentro de la zona de tolerancia de cambios. El valor 100 significa que toda la entidad de actualización o la entidad base está fuera.
- LEN_ABS: este campo almacena valores de longitud en unidades de la entidad. Cada uno de ellos representa la longitud absoluta de la parte de una entidad de actualización o una entidad base que queda fuera de la zona de tolerancia de cambios.
Un cambio en atributos (cambio de tipo A) se detecta en función de Comparar campos, si está especificado.
Si se especifican uno o más pares de campos en el parámetro Comparar campos, las entidades coincidentes se comprueban teniendo en cuenta estos campos para determinar si hay un cambio en los atributos. La comparación de cadenas de texto no distingue mayúsculas de minúsculas, lo que significa que Calle Mayor se considera igual que calle mayor.
Si se detectan cambios espaciales y en atributos en una entidad de actualización coincidente, se le asigna el tipo de cambio SA. Si no se detectan cambios espaciales ni en atributos en una entidad de actualización coincidente, se considera que no hay cambios y se le asigna el tipo de cambio NC.
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 mucho 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 que quiera transferir atributos entre entidades de actualización y entidades de base. Las herramientas de rubbersheeting y transferencia de atributos en el Conjunto de herramientas Combinación pueden ayudarle a realizar los cambios.
Sintaxis
DetectFeatureChanges_management (update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields})
Parámetro | Explicación | Tipo de datos |
update_features | Entidades de línea para comparar con las entidades de base. | Feature Layer |
base_features | Entidades de línea para comparar con las entidades de actualización para detectar cambios. | Feature Layer |
out_feature_class | Clase de entidad de línea de salida con información de 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) | Lista de campos de entidades de actualización y de base. Si se especifican, cada pareja de campos se comprueba para candidatos coincidentes con el fin de ayudar a 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 comprueban con relación a esta tolerancia. Si alguna parte de una entidad de actualización o de una entidad base queda fuera de la zona alrededor de la entidad coincidente, se considera un cambio espacial. Una distancia puede ser igual o mayor que cero. El valor predeterminado es 0. Si se especifica un valor mayor que cero, la salida incluirá los campos LEN_PCT y LEN_ABS. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad. | Linear unit |
compare_fields [[source_field, target_field],...] (Opcional) |
Campos que sirven para determinar si hay un cambio en atributos entre entidades coincidentes de actualización y de base. | Value Table |
Ejemplo de código
Ejemplo de DetectFeatureChanges 1 (ventana de Python)
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función DetectFeatureChanges en el 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 Meterd",
["rdClass", "roadClass"])
Ejemplo 2 de DetectFeatureChanges (secuencia de comandos de Python independiente)
La siguiente secuencia de comandos independiente es un ejemplo de cómo aplicar la función DetectFeatureChanges en un entorno de secuencias de comandos.
# 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")
Entornos
Información sobre licencias
- ArcGIS for Desktop Basic: No
- ArcGIS for Desktop Standard: No
- ArcGIS for Desktop Advanced: Sí