Hacer coincidir fotos con filas según el tiempo (Administración de datos)

Resumen

Hace coincidir archivos de fotos con filas de tablas o clases de entidad de acuerdo con las marcas de tiempo de la foto y 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. Se crea una nueva tabla que contiene los valores de Id. de objeto de las filas de entrada y sus rutas de fotos correlacionadas. También puede utilizar esta herramienta para agregar a las filas de la tabla de entrada los archivos de fotos que coincidan como adjuntos de la geodatabase.

Ilustración

Ilustración de la herramienta Hacer coincidir fotos con filas según el tiempo
La fila de entrada 5 no se ha hecho coincidir con ninguna foto porque otras filas tienen marcas de tiempo más cercanas a las marcas de tiempo de los archivos de foto.

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 contendrá los siguientes campos de atributos:

    • IN_FID: el 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 foto cuya marca de tiempo coincide con la marca de tiempo de la fila de entrada identificada en el campo IN_FID.
    • Photo_Name: el nombre abreviado del archivo de foto.
    • Match_Diff: la diferencia entre las marcas de tiempo de un archivo de foto y la fila de entrada coincidente. Este valor numérico está en la unidad especificada en el parámetro Unidad de diferencia de tiempo.

  • Aunque se admiten datos de shapefile y dBASE para la tabla de entrada, se recomienda utilizar datos de geodatabase, ya que un campo de fecha en un shapefile o una tabla dBASE no puede almacenar información tanto de fecha como de hora.

    Más información sobre las limitaciones del shapefile

  • Dado que una sola fila de entrada puede tener una marca de tiempo que coincida con la marca de tiempo de varias fotografías, la tabla de salida puede tener varias filas con el mismo valor de IN_FID (cada fila de la salida hace referencia 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 valor de Id. de objeto de la entrada. Si la tabla de salida tiene varias filas con el mismo valor en el campo IN_FID (una fila de entrada se corresponde con varias fotos), utilice una clase de relación para vincular la salida con la entrada.

  • El campo de tiempo debe ser del tipo fecha. Para convertir campos de texto o numéricos en un campo de tipo fecha, utilice 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 registrados por 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, mientras que las cámaras digitales a menudo registran los tiempos en una zona horaria local. Para conciliar las diferencias de marca de tiempo que resulten de distintas zonas horarias, utilice la herramienta Convertir zona horaria para cambiar el campo de hora de la tabla de entrada para que coincida con la zona horaria de la marca de tiempo del archivo de foto.

    Asimismo, es posible que el reloj del GPS no esté sincronizado con el reloj de la cámara digital. Para crear 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 y utilice este valor con el parámetro Diferencia horaria.

  • Los parámetros Tolerancia de tiempo y Diferencia horaria se deben especificar en segundos. Existen varias utilidades en Internet para calcular el número de segundos a que equivale otra unidad de tiempo. Por ejemplo, 3 minutos y 12 segundos es igual a 192 segundos.

Parámetros

EtiquetaExplicaciónTipo de datos
Carpeta de entrada

La carpeta donde están ubicados los archivos de fotos (.jpg o .tif). 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
Tabla de entrada

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.

Table View
Campo de tiempo

El campo de fecha de la tabla de entrada que indica cuándo se capturó o creó cada fila. El campo debe ser de tipo fecha; no puede ser de tipo cadena de caracteres ni numérico.

Field
Tabla de Salida

La tabla de salida que contiene los valores de Id. de objeto de la tabla de entrada que coincide con una foto y la ruta de la foto coincidente. Solo se incluyen en la tabla de salida los valores de Id. de objeto de la tabla de entrada que coinciden con una foto.

Table
Tabla de fotos no concordadas
(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
Agregar fotos como adjuntos
(Opcional)
  • Activada: se agregan archivos de foto a las filas de la tabla de entrada como adjuntos de geodatabase. Los adjuntos de geodatabase se copian internamente a la geodatabase. Esta es la opción predeterminada.
  • Desactivada: no se agregan archivos de foto a las filas de la tabla de entrada como adjuntos de geodatabase.
Boolean
Tolerancia de tiempo
(Opcional)

La diferencia máxima (en segundos) entre la fecha/hora de una fila de entrada y un archivo de foto que se harán coincidir. Si una fila de entrada y un archivo de foto tienen marcas de tiempo que son distintas por más de esta tolerancia, no se efectuará ninguna coincidencia. Para hacer coincidir un archivo de foto con una fila con la marca de tiempo más cercana, independientemente de lo grande que sea la diferencia de fecha/hora, establezca la tolerancia en 0. El signo de este valor (- o +) es irrelevante; se usará el valor absoluto del número especificado.

No use este parámetro para hacer ajustes de cambios o desplazamientos sistemáticos 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
Diferencia horaria
(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á atrasado respecto del reloj de la unidad GPS, utilice un valor positivo; si el reloj de la cámara digital está adelantado respecto del reloj de la unidad GPS, utilice 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 un valor de Diferencia horaria de 15.

Double

arcpy.management.MatchPhotosToRowsByTime(Input_Folder, Input_Table, Time_Field, Output_Table, {Unmatched_Photos_Table}, {Add_Photos_As_Attachments}, {Time_Tolerance}, {Clock_Offset})
NombreExplicaciónTipo de datos
Input_Folder

La carpeta donde están ubicados los archivos de fotos (.jpg o .tif). 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.

Table View
Time_Field

El campo de fecha de la tabla de entrada que indica cuándo se capturó o creó cada fila. El campo debe ser de tipo fecha; no puede ser de tipo cadena de caracteres ni numérico.

Field
Output_Table

La tabla de salida que contiene los valores de Id. de objeto de la tabla de entrada que coincide con una foto y la ruta de la foto coincidente. Solo se incluyen en la tabla de salida los valores de Id. de objeto 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.

Nota:

Para agregar adjuntos es necesario que la clase de entidad de salida se encuentre en una geodatabase de la versión 10 o posterior.

  • ADD_ATTACHMENTSSe agregarán archivos de foto a las filas de la tabla de entrada como adjuntos de geodatabase. Los adjuntos de geodatabase se copian internamente a la geodatabase. Esta es la opción predeterminada.
  • NO_ATTACHMENTSNo se agregarán archivos de foto a las filas de la tabla de entrada como adjuntos de geodatabase.
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 se harán coincidir. Si una fila de entrada y un archivo de foto tienen marcas de tiempo que son distintas por más de esta tolerancia, no se efectuará ninguna coincidencia. Para hacer coincidir un archivo de foto con una fila con la marca de tiempo más cercana, independientemente de lo grande que sea la diferencia de fecha/hora, establezca la tolerancia en 0. El signo de este valor (- o +) es irrelevante; se usará el valor absoluto del número especificado.

No use este parámetro para hacer ajustes de cambios o desplazamientos sistemáticos 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á atrasado respecto del reloj de la unidad GPS, utilice un valor positivo; si el reloj de la cámara digital está adelantado respecto del reloj de la unidad GPS, utilice 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 un valor de Diferencia horaria de 15.

Double

Muestra de código

Ejemplo de MatchPhotosToRowsByTime (ventana de Python)

El siguiente fragmento de la ventana de Python muestra cómo utilizar la herramienta MatchPhotosToRowsByTime.

import arcpy
arcpy.management.MatchPhotosToRowsByTime(
    "c:/data/photos", "c:/data/city.gdb/gps_points", "DateTime", 
    "c:/data/city.gdb/output_table", "", "ADD_ATTACHMENTS", "", 20)
Ejemplo de MatchPhotosToRowsByTime (secuencia de comandos independiente)

En el siguiente script se muestra cómo utilizar la función 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
 
# Set environment settings
arcpy.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

# Run MatchPhotosToRowsByTime and JoinField
arcpy.management.MatchPhotosToRowsByTime(inFolder, inFC, timeField, outTable, 
                                         outUnmatched, attachmentsOption, 
                                         timeDiff, timeOffset)
arcpy.management.JoinField(inFC, "OBJECTID", outTable, "IN_FID", 
                           ["Photo_Path", "Photo_Name", "Match_Diff"])

Temas relacionados