The spatial data infrastructure for the KLIPS project.
create custom configuration:
# create your personal environment variables config
cp .env.example .env
# create your personal set of config files
cp configs-example/* configs/development:
# expects the referenced repo located next to this directory
docker compose -f docker-compose.yml -f docker-compose.localdev.yml up --build -dtest:
# download latest images if they have changed
docker-compose -f docker-compose.yml pull
docker-compose -f docker-compose.yml up -dAll COGs will finally be in the mount cog_data and not in the mocked_webspace. The latter is only for internal testing.
To COGs can be reached via http://localhost/cog/. The trailing / (slash) is important here, otherwise it does not work.
For pygeoapi it is important to that the files follow this naming pattern: dresden_20221101T1000Z.tif
An example directory could look like this:
.
└── dresden
└── dresden_temperature
├── dresden_20221101T1000Z.tif
├── dresden_20221102T1000Z.tif
├── dresden_20221103T1000Z.tif
├── dresden_20221104T1000Z.tif
└── dresden_20221105T1000Z.tif
There are several nginx services within the docker setup. The service klips-nginx serves as a reverse-proxy and forwards all requests from clients to the backend applications or webspaces. The specific nginx configuration can be found in ./nginx/default.conf
The directory workflows contains workflows that can be sent to the dispatcher.
For development it can be handy to send messages via the commandline using the tool rabbitmqadmin. There are some examples stored in workflows.
cat workflows/publish-geotiff.json | rabbitmqadmin -u rabbit -p rabbit publish exchange=amq.default routing_key=dispatcherIt can be downloaded either from your local RabbitMQ instance via: http://localhost:15672/cli/rabbitmqadmin
Or from GitHub via https://raw.githubusercontent.com/rabbitmq/rabbitmq-server/v3.10.0/deps/rabbitmq_management/bin/rabbitmqadmin - Make sure to select the version matching your RabbitMQ instance.
IMPORTANT Adapt the username and the password if you are on production!
# Langenfeld
curl \
--request POST \
--user klips:klips \
--header 'Content-Type: application/json' \
--data @klips-api/example_requests/send-geotiff-langenfeld.json \
'http://localhost:3000/api/job'
# Dresden
curl \
--request POST \
--user klips:klips \
--header 'Content-Type: application/json' \
--data @klips-api/example_requests/send-geotiff-dresden.json \
'http://localhost:3000/api/job'The directory workflows contains workflows that can be sent to the dispatcher using amqp-publish (installation: apt install amqp-tools)
amqp-publish \
-u=amqp://rabbit:rabbit@localhost:5672 \
-r=dispatcher < workflows/publish-geotiff-with-validator.jsonBSD 2-Clause License (see LICENSE document)