Package: geovisio_cli
GeoVisiois a complete solution for storing andserving your own 📍📷 geolocated pictures(likeStreetView/Mapillary).➡️Give it a tryatpanoramax.ign.frorgeovisio.fr!📦 ComponentsGeoVisio ismodularand made of several components, each of them standardized and ♻️ replaceable.All of them are 📖open-sourceand available online:🌐 Server💻 ClientAPIWebsiteBlur APIWeb viewerGeoPic Tag ReaderCommand line⌨️ GeoVisio Command-line scriptsThis repository only containscommand-line interface (CLI).FeaturesThis tool allows you to:Upload a sequence of pictures on a GeoVisio APIIt is underdevelopment, new features will appear in a near future 😉InstallGeoVisio CLI can be installed using two methods:FromPyPI, the Python central package repositoryFrom packaged binaries, availaible in thelatest release pageUsing thisGit repositoryGeovisio CLI is compatible with all Python versions >= 3.8.From PyPIJust launch this command:pipinstallgeovisio_cliAfter this you should be able to use the CLI tool with the namegeovisio:geovisio--helpAlternatively, you can usepipxif you want all the script dependencies to be in a custom virtual env.You need toinstall pipx, then:pipxinstallgeovisio_cliFrom packaged binariesPackaged binaries are available for windows and linux on AMD64 architecture. The binaries include python and all needed dependencies, so they should be self sufficient.They are available in thelatest release.WindowsOn windows, just download the windows executable, open a shell in the download directory (you can do that by typingcmdin the explorer opened in the directory).Then you can just do:geovisio_cli-win-amd64.exe--helpLinuxPrebuild binary have been built for AMD64. They are build using ubuntu 22.04, so they should work for all newer version. For older version though, there might be libstdc++ incompatibilities, if you encounter the problem, you can update libstdc++ or directly use Pypi.Download the binary, then in the download directory:chmodu+xgeovisio_cli-linux-amd64
./geovisio_cli-linux-amd64--helpOptional, you can put this in /usr/local/bin (if it's in your path):chmodu+xgeovisio_cli-linux-amd64
mvgeovisio_cli-linux-amd64/usr/local/bin/geovisio_cli

geovisio_cli--helpNote: on linux, it might be easier to use directly pypi package, combined withpipxupdates will be easier and there should be less problems with libraries version.From Git repositoryDownload the repository:gitclonehttps://gitlab.com/geovisio/cli.gitgeovisio_clicdgeovisio_cli/To avoid conflicts, it's considered a good practice to create avirtual environment(or virtualenv). To do so, launch the following commands:# Create the virtual environment in a folder named "env"python3-mvenvenv# Launches utilities to make environment available in your Bashsource./env/bin/activateThen, install the GeoVisio CLI dependencies using pip:pipinstall-e.You can also install thedevdependencies if necessary (to have lints, format, tests, ...):pipinstall-e.[dev]Then, you can use thegeovisiocommand:geovisio--helpUsageAll details of available commands are listed inUSAGE.mddocumentation.Upload picturesThe picture upload command is available under theuploadsubcommand:geovisioupload--helpIf you want to upload pictures from amy_sequencedirectory to a GeoVisio instance (running locally in this example), launch this command:geovisioupload--api-urlhttp://localhost:5000/./my_sequenceYou can also add a--waitflag 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.AuthenticationIf the GeoVisio API requires a login for the upload, theuploadcommand 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:geovisiologin--api-urlhttp://localhost:5000/Both will store the credentials in a configuration file, located either in aXDGdefined directory or in a user specific .config, in a subdirectorygeovisio/config.toml.If you do not want to use this, you can also provide a geovisio token with the--tokenparameter.External metadataPicture metadata can also be set using a CSV file. This file should be placed in the same directory as pictures, and can be named as you like, as long as it ends with.csv. You can name it_geovisio.csvfor example.The CSV file should contain all following columns:HeaderTypeMandatory ?DescriptionfilestrYesFile name of the picturelonfloatNoWGS84 longitude (for example 55.56 for Réunion Island)latfloatNoWGS84 latitude (for example -21.14 for Réunion Island)capture_timestrNoCapture time of the picture, inRFC 3339(like1985-04-12T23:20:50.52Z). If no timezone is given, considered as local time (and thus the date + position would be used to localize it).Exif.*strNoAny EXIF tag, with column name followingExiv2scheme (example Exif.Image.Artist). You can create as many columns as necessary.Xmp.*strNoAny XMP tag, with column name followingExiv2scheme (example Xmp.digiKam.TagsList). You can create as many columns as necessary.All metadatas defined in the CSV are optional. If a metadata is not defined in CSV for a given image, GeoVisio CLI will try to read it from picture EXIF metadata.Note thatGeoVisio APIwill always need some metadata to be present(the GPS coordinates and the capture time), no matter where they are read from.Collection statusPrints the status of a collection.geovisiocollection-status--id<somecollectionid>--api-urlhttp://localhost:5000You can alternatively give the location of the sequence (its full url) like:geovisiocollection-status--locationhttp://localhost:5000/api/collections/dae288b2-9e8d-4896-af39-d35ce6bc9d4eYou can also add a--waitflag to wait for geovisio to process all the pictures.DevelopmentTestsTests are run using PyTest. By default, our tests use aDocker Composeenvironment (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:pytestIf 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-urloption to pytest:pytest--external-geovisio-url=http://localhost:5000Using with an unsecure geovisio APIThe CLI parameter--disable-cert-checkis available to use with an unsecure geovisio API (or when behind proxies messing with ssl).There are no automated test for this, but you can run a geovisio withflask run --cert=adhocto manually test this.DocumentationHigh-level documentation is handled byTyper. You can update the generatedUSAGE.mdfile using this command:makedocsContributingPull 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:makeciYou can also install gitpre-commithooks to format code on commit with:pipinstall-e.[dev]pre-commitinstallMake a releasegitcheckoutmain
gitpull

makedocsci
vimCHANGELOG.md# Edit version + links at bottomvimgeovisio_cli/__init__.py# Edit versiongitadd*
gitcommit-m"Release x.x.x"gittag-ax.x.x-m"Release x.x.x"gitpushoriginmain--tags🤗 Special thanksGeoVisio was made possible thanks to a group of ✨amazingpeople ✨ :GéoVéloteam, for 💶 funding initial development and for 🔍 testing/improving softwareCarto 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 thePanoramaxinitiative and core team (Camille Salou, Mathilde Ferrey, Christian Quest, Antoine Desbordes, Jean Andreani, Adrien Pavie)Manymanywonderful peoplewho 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 GeoVisioAnd you all ✨GeoVisio usersfor making this project useful !⚖️ LicenseCopyright (c) GeoVisio team 2022-2023,released under MIT license.