Terracotta adalah server ubin Python murni yang berjalan sebagai aplikasi WSGI di server web khusus atau sebagai aplikasi tanpa server di AWS Lambda. Itu dibangun di atas tumpukan Python modern, didukung oleh perangkat lunak sumber terbuka yang mengagumkan seperti Flask, Zappa, dan Rasterio.
Baca dokumen | Coba demonya | Jelajahi API | Satlas, didukung oleh Terracotta | Gambar Docker
terracotta serve -r {name}.tif
dan terracotta connect localhost:5000
mengantarkan Anda ke sana.$ 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)
Anda dapat menggunakan klien berkemampuan HTTP apa pun, seperti 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 " }]}
Browser modern (misalnya Chrome atau Firefox) akan merender JSON sebagai pohon.
Terracotta juga menyertakan klien web. Anda dapat memulai klien (dengan asumsi server berjalan di http://localhost:5000) menggunakan
$ 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)
Kemudian buka halaman klien (http://127.0.0.1:5100/ dalam hal ini) di browser Anda.
Kami dengan senang hati menerima laporan bug dan menarik permintaan melalui GitHub. Agar kode Anda berguna, pastikan kode tersebut tercakup dalam pengujian dan memenuhi praktik linting kami (melalui mypy
dan flake8
).
Untuk menjalankan tes, cukup instal dependensi yang diperlukan melalui
$ pip install -e .[test]
Lalu, kamu bisa lari
$ pytest
dari root repositori.