Apparier des photos à des enregistrements en fonction de la date/heure (Gestion des données)

Synthèse

Apparie les fichiers photo aux lignes de table ou de classe d’entités en fonction des horodatages des photos et des lignes. La ligne ayant l’horodatage le plus proche de la date/heure de capture d’une photo sera appariée à cette photo. Crée une nouvelle table contenant les ID d’objet à partir des lignes en entrée et de leurs chemins d’accès de photo correspondants. Permet, en option, d'ajouter des fichiers photo correspondants aux lignes de la table en entrée sous la forme de pièces jointes à la géodatabase.

Illustration

Apparier des photos à des lignes en fonction de la date/heure
La ligne 5 en entrée n'est mise en correspondance avec aucune photo car d'autres lignes présentent des horodatages plus proches de ceux des fichiers photo.

Utilisation

  • Cet outil permet de faire correspondre des entités capturées par GPS avec des photographies numériques prises en même temps.

  • La table en sortie contient quatre champs attributaires :

    • IN_FID : l’ID d’objet d’une ligne en entrée dont l’horodatage correspond à l’horodatage d’une photo.
    • Photo_Path: le chemin d’accès entier à un fichier photo dont l’horodatage correspond à l’horodatage de la ligne en entrée identifiée dans le champ IN_FID.
    • Photo_Name : le nom court du fichier photo.
    • Match_Diff : la différence entre les horodatages d’un fichier photo et la ligne en entrée correspondante. Cette valeur numérique est exprimée dans l’unité spécifiée dans le paramètre Time Difference Unit (Unité de différence de date/heure).

  • Même si les données de fichier de formes et dBASE sont prises en charge pour la table en entrée, il est recommandé d'utiliser des données de géodatabase, parce que le champ Date d'un fichier de formes ou d'une table dBASE ne peut pas stocker d'informations concernant la date et l'heure.

    En savoir plus sur les limites des shapefile

  • Puisqu’une ligne en entrée unique peut comporter un horodatage qui correspond à l’horodatage de plusieurs photos, la table en sortie peut comporter plusieurs lignes ayant la même valeur IN_FID (chaque ligne de la sortie se réfère à une correspondance entre une photo et une ligne en entrée).

  • La table en sortie peut être jointe à la table en entrée à l’aide du champ IN_FID en sortie et de la valeur OBJECTID de l’entrée. Dans le cas où la table en sortie comporte plusieurs lignes ayant la même valeur IN_FID (une ligne en entrée correspond à plusieurs photos), utilisez une relation ou une classe de relations pour relier la sortie à l’entrée.

  • Le champ heure doit être de type Date. Pour convertir vos champs de texte ou numériques en un champ Date, utilisez l’outil Convert Time Field (Convertir le champ heure).

  • Même si un point GPS et une photographie numérique sont capturés à exactement la même heure, les heures enregistrées par les appareils peuvent être dans des fuseaux horaires différents. Par exemple, les appareils GPS enregistrent souvent les heures dans le temps universel coordonné (UTC) ou le temps moyen de Greenwich (GMT), tandis que les caméras numériques les enregistrent souvent dans un fuseau horaire local. Pour réconcilier les différences d’horodatage résultant de fuseaux horaires différents, utilisez l’outil Convert Time Zone (Convertir le fuseau horaire) afin de changer le champ heure de la table en entrée pour apparier le fuseau horaire de l’horodatage du fichier photo.

    De même, l’horloge du GPS peut ne pas être synchronisée avec l’horloge de la caméra numérique. Pour bien apparier la photo et le point GPS lorsque ces horloges ne sont pas synchronisées, déterminez la différence entre les deux horloges, puis utilisez cette valeur avec le paramètre Clock Offset (Décalage de l’horloge).

  • Les paramètres Time Tolerance (Tolérance temporelle) et Clock Offset (Décalage de l’horloge) doivent être spécifiés en secondes. Plusieurs utilitaires sur Internet permettent de calculer à combien de secondes est égale une unité de temps différente. Par exemple, 3 minutes et 12 secondes équivalent à 192 secondes.

Paramètres

ÉtiquetteExplicationType de données
Dossier en entrée

Dossier contenant les fichiers photo (.jpg ou .tif). Ce dossier est analysé itérativement à la recherche de fichiers photo. Toutes les photos présentes dans le niveau de base du dossier, ainsi que dans tous les sous-dossiers, seront ajoutées à la sortie.

Folder
Table en entrée

La table ou la classe d’entités dont les lignes seront appariées avec les fichiers photo. La table en entrée est habituellement une classe d'entités ponctuelles représentant les enregistrements du GPS.

Table View
Champ temporel

Le champ de date/heure de la table en entrée qui indique à quel moment chaque ligne a été capturée ou créée. Doit être un champ date et non une chaîne ou un champ numérique.

Field
Table en sortie

La table en sortie contenant les ID d’objet de la table en entrée qui correspondent à une photo et le chemin d’accès à la photo correspondante. Seules les valeurs OBJECTID de la table en entrée correspondant à une photo sont incluses dans la table en sortie.

Table
Table des photos non appariées
(Facultatif)

Table en sortie facultative qui répertorie tous les fichiers photo du dossier en entrée dont l'horodatage est incorrect ou toutes les photos sans correspondance, car il n'existe aucune ligne en entrée dans la tolérance temporelle.

Si aucun chemin d'accès n'est spécifié, cette table ne sera pas créée.

Table
Ajouter des photos en tant que pièces jointes
(Facultatif)

Spécifie si les fichiers photo seront ajoutés aux lignes de la table en entrée en tant que pièces jointes de géodatabase. La table en entrée doit être stockée dans une géodabase version 10 ou ultérieure pour les fichiers photo à ajouter en tant que pièces jointes.

  • Activé : les fichiers photo seront ajoutés aux lignes de la table en entrée en tant que pièces jointes de géodatabase. Les pièces jointes de géodatabase sont copiées en interne vers la géodatabase. Il s’agit de l’option par défaut.
  • Désactivé - Aucun fichier photo n'est ajouté aux lignes de la table en entrée sous la forme de pièces jointes à la géodatabase.
Boolean
Tolérance temporelle
(Facultatif)

La différence maximale (en secondes) entre la date/l’heure d’une ligne en entrée et d’un fichier photo allant être apparié. Si une ligne en entrée et un fichier photo ont des horodatages dont la différence est supérieure à cette tolérance, aucun appariement n’a lieu. Pour apparier un fichier photo à une ligne avec l’horodatage le plus proche, quelle que soit la différence de date/heure, définissez la tolérance sur 0. Le signe de cette valeur (- ou +) n’est pas pertinent ; la valeur absolue du chiffre spécifié sera utilisée.

N’utilisez pas ce paramètre pour ajuster en vue de décalages cohérents entre les heures enregistrées par le GPS et la caméra numérique. Utilisez le paramètre Clock Offset (Décalage de l’horloge) ou l’outil Convert Time Zone (Convertir le fuseau horaire) pour décaler les horodatages des lignes en entrée afin d’apparier ces photos.

Double
Décalage de l’horloge
(Facultatif)

La différence (en secondes) entre l’horloge interne de la caméra numérique utilisée pour capturer les photos et l’unité GPS. Si l'horloge de l'appareil photo numérique est en retard par rapport à l'horloge de l'unité GPS, utilisez une valeur positive. Si elle est en avance, utilisez une valeur négative.

Par exemple, si une photo ayant l’horodatage 11:35:17 doit correspondre à une ligne ayant l’horodatage 11:35:32, utilisez un décalage d’horloge (Clock Offset) 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})
NomExplicationType de données
Input_Folder

Dossier contenant les fichiers photo (.jpg ou .tif). Ce dossier est analysé itérativement à la recherche de fichiers photo. Toutes les photos présentes dans le niveau de base du dossier, ainsi que dans tous les sous-dossiers, seront ajoutées à la sortie.

Folder
Input_Table

La table ou la classe d’entités dont les lignes seront appariées avec les fichiers photo. La table en entrée est habituellement une classe d'entités ponctuelles représentant les enregistrements du GPS.

Table View
Time_Field

Le champ de date/heure de la table en entrée qui indique à quel moment chaque ligne a été capturée ou créée. Doit être un champ date et non une chaîne ou un champ numérique.

Field
Output_Table

La table en sortie contenant les ID d’objet de la table en entrée qui correspondent à une photo et le chemin d’accès à la photo correspondante. Seules les valeurs OBJECTID de la table en entrée correspondant à une photo sont incluses dans la table en sortie.

Table
Unmatched_Photos_Table
(Facultatif)

Table en sortie facultative qui répertorie tous les fichiers photo du dossier en entrée dont l'horodatage est incorrect ou toutes les photos sans correspondance, car il n'existe aucune ligne en entrée dans la tolérance temporelle.

Si aucun chemin d'accès n'est spécifié, cette table ne sera pas créée.

Table
Add_Photos_As_Attachments
(Facultatif)

Spécifie si des fichiers photo sont ajoutés aux lignes de la table en entrée sous la forme de pièces jointes à la géodatabase.

Licence :

Pour ajouter des pièces jointes, vous devez disposer au moins d'une licence ArcGIS Desktop Standard et la classe d'entité en sortie doit figurer dans une géodatabase version 10 ou ultérieure.

  • ADD_ATTACHMENTS Les fichiers photo seront ajoutés aux lignes de la table en entrée en tant que pièces jointes de géodatabase. Les pièces jointes de géodatabase sont copiées en interne vers la géodatabase. Il s’agit de l’option par défaut.
  • NO_ATTACHMENTS Aucun fichier photo n'est ajouté aux lignes de la table en entrée sous la forme de pièces jointes à la géodatabase.
Boolean
Time_Tolerance
(Facultatif)

La différence maximale (en secondes) entre la date/l’heure d’une ligne en entrée et d’un fichier photo allant être apparié. Si une ligne en entrée et un fichier photo ont des horodatages dont la différence est supérieure à cette tolérance, aucun appariement n’a lieu. Pour apparier un fichier photo à une ligne avec l’horodatage le plus proche, quelle que soit la différence de date/heure, définissez la tolérance sur 0. Le signe de cette valeur (- ou +) n’est pas pertinent ; la valeur absolue du chiffre spécifié sera utilisée.

N’utilisez pas ce paramètre pour ajuster en vue de décalages cohérents entre les heures enregistrées par le GPS et la caméra numérique. Utilisez le paramètre Clock Offset (Décalage de l’horloge) ou l’outil Convert Time Zone (Convertir le fuseau horaire) pour décaler les horodatages des lignes en entrée afin d’apparier ces photos.

Double
Clock_Offset
(Facultatif)

La différence (en secondes) entre l’horloge interne de la caméra numérique utilisée pour capturer les photos et l’unité GPS. Si l'horloge de l'appareil photo numérique est en retard par rapport à l'horloge de l'unité GPS, utilisez une valeur positive. Si elle est en avance, utilisez une valeur négative.

Par exemple, si une photo ayant l’horodatage 11:35:17 doit correspondre à une ligne ayant l’horodatage 11:35:32, utilisez un décalage d’horloge (Clock Offset) de 15.

Double

Exemple de code

Exemple d'utilisation de l'outil MatchPhotosToRowsByTime (fenêtre Python)

L'extrait de la fenêtre Python ci-dessous illustre l'utilisation de l'outil 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)
Exemple d'utilisation de l'outil MatchPhotosToRowsByTime (script autonome)

Le script suivant illustre l'utilisation de l'outil 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
# 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")