mapillary_download/README.md

128 lines
5.3 KiB
Markdown

# mapillary_download
Simple code to download images in one or several mapillary sequences. The images will be geotagged and oriented.
## How to use
### Setup env variables
copy the secret variables files to setup your mapillary dev token, and your panoramax OpenStreetMap token.
```Shell
cp secrets_variables_example.sh secrets_variables.sh
editor secrets_variables.sh
```
### Get ALL the sequences of SEVERAL users
To avoid to download everything at once, this is a 2 steps process:
- 1/ We set a list of users for which we want to get the list of sequences to download, and get a bash script for each user.
Change the list of users in the batch file `batch_get_username.sh`.
```bash
usernames=( "someone_having_nice_pictures" "someone_else" "oh_look_a_these_usernames" ) # use real accounts, it might work better
```
then, execute:
```bash
./batch_get_username.sh
```
This will give you a few files that the other scripts will use to generate a script to download all sequences of each user. One user, one bash script generated.
- 2/ We can launch the download of all the sequences of a user for every user specified in the batch script.
```bash
bash script_bash_get_sequences_for_user_SOMEONE.sh
```
**Or all of the generated batch scripts at once.**
```bash
bash script_bash_get_sequences_for_user_*
```
Don't worry if you rerun the same user `script_bash_get_sequences_for_user_someone.sh` twice, the pictures will not be downloaded twice. Every run of mapillary_download.py checks that pictures are not existing before willing to download them.
### Get only one sequence with its ID
To find a sequence id you can use the batch script, or click on a sequence on the Mapillary website, click on a picture, click on advanced data, and copy the sequence ID.
```Shell
python mapillary_download.py "MLY|xxxx|xxxxxxx" --sequence_ids xxxxxxxxxxx xxxxxxxxxxx
```
### Available arguments
```Shell
python mapillary_download.py -h
usage: mapillary_download.py [-h] [--sequence_ids [SEQUENCE_IDS ...]] [--image_ids [IMAGE_IDS ...]] [--destination DESTINATION]
[--image_limit IMAGE_LIMIT] [--overwrite]
access_token
positional arguments:
access_token Your mapillary access token
optional arguments:
-h, --help show this help message and exit
--sequence_ids [SEQUENCE_IDS ...]
The mapillary sequence id(s) to download
--image_ids [IMAGE_IDS ...]
The mapillary image id(s) to get their sequence id(s)
--destination DESTINATION
Path destination for the images
--image_limit IMAGE_LIMIT
How many images you want to download
--overwrite overwrite existing images
-v, --version show program's version number and exit
```
## Sort pictures depending of a bounding box in their Exif GPS Data in a separate folder
This is used to restrict zones for national instances of Panoramax to upload to reuse the sequences of multi national users.
Edit the bounding boxes in `find_france_photos_and_move.py` and change the destination folder.
Running the script will check in the /data folder for every user sequences and move the files being in the bouding boxes in the `destination` folder path of the script.
For this script to read the exif of pictures, you will need the python package `exifread`
It was tested with pictures taken with the App Open Camera.
## How to get my Mapillary access token
- Go to https://www.mapillary.com/dashboard/developers
- Click on "Registrer Application", enter the needed informations, enable the application to "Read" data, then click on register :
![register application](./doc/snapshot_mapillary_register_application.jpg)
- When this registration is done, click on "view" in the token column. This is you access token :
![token](./doc/snapshot_mapillary_token.jpg)
## How to get my sequence id (or sequence key)
- Go to https://mapillary.com/app
- Click on one of the picture of the sequence you want to download
- Click on the "image option" button (right panel)
- Click on "advanced" then click on the sequence key to copy it in the clipboard
![snapshot](./doc/snapshot_mapillary_sequence.jpg)
## How to install the script with a virtual environnement
```Shell
cd ~
git clone https://github.com/Stefal/mapillary_download.git
cd mapillary_download
python3 -m venv mly_venv
source mly_venv/bin/activate
source secrets_variables.sh
python -m pip install -r requirements.txt
```
Then you can run `python mapillary_download.py $MAPILLARY_DEV_TOKEN --sequence_ids xxxxxxxxxxx`
When you're done with the script, simply run `deactivate` to exit the virtual environnement.
On windows you can create a virtual environnement too, or use the prebuilt `mapillary_download.exe` available on the release page.
## How to batch the upload to panoramax
After having downloaded the sequences of a user you will find them in the folder `data`.
go in your `data` folder, and to the user subfolder, and assuming you have already sent pictures with geovisio_cli, you can run this command to send all the sequences of the current folder you're in:
```Shell
source mly_venv/bin/activate
source secrets_variables.sh
cd data/some_user
for dir in */; do dir=${dir%?} ; panoramax_cli upload --api-url https://panoramax.openstreetmap.fr "$dir" --token=$PANORAMAX_DEV_TOKEN ; done
```
Have fun!