Terracotta est un serveur de tuiles Python pur qui s'exécute comme une application WSGI sur un serveur Web dédié ou comme une application sans serveur sur AWS Lambda. Il est construit sur une pile Python moderne, alimentée par de superbes logiciels open source tels que Flask, Zappa et Rasterio.
Lire la documentation | Essayez la démo | Explorez l'API | Satlas, propulsé par Terracotta | Image Docker
terracotta serve -r {name}.tif
et terracotta connect localhost:5000
vous y amènent.$ ls -lh
total 1.4G
-rw-r--r-- 1 dimh 1049089 231M Aug 29 16:45 S2A_20160724_135032_27XVB_B02.tif
-rw-r--r-- 1 dimh 1049089 231M Aug 29 16:45 S2A_20160724_135032_27XVB_B03.tif
-rw-r--r-- 1 dimh 1049089 231M Aug 29 16:46 S2A_20160724_135032_27XVB_B04.tif
-rw-r--r-- 1 dimh 1049089 231M Aug 29 16:56 S2A_20170831_171901_25XEL_B02.tif
-rw-r--r-- 1 dimh 1049089 231M Aug 29 16:57 S2A_20170831_171901_25XEL_B03.tif
-rw-r--r-- 1 dimh 1049089 231M Aug 29 16:57 S2A_20170831_171901_25XEL_B04.tif
$ terracotta optimize-rasters * .tif -o optimized/
Optimizing rasters: 100% | ██████████████████████████ | [05: 16< 00:00, file = S2A_20170831_...25XEL_B04.tif]
$ terracotta ingest optimized/S2A_{date}_{}_{tile}_{band}.tif -o greenland.sqlite
Ingesting raster files: 100% | ███████████████████████████████████████████ | 6/6 [00: 49< 00:00, 8.54s/it]
$ terracotta serve -d greenland.sqlite
* Serving Flask app " terracotta.server " (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://localhost:5000/ (Press CTRL+C to quit)
Vous pouvez utiliser n'importe quel client compatible HTTP, tel que curl
.
$ curl localhost:5000/datasets ? tile=25XEL
{ " page " :0, " limit " :100, " datasets " :[{ " date " : " 20170831 " , " tile " : " 25XEL " , " band " : " B02 " },{ " date " : " 20170831 " , " tile " : " 25XEL " , " band " : " B03 " },{ " date " : " 20170831 " , " tile " : " 25XEL " , " band " : " B04 " }]}
Les navigateurs modernes (par exemple Chrome ou Firefox) afficheront le JSON sous forme d'arborescence.
Terracotta comprend également un client Web. Vous pouvez démarrer le client (en supposant que le serveur s'exécute sur http://localhost:5000) en utilisant
$ terracotta connect localhost:5000
* Serving Flask app " terracotta.client " (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5100/ (Press CTRL+C to quit)
Ouvrez ensuite la page client (http://127.0.0.1:5100/ dans ce cas) dans votre navigateur.
Nous acceptons volontiers les rapports de bogues et les demandes d'extraction via GitHub. Pour que votre code soit utile, assurez-vous qu'il est couvert par des tests et qu'il satisfait à nos pratiques de linting (via mypy
et flake8
).
Pour exécuter les tests, installez simplement les dépendances nécessaires via
$ pip install -e .[test]
Ensuite, vous pouvez courir
$ pytest
à partir de la racine du référentiel.