Tutoriel envoie de photo depuis Windows

GeoVisio dispose pour le moment que d’un outil en ligne de commande pour envoyer des photos. On travaille à ajouter une page web pour faire cela, mais ça va prendre un peu de temps.

Les outils en ligne de commande peuvent être un peu impressionnants, je vais essayer de faire un petit guide pas à pas pour en démystifier l’utilisation.

:warning: Ce tutoriel va être fait avec la version 0.2.0 de geovisio_cli. L’outil étant très jeune, il va être amené à beaucoup évoluer, il se peut que certaines parties de ce tutoriel ne soient plus d’actualité dans les versions supérieures.

Note: Je vais faire cela depuis un poste Windows, mais ce n’est pas mon outil au quotidien, il y a peut-être des moyens plus simples de faire ce que je vais vous montrer. Cela a été fait avec Windows 11, mais tout devrait être assez similaire sur Windows 10.

Installation

Python

Tout d’abord il faut installer python sur la machine.
Le plus simple pour cela est d’utiliser le windows store (sinon vous pouvez trouver d’autres moyens de l’installer dans la documentation).

Dans la barre de recherche, tapez “windows store”, puis cliquer sur l’icône du store.

Recherchez “python”, puis installer une version supérieure à la 3.9. Moi je vais prendre la 3.11.


et cliquer sur “Obtenir”

GeoVisio CLI

Une fois python installé, il va falloir ouvrir un terminal. Il y a plein de manières de faire cela, mais le plus simple est de taper “terminal” dans la barre de recherche Windows.

Il y a plusieurs façons d’installer l’outil en ligne de commande, détaillés dans la documentation. Je vais utiliser pipx qui permet d’avoir une installation plus propre.

Note technique: pipx permet d’isoler les exécutables python dans un environnement virtuel, ce qui évite les conflits entre les différents exécutables installés.

Je vais suivre la documentation d’installation.

pip install pipx

L’installation se passe bien, mais il y a un warning un peu cryptique sur le fait que le script pipx.exe n’est pas dans le PATH. Cela veut dire que windows ne va pas trouver tout seul pipx.exe. Pour corriger cela, je tape dans le terminal

python -m pipx ensurepath

Puis il faut ouvrir un nouveau terminal pour que la modification soit disponible.

On va maintenant installer geovisio_cli:

pipx install geovisio_cli

:tada:

Mise à jour

Si vous avez deja installé geovisio_cli via pipx, vous pouvez le mettre à jour:

pipx upgrade geovisio_cli

Utilisation

Il nous reste maintenant plus qu’à verser nos photos.

On va aller dans le répertoire contenant les photos, faire un clic droit dessus, et sélectionner “Ouvrir dans le terminal”.
image

De cette manière, le terminal est ouvert directement dans le bon dossier.

geovisio upload --api-url https://panoramax.ign.fr .

On va cliquer sur le lien en vert, ce qui va nous ouvrir une page de connexion:

Une fois connecté ce message devrait s’afficher:

You are now logged in the CLI, you can upload your pictures

Note: pour plus d’information sur ce parcours d’identification, je vous invite à lire ce poste du forum.

Je peux maintenant relancer la même commande que précédemment, mon ordinateur a maintenant une clé secrète liée à mon compte.

geovisio upload --api-url https://panoramax.ign.fr .

Et vos photos seront envoyées à GeoVisio :tada:

Une fois les photos envoyées, GeoVisio va avoir besoin d’un peu de temps pour les traiter (les flouter, les découper en petits morceaux pour accélérer l’affichage, …). Vous pouvez savoir où en sont ces traitements avec la ligne de commande proposée à la fin de votre envoi:

geovisio collection-status --wait --location https://panoramax.ign.fr/api/collections/<votre_id_de_collection>

Une fois que toutes les photos sont prêtes, vous pouvez aller sur https://panoramax.ign.fr/ pour les regarder :film_strip:.

On va essayer d’ajouter de plus en plus de fonctionnalités dans le site web pour pouvoir suivre tout ça, mais j’espère avoir montré que l’outil en ligne de commande n’était pas trop compliqué à utiliser, n’hésitez pas à nous faire des retours pour améliorer l’outil ou sa documentation.

Bonnes prises de vues ! :camera_flash:

3 « J'aime »

Bonjour,
J’aimerais apporter ma touche à panoramax, je me suis débrouillé pour prendre des photos, mais mon incompétence totale en code m’empêche de comprendre la méthode pour déposer ses photos sur panoramax.
N’y a t-il pas un code python de base avec 2-3 paramètres à changer seulement (p.ex. le chemin d’accès au dossier), qui permettrait aux incompétents en informatique de mon genre d’y arriver facilement ?

L’interface web pour verser des photos arrive !

Elle est en test sur l’instance IGN depuis quelques jours, je vais déployer une mise à jour sur l’instance OSM pour pouvoir aussi la tester dessus.

Tout se passe dans le navigateur, pas de ligne de commande ou d’outil à installer :slight_smile:

1 « J'aime »

Je l’ai testé sur l’instance IGN, elle fonctionne très bien, vivement qu’elle soit sur celle OSM alors ! :grinning:

Bonjour, est-il possible de télécharger des photos avec l’API ?

Oui, toutes les photos sont disponibles via l’api.

L’api suit le standard STAC, et la documentation précise se trouve ici (pour l’api de l’instance de l’ign par exemple).

Le principe c’est simple,

  • par un appel GET sur /api/collections (exemple), on récupère la liste de toutes les collections (les séquences) (la liste est paginée, on peut récupérer la page suivante via le lien next)
    • pour récupérer la liste de ses collections, il faut faire un appel GET https://panoramax.ign.fr/api/users/me/collection en donnant son token en Bearer token dans le header Authorization
      Note: le token peut etre récupéré sur le site de votre instance sur la page Mon compte > Mes informations comme par exemple ici sur l’instance de l’ign

En utilisant curl ca donne:

curl https://panoramax.ign.fr/api/users/me/collection -H 'Authorization: Bearer <mon_token>' --location

Une fois qu’on a trouvé la collection qui nous intéresse, on peut récupérer toutes informations des images de la collection via /api/collections/:id/items, par exemple:

curl "https://panoramax.ign.fr/api/collections/f46df7b5-5b95-4781-a0d8-feb9a9af0f08/items"

Le lien de téléchargement des images se trouve ensuite dans chaque feature dans le champ assets. On peut trouver l’image en haute définition (hd), basse définition (sd), ou juste le thumbnail (thumb).

Pour les adeptes de jq, pour récupérer la liste des url des images en haute définition d’une collection :

curl "https://panoramax.ign.fr/api/collections/f46df7b5-5b95-4781-a0d8-feb9a9af0f08/items" | jq '.features[].assets.hd.href'

Cela répond il à vos besoins ?

On construit maintenant des exécutables windows et linux à chaque nouvelle release GeoVisio.

Ces exécutables intègrent tout ce qu’il faut et ne nécessite pas l’installation de python, ca devrait simplifier les choses.
Sous Windows, il suffit de télécharger le fichier, et vous pouvez directement l’utiliser en ouvrant un prompt (le plus simple étant de taper cmd dans l’explorateur de fichier ouvert dans le dossier de téléchargement).

Vous pouvez trouver dans la derniere release ces exécutables:

Je vais essayer de mettre à jour le tutoriel, en intégrant le nouvel exécutable.

Avantages de l’outil en ligne de commande

Pour rappel, passer par l’outil en ligne de commande est plus compliqué que de charger ses photos via le portail web, mais ça a quelques intérêts:

  • ça peut charger autant de photos qu’on veut dans une séquence, mème s’il y a des dizaines de milliers de photos dans une seule séquence alors que ça risque de poser des soucis via le portail web
  • ça permet d’automatiser les envois
  • de profiter des mécanismes de reprise sur incident de l’outil. Pour tous les envois, un petit fichier (nommé _geovisio.toml) est déposé dans le dossier, et pour chaque photo, on trace si la photo a bien été envoyée ou non. Cela permet de pouvoir relancer les envois facilement, l’outil ne renverra que ce qui est nécessaire.

Installation

On peut toujours passer par l’installation décrite dans le premier poste (installation de python + de geovisio_cli), mais on peut aussi maintenant simplement récupérer un exécutable intégrant directement python.
Pour cela, il suffit de se rendre sur la page des versions de l’outil:

et de télécharger le fichier appelé geovisio_cli-win-amd64.exe (pour la version 0.3.8, la dernière en date à l’écriture de ce poste, le fichier est disponible ici).

J’ouvre ensuite un explorateur de fichier dans le répertoire ou le fichier a été téléchargé, et dans la barre de chemin, je tape powershell, pour ouvrir une ligne de commande windows ouverte dans ce répertoire:
image

Je peux maintenant lancer le versement des photos, en donnant le chemin vers mes photos (note: pensez bien à entourer ce chemin de guillemet s’il contient des espaces.
Dans mon cas je fais:

.\geovisio_cli-win-amd64.exe upload --api-url https://panoramax.ign.fr "C:\Users\moi\Images\panoramax\sortie vincennes"

Bonus: envoyer tous les dossiers en une commande

Si j’ai beaucoup de dossiers de photos à verser, il peut etre plus simple de les envoyer en une commande…

Pour ca, vous pouvez utiliser powershell:

 Get-ChildItem -Path "C:\Users\moi\Images\panoramax" -Directory | ForEach-Object  { "uploading directory $_" ; .\geovisio_cli-win-amd64.exe upload --api-url https://panoramax.ign.fr $_.FullName; "Finished $_"}

Cela va envoyer chaque dossier contenu dans “C:\Users\moi\Images\panoramax” à panoramax.

Envoyer plusieurs séquences en même temps

Pour accèlérer les choses, vous pouvez aussi envoyer plusieurs séquences en même temps (en parallele).
Vu que si on fait ca, la sortie devient vite incompréhensible, on peut écrire les logs dans chaque répertoire, ce qui permet de s’assurer ensuite que tout est ok:

 Get-ChildItem -Path "C:\Users\moi\Images\panoramax" -Directory | ForEach-Object -Parallel {  "uploading directory $_" ; .\geovisio_cli-win-amd64.exe upload --api-url https://panoramax.ign.fr  $_.FullName| Tee-Object -FilePath $_/upload_panoramax.log ; "Finished $_" } -ThrottleLimit 4

Cette commande va envoyer chaque dossier contenu dans “C:\Users\moi\Images\panoramax” , en les envoyant 4 par 4. Cette limite peut être augmentée ou diminuée en fonction de votre connexion internet et de la puissance de votre ordinateur.

Note: J’ai eu des soucis d’utf8 sur la redirection de la sortie standard vers un fichier, j’ai du changer mes préférences windows, en suivant ce qui est expliqué ici: Using UTF-8 Encoding (CHCP 65001) in Command Prompt / Windows Powershell (Windows 10) - Stack Overflow

Conclusion

Voila, n’hésitez pas si vous avez des questions ou si vous voulez partager d’autres astuces.

3 « J'aime »

Bonjour, je souhaite envoyer environ 300 km de vidéo depuis l’Amérique. Je n’ai que des vidéos de ma GoPro MAX. Je me demandais s’il était possible d’envoyer un fichier MP4 et GPX assemblés comme ceci :

image

S’il est possible de télécharger un fichier MP4 et un fichier GPX, alors je pourrais réellement mettre toutes mes vidéos sur le site web !

Désolé si cette phrase n’a pas de sens. J’utilise le traducteur DeepL pour traduire de l’anglais au français.

Salut Hopen111,
Je pense qu’un morceau de ta réponse pourrait se trouver ici GitHub - mapillary/mapillary_tools: Command line tools for processing and uploading Mapillary imagery.

J’explique comment j’ai fait ici : Transformer ses vidéos .mp4 en images .jpg pour les téléverser - Collecte photos - Forum OSM France, mais ma vidéo MP4 était déjà assemblée avec mon fichier GPX.

Il doit surement exister des solutions pour combiner le MP4 avec le GPX, ou des photos JPG avec le GPX :thinking:


Hi Hopen111,
I think a piece of your answer could be found here : GitHub - mapillary/mapillary_tools: Command line tools for processing and uploading Mapillary imagery.

I explain how I did it here: Transformer ses vidéos .mp4 en images .jpg pour les téléverser - Collecte photos - Forum OSM France, but my MP4 video was already assembled with my GPX file.

Surely there must be some way of combining MP4 with GPX, or JPG photos with GPX :thinking:

1 « J'aime »

I DID IT SOMEHOW

1 « J'aime »


This is going to take FOREVER lol

I’ve also noticed that the orientation is wrong sometimes, is this fixable?

Congratulations!

For the orientation, you should try to fix it before the upload. You can do it with Josm.

It seems that the orientation changes direction to fit the original orientation that it was at when the path begins. I think I might be able to fix this if I have the MP4 export from the GoPro editor without moving the camera around automatically. If that doesn’t work then I will have to try JOSM.
image

It works perfectly now!!!

So note to anyone using GoPro MP4 to .JPG, don’t use “World Lock”.

I am also going to replace all my currently uploaded images with the correct orientation before going on to do the rest.

1 « J'aime »