Skip to main content

An actinia-core plugin which adds tiling endpoints to actinia-core

Project description

actinia-tiling-plugin

This is an example plugin for actinia-core which adds a "Hello World" endpoint to actinia-core.

You can run actinia-tiling-plugin as actinia-core plugin.

Installation

Use docker-compose for installation:

docker-compose -f docker/docker-compose.yml build
docker-compose -f docker/docker-compose.yml up -d

Installation hints

  • If you get an error like: ERROR: for docker_kvdb_1 Cannot start service valkey: network xxx not found you can try the following:
docker-compose -f docker/docker-compose.yml down
# remove all custom networks not used by a container
docker network prune
docker-compose -f docker/docker-compose.yml up -d

DEV setup

For a DEV setup you can use the docker/docker-compose.yml:

docker-compose -f docker/docker-compose.yml build
docker-compose -f docker/docker-compose.yml run --rm --service-ports --entrypoint sh actinia

# install the plugin
(cd /src/actinia-tiling-plugin && pip3 install .)
# start actinia-core with your plugin
gunicorn -b 0.0.0.0:8088 -w 1 --access-logfile=- -k gthread actinia_core.main:flask_app

Hints

  • If you have no .git folder in the plugin folder, you need to set the SETUPTOOLS_SCM_PRETEND_VERSION before installing the plugin:
export SETUPTOOLS_SCM_PRETEND_VERSION=0.0

Otherwise you will get an error like this LookupError: setuptools-scm was unable to detect version for '/src/actinia-tiling-plugin'..

  • If you make changes in code and nothing changes you can try to uninstall the plugin:
pip3 uninstall actinia-tiling-plugin.wsgi -y
rm -rf /usr/lib/python3.8/site-packages/actinia_tiling_plugin.wsgi-*.egg

Running tests

You can run the tests in the actinia docker:

docker build -f docker/actinia-tiling-plugin-test/Dockerfile -t actinia-tiling-plugin-test .

docker run -it actinia-tiling-plugin-test -i

cd /src/actinia-tiling-plugin/

# run all tests
make test

For debugging the test this might be helpful when a waitAsyncStatusAssertHTTP fails:

from flask.json import loads as json_loads
resp_data = json_loads(rv.data)
rv_user_id = resp_data["user_id"]
rv_resource_id = resp_data["resource_id"]
rv2 = self.server.get(URL_PREFIX + "/resources/%s/%s" % (rv_user_id, rv_resource_id), headers=self.user_auth_header)
resp_data2 = json_loads(rv2.data)

Small Example

actinia_base_url=http://localhost:8088/api/v3
mapset_url=${actinia_base_url}/projects/loc_25832/mapsets/tiling_usermapset
auth="actinia-gdi:actinia-gdi"

Grid Tiling Example

# grid tiling
# the region should be set correctly
json_reg=test_postbodies/set_region_for_epsg25832.json
curl -u ${auth} -X POST ${mapset_url}/processing_async -H 'accept: application/json' -H 'Content-Type: application/json' -d @${json_reg} | jq
curl -u ${auth} -X GET ${mapset_url}/info | jq

# create tiling grid
curl -u ${auth} -X GET ${mapset_url}/vector_layers | jq
json=test_postbodies/grid_tiling_pb.json
curl -u ${auth} -X POST ${mapset_url}/tiling_processes/grid -H 'accept: application/json' -H 'Content-Type: application/json' -d @${json} | jq
curl -u ${auth} -X GET ${mapset_url}/vector_layers | jq

# request tiling_processes
curl -u ${auth} -X GET ${mapset_url}/tiling_processes | jq
curl -u ${auth} -X GET ${mapset_url}/tiling_processes/grid | jq

Processing Example as preparation for the merge

# process - tile 1
json=test_postbodies/grid_1_calulation.json
curl -u ${auth} -X POST ${mapset_url}_tmp1/processing_async -H 'accept: application/json' -H 'Content-Type: application/json' -d @${json} | jq
curl -u ${auth} -X GET  "http://localhost:8088/api/v3/resources/actinia-gdi/resource_id-..." | jq
curl -u ${auth} -X GET ${mapset_url}_tmp1/vector_layers | jq
curl -u ${auth} -X GET ${mapset_url}_tmp1/raster_layers | jq
curl -u ${auth} -X GET ${mapset_url}_tmp1/strds | jq

# process - tile 2
json=test_postbodies/grid_2_calulation.json
curl -u ${auth} -X POST ${mapset_url}_tmp2/processing_async -H 'accept: application/json' -H 'Content-Type: application/json' -d @${json} | jq
curl -u ${auth} -X GET  "http://localhost:8088/api/v3/resources/actinia-gdi/resource_id-..." | jq

# process - tile 3
json=test_postbodies/grid_3_calulation.json
curl -u ${auth} -X POST ${mapset_url}_tmp3/processing_async -H 'accept: application/json' -H 'Content-Type: application/json' -d @${json} | jq
curl -u ${auth} -X GET  "http://localhost:8088/api/v3/resources/actinia-gdi/resource_id-..." | jq

Patch merge Example

json=test_postbodies/patch_merge_no_mapset_deletion.json
json=test_postbodies/patch_merge.json
curl -u ${auth} -X POST ${mapset_url}/merge_processes/patch -H 'accept: application/json' -H 'Content-Type: application/json' -d @${json} | jq
curl -u ${auth} -X GET ${mapset_url}/vector_layers | jq
curl -u ${auth} -X GET ${mapset_url}/raster_layers | jq
curl -u ${auth} -X GET ${mapset_url}/strds | jq

curl -u ${auth} -X GET ${actinia_base_url}/projects/loc_25832/mapsets | jq

TODO

  • Region statt Vector speichern (wie res setzen?)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

actinia_tiling_plugin-1.1.1.tar.gz (30.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

actinia_tiling_plugin-1.1.1-py3-none-any.whl (43.6 kB view details)

Uploaded Python 3

File details

Details for the file actinia_tiling_plugin-1.1.1.tar.gz.

File metadata

  • Download URL: actinia_tiling_plugin-1.1.1.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for actinia_tiling_plugin-1.1.1.tar.gz
Algorithm Hash digest
SHA256 4c8f42a3c1e58d572edd3091c7361ddd6677771168523cc011f2ed86f5590c3f
MD5 c1ce39883dd07fbf4ed721dc197d4d90
BLAKE2b-256 0e85b4a9375fb72c22e40b88c0a4ce6fc7b03f28dcf1ffeaadf99101c652a738

See more details on using hashes here.

File details

Details for the file actinia_tiling_plugin-1.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for actinia_tiling_plugin-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8799d55ffefed5d307dd7406f8219caca732eeb8385a004918394cacd8cc62a5
MD5 f807e1112a1d845409c5cc6d36653752
BLAKE2b-256 87fd182cd94cb60d7d047de3fb4a9e49066c8dc3b1d8405b10d8b7100213d596

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page