Create a highly customizable serverless
tile server for CBERS-4 AWS Public Dataset.
This project is based on rio-tiler python library.
Hosted since late 2017, CBERS-4 data on AWS offers an alternative to cbers and Sentinel data (https://aws.amazon.com/fr/blogs/publicsector/the-china-brazil-earth-resources-satellite-mission/).
China–Brazil Earth Resources Satellite 4 (CBERS-4), also known as Ziyuan I-04 or Ziyuan 1E, is a remote sensing satellite intended for operation as part of the China–Brazil Earth Resources Satellite programme between the China Centre for Resources Satellite Data and Application and Brazil's National Institute for Space Research. The fifth CBERS satellite to fly, it was successfully launched on 7 December 2014. It replaces CBERS-3 which was lost in a launch failure in December 2013.
source: https://en.wikipedia.org/wiki/CBERS-4
# Build Amazon linux AMI docker container + Install Python modules + create package
git clone https://github.com/mapbox/cbers-tiler.git
cd cbers-tiler/
make all
One of the easiest way to Build and Deploy a Lambda function is to use Serverless toolkit. We took care of the building
part with docker so we will just ask Serverless to only upload our package file to AWS S3, to setup AWS Lambda and AWS API Gateway.
#configure serverless (https://serverless.com/framework/docs/providers/aws/guide/credentials/)
npm install
sls deploy
:tada: You should be all set there.
The viewer/
directory contains a UI example to use with your new Lambda cbers tiler endpoint. It combine the power of mapbox-gl and the nice developmentseed sat-api to create a simple and fast cbers-viewer.
To be able to run it, edit those two lines in viewer/js/app.js
// viewer/js/app.js
3 mapboxgl.accessToken = '{YOUR-MAPBOX-TOKEN}';
4 const cbers_tiler_url = "{YOUR-API-GATEWAY-URL}";
One AWS ƛ call to get min/max percent cut value for all the bands and bounds
Path: /cbers/metdata/{cbers scene id}
Inputs:
Options:
Output: (dict)
Example: <api-gateway-url>/cbers/metadata/CBERS_4_MUX_20170915_166_105_L4?pmin=5&pmax=95
Parallel AWS ƛ calls (one per mercator tile) to retrieve corresponding cbers data
Path: /cbers/tiles/{cbers scene id}/{z}/{x}/{y}.{ext}
Inputs:
Options:
-
delimited rgb histogram min/max (default: 0,16000-0,16000-0,16000 )Output:
Example:
<api-gateway-url>/cbers/tiles/CBERS_4_MUX_20170915_166_105_L4/8/71/102.png
<api-gateway-url>/cbers/tiles/CBERS_4_MUX_20170915_166_105_L4/8/71/102.png?rgb=5,4,3&histo=100,3000-130,2700-500,4500&tile=1024