Geovio client cli tool
Project description
GeoVisio is a complete solution for storing and serving your own 📍📷 geolocated pictures (like StreetView / Mapillary).
➡️ Give it a try at panoramax.ign.fr or geovisio.fr !
📦 Components
GeoVisio is modular and made of several components, each of them standardized and ♻️ replaceable.
All of them are 📖 open-source and available online:
🌐 Server | 💻 Client |
---|---|
API | Website |
Blur API | Web viewer |
GeoPic Tag Reader | Command line |
⌨️ GeoVisio Command-line scripts
This repository only contains command-line interface (CLI).
Features
This tool allows you to:
- Upload a sequence of pictures on a GeoVisio API
It is under development, new features will appear in a near future 😉
Install
GeoVisio CLI can be installed using two methods:
- From PyPI, the Python central package repository
- Using this Git repository
Geovisio CLI is compatible with all Python versions >= 3.8.
From PyPI
Just launch this command:
pip install geovisio_cli
After this you should be able to use the CLI tool with the name geovisio
:
geovisio --help
Alternatively, you can use pipx if you want all the script dependencies to be in a custom virtual env.
You need to install pipx, then:
pipx install geovisio_cli
From Git repository
Download the repository:
git clone https://gitlab.com/geovisio/cli.git geovisio_cli
cd geovisio_cli/
To avoid conflicts, it's considered a good practice to create a virtual environment (or virtualenv). To do so, launch the following commands:
# Create the virtual environment in a folder named "env"
python3 -m venv env
# Launches utilities to make environment available in your Bash
source ./env/bin/activate
Then, install the GeoVisio CLI dependencies using pip:
pip install -e .
You can also install the dev
dependencies if necessary (to have lints, format, tests, ...):
pip install -e .[dev]
Then, you can use the geovisio
command:
geovisio --help
Usage
All details of available commands are listed in USAGE.md documentation.
Upload pictures
The picture upload command is available under the upload
subcommand:
geovisio upload --help
If you want to upload pictures from a my_sequence
directory to a GeoVisio instance (running locally in this example), launch this command:
geovisio upload --api-url http://localhost:5000/ ./my_sequence
You can also add a --wait
flag to wait for geovisio to process all the pictures.
Note that you can launch again the same command to recover a partial sequence import, for example if only some pictures failed to upload.
Authentication
If the GeoVisio API requires a login for the upload, the upload
command will ask for a login on the instance by visiting a given url with a browser.
You can also login before hand with the command:
geovisio login --api-url http://localhost:5000/
Both will store the credentials in a configuration file, located either in a XDG defined directory or in a user specific .config, in a subdirectory geovisio/config.toml
.
If you do not want to use this, you can also provide a geovisio token with the --token
parameter.
Collection status
Prints the status of a collection.
geovisio collection-status --id <some collection id> --api-url http://localhost:5000
You can alternatively give the location of the sequence (its full url) like:
geovisio collection-status --location http://localhost:5000/api/collections/dae288b2-9e8d-4896-af39-d35ce6bc9d4e
You can also add a --wait
flag to wait for geovisio to process all the pictures.
Development
Tests
Tests are run using PyTest. By default, our tests use a Docker Compose environment (located in ./tests/integration/docker-compose-geovisio.yml
) to set-up a temporary GeoVisio API to run onto. If you have Docker Compose enabled and running on your machine, you can simply run this command to launch tests:
pytest
If you don't have Docker Compose, or want to use an existing GeoVisio test instance (to speed up tests), you can pass the --external-geovisio-url
option to pytest:
pytest --external-geovisio-url=http://localhost:5000
Documentation
High-level documentation is handled by Typer. You can update the generated USAGE.md
file using this command:
make docs
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Note that before opening a pull requests, you may want to check formatting and tests of your changes:
make ci
You can also install git pre-commit hooks to format code on commit with:
pip install -e .[dev]
pre-commit install
Make a release
git checkout main
git pull
make docs ci
vim CHANGELOG.md # Edit version + links at bottom
vim geovisio_cli/__init__.py # Edit version
git add *
git commit -m "Release x.x.x"
git tag -a x.x.x -m "Release x.x.x"
git push origin main --tags
🤗 Special thanks
GeoVisio was made possible thanks to a group of ✨ amazing people ✨ :
- GéoVélo team, for 💶 funding initial development and for 🔍 testing/improving software
- Carto Cité team (in particular Antoine Riche), for 💶 funding improvements on viewer (map browser, flat pictures support)
- La Fabrique des Géocommuns (IGN) for offering long-term support and funding the Panoramax initiative and core team (Camille Salou, Mathilde Ferrey, Christian Quest, Antoine Desbordes, Jean Andreani, Adrien Pavie)
- Many many wonderful people who worked on various parts of GeoVisio or core dependencies we use : 🧙 Stéphane Péneau, 🎚 Albin Calais & Cyrille Giquello, 📷 Damien Sorel, Pascal Rhod, Nick Whitelegg...
- Adrien Pavie, for ⚙️ initial development of GeoVisio
- And you all ✨ GeoVisio users for making this project useful !
⚖️ License
Copyright (c) GeoVisio team 2022-2023, released under MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for geovisio_cli-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9474ec419ec1f9caf7a575902a131a3491f7094250902c33b62042976eb70a66 |
|
MD5 | a2dac1b40824ecd4625c671b3704a4aa |
|
BLAKE2b-256 | 1f4e9f60a399b50ccbaa0f6c24582fd748f4a262ab6fee85a551ce36807ce2d7 |