Principe de base
1. Prérequis avant l'utilisation de l'application¶
L'application permet d'utiliser des photos standards et des photos à 360°.
Privilégiez un dossier par type de photos (standards et 360°) et par source afin d'éviter les décalages si les photos n'ont pas été prises avec le même appareil ou avec les mêmes paramètres.
Disposer du chemin vers un dossier photo et connaître le FOV de l'image¶
Les photos doivent contenir des données EXIF exploitables et précises pour garantir un rendu fiable (précision minimum conseillée : < 1 m pour les coordonnées + direction).
Pour les photos standards : Il est nécessaire de connaître la valeur du FOV (champ de vision) de l’appareil photo. Cette valeur est à renseigner dans la barre latérale de l’interface.
Tip
Figer le chemin et le FOV dans main.py si fréquemment utilisé
Voir la page Paramétrages supplémentaires
Fournir un fichier YAML de configuration (annotations_config.yaml)¶
Il doit prendre le nom "annotations_config.yaml" et doit être placé dans le même dossier que vos photos.
Un exemple prêt à l’emploi est fourni dans le dossier /data_test.
📄 Structure attendue :
annotations:
type_objet1:
fonction_objet: ["fonction1", "fonction2"]
mode_annotation: ["mode1"]
type_objet2:
fonction_objet: ["fonction1", "fonction2"]
mode_annotation: ["mode1"]
type_objet3:
fonction_objet: ["fonction1", "fonction2"]
mode_annotation: ["mode2"]
🔎 Explication des champs :
| Champs | Sous-Champs | Description | Exemple |
|---|---|---|---|
[mode_annotation] |
cartographie |
Création de point lié à une table du GPKG (ex : porte liée à un bâtiment) |
- |
[mode_annotation] |
maj_objet |
Mise à jour attributaire d’une géométrie existante (colonne = type_objet, valeur = fonction_objet) |
- |
[type_objet] |
- | Type explicite de l’objet annoté | "porte", "toiture", etc. |
[fonction_objet] |
- | Valeur de précision liée à l’objet | "entrée", "garage", etc. |
Info
Vous pouvez modifier le contenu du YAML pendant une session.
Vous devrez recharger le fichier via le bouton dans la barre latérale

2. Utilisation de l'application¶
Démarrer l’application¶
Copier le chemin du dossier contenant les images dans le champ prévu et définissez, si besoin, la valeur du FOV de vos images.
| Chemin des photos | Valeur du FOV |
|---|---|
![]() |
![]() |
L’application va automatiquement :
- générer un fichier exif_data.json (métadonnées des images),
- créer un fichier annotations.json à la première annotation.
Info
Ces fichiers se trouvent dans le dossier photo et doivent y rester pour être exploités par l'application.
Si vous modifiez le contenu du dossier photo, vous devez recalculer les exifs notamment dans le cas d'un ajout.

Gestion automatique des bandes noires [pour les photos standards]
Le FOV exploitable de la photo est fixé à 70°.
Note
Exemple :
Si votre image a un FOV de 100° (défini dans la barre latérale), l’application rogne automatiquement les 15° de chaque côté pour ne conserver que la zone au centre d'un FOV de 70°. Vous pouvez ajouter des annotations dans cette zone mais elles seront exclues du traitement final.
Ajouter des annotations¶
Dans la barre latérale, sélectionnez :
- le mode (cartographie ou maj_objet)
- le type d’objet
- sa fonction
Note
Les listes sont automatiquement filtrées selon le fichier annotations_config.yaml :
- par cible
- par type_objet
Cliquez sur l’image à l’endroit souhaité.
Pour les images standards : effectuez un clic-gauche
Pour les images à 360° : clic-droit pour ajouter une annotation
Info
Les annotations sont sauvegardées automatiquement dans le json à chaque clic
Les objets en doublons (un même objets sur deux images) sont moyennés pour ne garder qu'un seul élément lors du traitement final
Il se peut que les doublons entre deux images soient maintenus en fonction de leur distance (tri attributaire et spatial)
Gestion des annotations¶
Vous pouvez :
- sélectionner une annotation pour modifier ses attributs
- supprimer une annotation.
Note
Il n’est pas possible de déplacer une annotation dynamiquement : supprimez-la puis recréez-la au bon endroit.
| Tableau et sélection d'une annotation | Sélection visible à l'écran (en jaune) |
|---|---|
![]() |
![]() |
Vous pouvez également supprimer l'ensemble des annotations d'une image grâce au bouton sous le tableau

Bug visuel possible donnant l'impression qu'il reste une annotation malgré la suppression totale. Si le tableau est vide alors toutes les annotations ont été supprimées.
Warning
Faites une sauvegarde du json d'annotations avant chaque session
La réinitialisation des annotations d'une image supprimera l'ensemble des annotations de l'image au clic.
Les boutons de modification et de suppression ont un effet immédiat lors du clic.
Générez vos données finales¶
Dans la barre latérale :
- définisser si besoin le décalage pour un référentiel 0° = Nord
Référentiel Nord = 0°
PhotoMapon utilise un référentiel standard d’azimut dans lequel 0° correspond au Nord, avec une rotation horaire (90° = Est, 180° = Sud, 270° = Ouest). Cependant, certaines caméras — notamment les appareils 360° ou certaines GoPro — enregistrent parfois les orientations dans un autre référentiel, par exemple avec 0° positionné à l’Est. Dans ce cas, l’angle d’orientation affiché dans la visionneuse ne correspond pas au référentiel attendu, ce qui fausse la direction de projection et donc la cartographie du point annoté.
Pour corriger cela, PhotoMapon permet d’utiliser un compteur d’ajustement de l’angle, permettant soit de ramener l’image dans un référentiel Nord cohérent, soit d’apporter une correction manuelle plus fine lorsque l’orientation EXIF s’avère imprécise (cas fréquent sur les photos prises en mouvement ou en conditions GPS dégradées).
- ajoutez un fichier GPKG en Lambert-93 (EPSG 2154)
- sélectionnez la table de comparaison (polygone)
Cliquez sur "🗺️ Cartographier les éléments 🗺️"
Résultats générés automatiquement et placés dans le dossier "resultat" (créé par défaut si absent) :
- un GPKG enrichi (table de référence mise à jour, autres tables si présentes et création d'une table des objets cartographiés)
- un fichier de log retraçant les opérations
- les photos annotées exportées dans ce même dossier
Détail des couches du GeoPackage exporté
Voici un résumé des couches créées dans le fichier GeoPackage lors de l’export des annotations (préfixe phm_).
L'ensemble des tables du GPKG d'origine sont renvoyées, seule la table fournie est mise à jour par les annotations.
| Nom de la couche | Description | Type géométrique | Source / Rôle principal |
|---|---|---|---|
nom de la table utilisateur |
Géométrie mise à jour par les annotations de l'utilisateur | Polygone | Géométrie issue du fichier/table utilisateur pour mise à jour |
phm_photo |
Un point par photo annotée, contenant les métadonnées EXIF et les annotations associées. | Point | Issue des métadonnées EXIF et JSON d’annotation |
phm_point_geom |
Points géométriques de référence projetés utilisés pour les calculs d'objets. | Point | Base de référence pour les traitements spatiaux bruts |
phm_point_objet_annot |
Tous les objets annotés y compris les doublons, directement issus des clics depuis un "phm_point_geom". | Point | Capture brute des objets annotés par l’utilisateur |
phm_point_ref |
Points de référence pour recalcul des angles des objets | Point | Servent à générer les objets finaux avec orientation moyenne par groupe |
phm_ligne_vue |
Lignes de vue finales depuis les "point_ref" vers les objets annotés finaux. | Ligne (LineString) | Visualisation des correspondances entre photos et objets |
phm_point_objet |
Objets annotés finaux : un seul point par groupe (angle moyen, sans doublons). | Point | Résultat consolidé pour la cartographie finale |
Vous pouvez désactiver la création de certaines couches pour ne garder que "photo", la couche utilisateur mise à jour (et le reste des couches d'origine) et "point_objet" en commentant les lignes dans le fichier.
utils/geo_utils -> à partir de la ligne 464



