TiPhotoLocator 2.2
A tiny application to easily geotag your photos
Chargement...
Recherche...
Aucune correspondance
Référence de la classe GpxModel

The GpxModel class expose la liste des fichiers GPX du sous-dossier de photos. Plus de détails...

#include <GpxModel.h>

Graphe d'héritage de GpxModel:

Types publics

enum  Roles { NameRole = Qt::UserRole , FilePathRole , StartTimeRole }
 Rôles exposés au QML. Plus de détails...

Connecteurs publics

void refresh (const QUrl &folderUrl)
 Vide le modèle et le remplit avec les fichiers GPX trouvés dans les sous-dossiers.
void selectTrack (int row)
 Charge le tracé du fichier GPX sélectionné dans currentTrackPoints.
void matchPhotos (QObject *photoModelObj, int offsetHours)
 Pour chaque photo du modèle, recherche si son horodatage correspond à un point du track. En cas de correspondance, stocke les coordonnées GPS interpolées dans la photo (temporaire).

Signaux

void currentTrackPointsChanged ()
 Emis quand une nouvelle track est chargée.
void matchCountChanged ()
 Emis quand le nombre de photos matchées change.
void trackPointCountChanged ()
 Emis quand le nombre de points du track change.
void firstOnTrackFound (int sourceRow)
 Émis après matchPhotos() si au moins une photo est sur la track.

Fonctions membres publiques

QVariantList currentTrackPoints () const
int matchCount () const
int trackPointCount () const
 GpxModel (QObject *parent=nullptr)
 Constructeur.
int rowCount (const QModelIndex &parent=QModelIndex()) const override
 Retourne le nombre de fichiers GPX dans le modèle.
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
 Retourne la donnée pour un rôle donné.
QHash< int, QByteArray > roleNames () const override
 Retourne la table de correspondance rôle → nom QML.

Propriétés

QVariantList currentTrackPoints
int matchCount
int trackPointCount

Fonctions membres privées

QString readStartTime (const QString &filePath)
 Détermine le StartTime de la trace GPS.
QString readNmeaStartTime (const QString &filePath)
 Lit le premier $GPRMC valide du fichier .LOG et retourne l'heure de début "HH:MM:SS" (UTC).
QString readGpxStartTime (const QString &filePath)
 Lit la première balise XML "time" du fichier .GPX et retourne l'heure de début "HH:MM:SS" (UTC).
QVector< GpxTrackPointparseTrack (const QString &filePath)
 Dispatche vers parseNmeaTrack() ou le parseur GPX/XML selon l'extension du fichier.
QVector< GpxTrackPointparseNmeaTrack (const QString &filePath)
 Parse un fichier .LOG Olympus OI.Track et retourne les track-points GPS.
QVector< GpxTrackPointparseGpxTrack (const QString &filePath)
 Parse un fichier .GPX et retourne les track-points GPS. Parcourt les balises XML "trkpt" et lit les attributs "lat", "long" et la balise fille "time". Structure GPX : <trkpt lat="..." lon="..."><time>ISO8601</time>...</trkpt>

Attributs privés

QVector< GpxFileInfom_files
 Liste des fichiers GPX détectés.
QVector< GpxTrackPointm_currentTrack
 Points du track sélectionné (avec timestamps).
QVariantList m_currentTrackPoints
 Coordonnées seules pour MapPolyline QML.
int m_matchCount = 0
 Nombre de photos matchées sur le track courant.
int m_trackPointCount = 0
 Nombre de points GPS dans le track courant.

Description détaillée

The GpxModel class expose la liste des fichiers GPX du sous-dossier de photos.


Les fichiers sont recherchés dans les sous-dossiers "GPX" et "GPSLOG" du dossier de photos courant. L'heure de début de chaque track est extraite du premier élément <time> du fichier XML GPX.

Documentation des énumérations membres

◆ Roles

Rôles exposés au QML.


Valeurs énumérées
NameRole 

Nom du fichier.

FilePathRole 

Chemin absolu.

StartTimeRole 

Heure de début "HH:MM:SS".

Documentation des constructeurs et destructeur

◆ GpxModel()

GpxModel::GpxModel ( QObject * parent = nullptr)
explicit

Constructeur.


Documentation des fonctions membres

◆ data()

QVariant GpxModel::data ( const QModelIndex & index,
int role = Qt::DisplayRole ) const
override

Retourne la donnée pour un rôle donné.


Paramètres
index: index de la ligne dans le modèle.
role: rôle demandé (NameRole, FilePathRole, StartTimeRole).
Renvoie
QVariant contenant la valeur, ou QVariant vide si index ou rôle invalide.

◆ matchPhotos

void GpxModel::matchPhotos ( QObject * photoModelObj,
int offsetHours )
slot

Pour chaque photo du modèle, recherche si son horodatage correspond à un point du track. En cas de correspondance, stocke les coordonnées GPS interpolées dans la photo (temporaire).


Paramètres
photoModelObj: le PhotoModel (passé comme QObject* pour être appelable depuis QML).
offsetHours: décalage caméra - GPS en heures entières. Exemple : +2 signifie que la caméra affiche 14:00 quand le GPS indique 12:00.

◆ parseGpxTrack()

QVector< GpxTrackPoint > GpxModel::parseGpxTrack ( const QString & filePath)
private

Parse un fichier .GPX et retourne les track-points GPS. Parcourt les balises XML "trkpt" et lit les attributs "lat", "long" et la balise fille "time". Structure GPX : <trkpt lat="..." lon="..."><time>ISO8601</time>...</trkpt>


Paramètres
filePath: chemin absolu du fichier .GPX.
Renvoie
QVector<GpxTrackPoint> trié chronologiquement (l'ordre du fichier est supposé croissant).

◆ parseNmeaTrack()

QVector< GpxTrackPoint > GpxModel::parseNmeaTrack ( const QString & filePath)
private

Parse un fichier .LOG Olympus OI.Track et retourne les track-points GPS.


Seules les sentences $GPRMC avec statut "A" (fix valide) sont traitées. Les timestamps sont en UTC (convention NMEA).

Paramètres
filePath: chemin absolu du fichier .LOG.
Renvoie
QVector<GpxTrackPoint> trié chronologiquement (l'ordre du fichier est supposé croissant).

◆ parseTrack()

QVector< GpxTrackPoint > GpxModel::parseTrack ( const QString & filePath)
private

Dispatche vers parseNmeaTrack() ou le parseur GPX/XML selon l'extension du fichier.


Paramètres
filePath: chemin absolu du fichier (.gpx ou .LOG).
Renvoie
QVector<GpxTrackPoint> des points du tracé, ou vecteur vide si le fichier est illisible.

◆ readGpxStartTime()

QString GpxModel::readGpxStartTime ( const QString & filePath)
private

Lit la première balise XML "time" du fichier .GPX et retourne l'heure de début "HH:MM:SS" (UTC).


Paramètres
filePath: chemin absolu du fichier .GPX.
Renvoie
"HH:MM:SS" (UTC) ou chaîne vide si aucun fix valide trouvé / fichier illisible.

◆ readNmeaStartTime()

QString GpxModel::readNmeaStartTime ( const QString & filePath)
private

Lit le premier $GPRMC valide du fichier .LOG et retourne l'heure de début "HH:MM:SS" (UTC).


Paramètres
filePath: chemin absolu du fichier .LOG.
Renvoie
"HH:MM:SS" (UTC) ou chaîne vide si aucun fix valide trouvé / fichier illisible.

◆ readStartTime()

QString GpxModel::readStartTime ( const QString & filePath)
private

Détermine le StartTime de la trace GPS.


Paramètres
filePath: chemin absolu du fichier (.gpx ou .LOG).
Renvoie
"HH:MM:SS" (UTC) ou chaîne vide si non trouvé / fichier illisible.

◆ refresh

void GpxModel::refresh ( const QUrl & folderUrl)
slot

Vide le modèle et le remplit avec les fichiers GPX trouvés dans les sous-dossiers.


Recherche dans <folderUrl>/GPX/ et <folderUrl>/GPSLOG/ (insensible à la casse sur Windows). Les GPX sont dans les sous-dossiers GPX/ ou GPSLOG/. Les fichiers sont triés par ordre alphabétique.

Paramètres
folderUrl: URL du dossier de photos actif.

◆ roleNames()

QHash< int, QByteArray > GpxModel::roleNames ( ) const
override

Retourne la table de correspondance rôle → nom QML.


Renvoie
Table associant chaque valeur de Roles à son nom exposé en QML.

◆ rowCount()

int GpxModel::rowCount ( const QModelIndex & parent = QModelIndex()) const
override

Retourne le nombre de fichiers GPX dans le modèle.


Paramètres
parent: index parent (doit être invalide pour un modèle à plat).
Renvoie
Nombre d'entrées dans m_files, ou 0 si parent est valide.

◆ selectTrack

void GpxModel::selectTrack ( int row)
slot

Charge le tracé du fichier GPX sélectionné dans currentTrackPoints.


Paramètres
row: index dans le modèle. Passer -1 pour vider le tracé.

La documentation de cette classe a été générée à partir des fichiers suivants :
  • Sources/cpp/Models/GpxModel.h
  • Sources/cpp/Models/GpxModel.cpp