Hacer coincidir fotos con filas según el tiempo (Administración de datos)
Resumen
Hace coincidir archivos de fotos con la tabla o filas de clase de entidad de acuerdo con la foto y las marcas de tiempo de la fila. La fila con la marca de tiempo más cercana a la hora de captura de una foto se hará coincidir con esa foto. Crea una nueva tabla que contiene las ObjectID de filas de entrada y sus rutas de fotos que coinciden. De forma opcional agrega archivos de foto que coinciden con las filas de la tabla de entrada como adjuntos de geodatabase.
Ilustración
Uso
-
Esta herramienta se puede usar para hacer coincidir entidades capturadas por medio de GPS a fotografías digitales tomadas al mismo tiempo que se capturó la entidad GPS.
La tabla de salida incluirá cuatro campos de atributos:
- IN_FID: La ID de objeto de una fila de entrada cuya marca de tiempo coincide con la marca de tiempo de una foto.
- Photo_Path: La ruta completa a un archivo de fotos cuya marca de tiempo coincide con la marca de tiempo de la fila de entrada que se identifica en el campo IN_FID.
- Photo_Name: El nombre corto de un archivo de foto.
- Match_Diff: La diferencia entre las marcas de tiempo de un archivo de foto y la fila de entrada que coincide. Este valor numérico está en la unidad especificada en el parámetro Unidad de diferencia de tiempo.
A pesar de que los datos de shapefile y dBASE se admite en la tabla de entrada, se recomienda utilizar los datos de la geodatabase, debido a que un campo de Fecha en una tabla de shapefile o dBASE no puede almacenar la información de fecha y hora.
Dado que una fila de entrada única puede tener una marca de tiempo que coincide con la marca de tiempo de varias fotografías, la tabla de salida puede tener varias filas que tienen el mismo IN_FID (cada fila en la salida se refiere a una coincidencia entre una foto y una fila de entrada).
La tabla de salida se puede unir a la tabla de entrada utilizando el campo de salida IN_FID y el OBJECTID de la entrada. En el caso que la tabla de salida tenga varias filas con el mismo IN_FID (una fila de entrada coincide con varias fotos), utilice una relación o clase de relación para vincular la salida a la entrada.
Obtenga más información acerca de cómo unir y relacionar tablas
El campo de tiempo debe ser de tipo Fecha. Para convertir su texto o campos numéricos a un campo de Fecha, use la herramienta Convertir campo de tiempo.
Incluso si un punto de GPS y una fotografía digital se capturan exactamente al mismo tiempo, los tiempos que graban los dispositivos pueden estar en diferentes zonas horarias. Por ejemplo, los dispositivos GPS a menudo registran los tiempos en Hora universal coordinada (UTC), o formato de hora de Greenwich (GMT), mientras que las cámaras digitales a menudo registran las horas en una zona horaria local. Para conciliar las diferencias de la marca de tiempo que resulten de distintas zonas horarias, utilice la herramienta Convertir zona horaria para cambiar el campo de hora de la tablas de entrada para que coincidan con la zona horaria de la marca de tiempo del archivo de foto.
Del mismo modo, es posible que el reloj del GPS no esté sincronizado con el reloj de la cámara digital. Para hacer una buena coincidencia entre la foto y el punto de GPS cuando estos relojes no estén sincronizados, determine la diferencia entre los dos relojes, después utilice este valor con el parámetro Diferencia horaria.
Los parámetros Tolerancia de tiempo y Diferencia horaria se deben especificar en segundos. Hay una serie de utilidades en el Internet para calcular a cuántos segundos es equivalente una unidad de tiempo. Por ejemplo, 3 minutos y 12 segundos es igual a 192 segundos.
Sintaxis
Parámetro | Explicación | Tipo de datos |
Input_Folder |
La carpeta en donde están ubicados los archivos de fotos. Esta carpeta se escanea recursivamente para encontrar archivos de fotos; cualquier foto al nivel de la base de la carpeta, así como en cualquier subcarpeta, se agregará a la salida. | Folder |
Input_Table |
La tabla o clase de entidad cuyas filas se hará coincidir con archivos de fotos. La tabla de entrada típicamente será una clase de entidad de puntos que representa los registros del GPS. | TableView |
Time_Field |
El campo de fecha/hora de la tabla de entrada que indica cuando se capturó o creó la fila. Debe ser un campo de fecha; no puede ser una cadena o campo numérico. | Field |
Output_Table |
La tabla de salida que contiene los OBJECTID de la tabla de entrada que coincide con una foto y la ruta de la foto que coincide. En la tabla de salida solo se incluirán los OBJECTID de la tabla de entrada que coinciden con una foto. | Table |
Unmatched_Photos_Table (Opcional) |
La tabla de salida opcional enumerará cualquier archivo de foto en la carpeta de entrada con una marca de tiempo no válida o cualquier foto que no coincida debido a que no hay una fila de entrada en la tolerancia de tiempo. Si no se especifica una ruta, no se creará esta tabla. | Table |
Add_Photos_As_Attachments (Opcional) |
Especifica si los archivos de fotos se agregarán a las filas de la tabla de entrada como adjuntos de geodatabase. Licencia: Agregar adjuntos requiere como mínimo una licencia de ArcGIS for Desktop Standard y la clase de entidad de salida debe estar en una geodatabase versión 10 o superior.
| Boolean |
Time_Tolerance (Opcional) |
La diferencia máxima (en segundos) entre la fecha/hora de una fila de entrada y un archivo de foto que coincidan. Si una fila de entrada y un archivo de foto tienen marcas de tiempo que son distintas por más de esta tolerancia, no ocurrirá ninguna coincidencia. Para hacer coincidir un archivo de foto a una fila con la marca de tiempo más cercana, sin importar qué tan grande pueda ser la diferencia de fecha/hora, establezca la tolerancia en 0. El signo de este valor (- o +) es irrelevante; el valor absoluto del número que se especifica será el que se usa. No use este parámetro para hacer ajustes por cambios o desplazamientos consistentes entre los tiempos registrados por el GPS y la cámara digital. Use el parámetro Diferencia horaria o la herramienta Convertir zona horaria para cambiar las marcas de tiempo de las filas de entrada para que coincidan con las de las fotos. | Double |
Clock_Offset (Opcional) |
La diferencia (en segundos) entre el reloj interno de la cámara digital que se utiliza para capturar las fotos y la unidad GPS. Si el reloj de la cámara digital está detrás del reloj de la unidad GPS, use un valor positivo; si el reloj en la cámara digital está adelante del reloj de la unidad GPS, use un valor negativo. Por ejemplo, si una foto con una marca de tiempo de 11:35:17 debe coincidir con una fila con una marca de tiempo de 11:35:32, utilice una Diferencia horaria de 15. | Double |
Ejemplo de código
El siguiente fragmento de código de la ventana de Python demuestra cómo utilizar la herramienta MatchPhotosToRowsByTime.
import arcpy arcpy.MatchPhotosToRowsByTime_management("c:/data/photos", "c:/data/city.gdb/gps_points", "DateTime", "c:/data/city.gdb/output_table", "", "ADD_ATTACHMENTS", "", 20)
La siguiente secuencia de comandos muestra cómo utilizar la herramienta MatchPhotosToRowsByTime.
"""Name: GeoTaggedPhotosToPoints example Description: Find the points that match photo time stamps, then join the output table to the input to see which photos match which points """ # Import system modules import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data" # Set local variables inFolder = "photos" inFC = "city.gdb/gps_points" timeField = "DateTime" outTable = "city.gdb/output_table" outUnmatched = "city.gdb/unmatched_photos" attachmentsOption = "ADD_ATTACHMENTS" timeDiff = 0 timeOffset = 20 # Execute MatchPhotosToRowsByTime and JoinField arcpy.MatchPhotosToRowsByTime_management(inFolder, inFC, timeField, outTable, outUnmatched, attachmentsOption, timeDiff, timeOffset) arcpy.JoinField_management(inFC, "OBJECTID", outTable, "IN_FID", "Photo_Path;Photo_Name;Match_Diff")