actinia-core

Actinia Core is an open source REST API for scalable, distributed, high performance processing of geographical data that uses mainly GRASS GIS for computational tasks (DOI: https://doi.org/10.5281/zenodo.5879231) | Tutorial: https://actinia-org.github.io/actinia-core/ | Docker: https://hub.docker.com/r/mundialis/actinia-core

https://github.com/actinia-org/actinia-core

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.4%) to scientific vocabulary

Keywords

actinia earth-observation geospatial geospatial-analysis gis grass-gis hacktoberfest opensource rest-api

Keywords from Contributors

zsh-plugin argument-parser interactive mot reaction scripts mesh interpretability profiles sequences
Last synced: 4 months ago · JSON representation ·

Repository

Actinia Core is an open source REST API for scalable, distributed, high performance processing of geographical data that uses mainly GRASS GIS for computational tasks (DOI: https://doi.org/10.5281/zenodo.5879231) | Tutorial: https://actinia-org.github.io/actinia-core/ | Docker: https://hub.docker.com/r/mundialis/actinia-core

Basic Info
Statistics
  • Stars: 91
  • Watchers: 12
  • Forks: 23
  • Open Issues: 64
  • Releases: 98
Topics
actinia earth-observation geospatial geospatial-analysis gis grass-gis hacktoberfest opensource rest-api
Created almost 8 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Citation Authors

README.md

Actinia — The GRASS GIS REST API

Software DOI Article DOI License: GPL v3 Docker pulls

Actinia is an open source REST API for scalable, distributed, high performance processing of geographical data that mainly uses GRASS GIS for computational tasks.

It provides a REST API to process satellite images, time series of satellite images, arbitrary raster data with geographical relations and vector data.

The REST interface allows to access, manage and manipulate the GRASS GIS database via HTTP GET, PUT, POST and DELETE requests and to process raster, vector and time series data located in a persistent GRASS GIS database. Actinia allows the processing of cloud-based data, for example all Landsat 4-8 scenes as well as all Sentinel-2 scenes in ephemeral databases. The computational results of ephemeral processing are available via object storage as GeoTIFF files.

API documentation

The full API documentation is available here

actinia command execution - actinia shell

There is also an option to interactively control actinia. For details, see here.

Installation

Required system packages:

  • alpine: apk add python3 py3-pip As not all python packages are pre-build for alpine, they need to be build during installation. For this some system packages are required: apk add python3 py3-pip python3-dev gcc musl-dev linux-headers build-base gdal gdal-tools gdal-dev proj proj-util proj-dev geos-dev py3-numpy-dev
  • ubuntu: apt install -y python3 python3-pip

And then install from pypi:

bash pip install actinia-core

Installation with Docker

Docker images are available from https://hub.docker.com/r/mundialis/actinia-core

bash docker pull mundialis/actinia-core

For own deployments or local dev-setup, see the docker/ subfolder.

Actinia is also available on OSGeoLive.

Examples

Data management

  • List all projects that are available in the actinia persistent database:

bash curl -u 'demouser:gu3st!pa55w0rd' -X GET "https://actinia.mundialis.de/api/v3/projects"

  • List all mapsets in the project latlong_wgs84:

bash curl -u 'demouser:gu3st!pa55w0rd' -X GET "https://actinia.mundialis.de/api/v3/projects/latlong_wgs84/mapsets"

  • List all space-time raster datasets (STRDS) in project latlongwgs84 and mapset Sentineltimeseries:

bash curl -u 'demouser:gu3st!pa55w0rd' -X GET "https://actinia.mundialis.de/api/v3/projects/latlong_wgs84/mapsets/modis_ndvi_global/strds"

  • List all raster map layers of the STRDS:

bash curl -u 'demouser:gu3st!pa55w0rd' -X GET "https://actinia.mundialis.de/api/v3/projects/latlong_wgs84/mapsets/modis_ndvi_global/strds/ndvi_16_5600m/raster_layers"

Landsat and Sentinel-2 NDVI computation

  • Compute the NDVI of the top of athmosphere (TOAR) corrected Landsat4 scene LC80440342016259LGN00:

bash curl -u 'demouser:gu3st!pa55w0rd' -X POST "https://actinia.mundialis.de/api/v3/landsat_process/LC80440342016259LGN00/TOAR/NDVI"

  • NDVI computation of Sentinel-2A scene S2AMSIL1C20170212T104141N0204R008T31TGJ20170212T104138:

bash curl -u 'demouser:gu3st!pa55w0rd' -X POST "https://actinia.mundialis.de/api/v3/sentinel2_process/ndvi/S2A_MSIL1C_20170212T104141_N0204_R008_T31TGJ_20170212T104138"

The results of the asynchronous computations are available as GeoTIFF file in a cloud storage for download.

List of available endpoints

To see a simple list of endpoints (and more), consult the "paths" section in the API JSON; or, to list the available endpoints on command line, run:

```bash

sudo npm install -g json

curl -u 'demouser:gu3st!pa55w0rd' -X GET https://actinia.mundialis.de/api/v3/swagger.json | json paths | json -ka ```

Development

Use pre-commit

It is highly recommended to install and use pre-commit before submitting any new or modified code or any other content. The pre-commit Git hooks set checks validity and executes automated formatting for a range of file formats, including Python. Pre-commit installs all necessary tools in a virtual environment upon first use.

If you never used pre-commit before, you must start by installing it on your system. You only do it once:

bash python -m pip install pre-commit

Pre-commit must then be activated in the code repository. Change the directory to the root folder and use the install command:

```bash cd

once per repo

pre-commit install ```

Pre-commit will then be automatically triggered by the git commit command. If it finds any problem it will abort the commit and try to solve it automatically. In that case review the changes and run again git add and git commit.

It is also possible to run pre-commit manually, e.g:

```bash pre-commit run flake8 --all-files pre-commit run black --all-files

pre-commit run yamllint --all-files

pre-commit run markdownlint --all-files

```

Or to target a specific set of files:

bash pre-commit run --files src/*

The pre-commit hooks set is defined in .pre-commit-config.yaml.

It is possible to temporally disable the pre-commit hooks in the repo, e.g. while working on older branches:

bash pre-commit uninstall

And to reactivate pre-commit again:

bash git switch main pre-commit install

Thanks to all contributors ❤

actinia-core contributors

Owner

  • Name: actinia
  • Login: actinia-org
  • Kind: organization

The geoprocessing platform actinia analyses large volumes of Earth-observation and geodata in the cloud. Repo overview at https://actinia-org.github.io/

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.

cff-version: 1.2.0
title: actinia-core
abstract: Actinia is an open source REST API for scalable, distributed, high performance processing of geographical data.
message: If you use this software, please cite it using the metadata from this file.
type: software
version: 7.0.1
doi: 10.5281/zenodo.7437895
date-released: 2025-07-18
license: GPL-3.0
repository-code: https://github.com/actinia-org/actinia-core
keywords:
 - cloud-based processing
 - geospatial analysis
 - Earth observation
 - GIS
 - REST API
 - Open Source
 - GRASS GIS
authors:
  - given-names: Carmen
    family-names: Tawalika
    email: tawalika@mundialis.de
    affiliation: mundialis GmbH & Co. KG
  - given-names: Anika
    family-names: Weinmann
    affiliation: mundialis GmbH & Co. KG
    email: weinmann@mundialis.de
  - given-names: Guido
    family-names: Riembauer
    email: riembauer@mundialis.de
    affiliation: mundialis GmbH & Co. KG
  - given-names: Markus
    family-names: Metz
    email: metz@mundialis.de
    affiliation: mundialis GmbH & Co. KG
    orcid: https://orcid.org/0000-0002-4038-8754
  - given-names: Julia
    family-names: Haas
    email: haas@mundialis.de
    affiliation: mundialis GmbH & Co. KG
    orcid: https://orcid.org/0000-0002-6040-0669
  - given-names: Marc
    family-names: Jansen
    email: jansen@mundialis.de
    affiliation: mundialis GmbH & Co. KG
  - given-names: Jorge A.
    family-names: Herrera Maldonado
    email: herreram.jahm@gmail.com
  - given-names: Sören
    family-names: Gebbert
    email: soerengebbert@gmail.com
  - given-names: Markus
    family-names: Neteler
    email: neteler@mundialis.de
    affiliation: mundialis GmbH & Co. KG
    orcid: https://orcid.org/0000-0003-1916-1966
  - given-names: Momen
    family-names: Mawad
    email: mawad@mundialis.de
    affiliation: mundialis GmbH & Co. KG
  - given-names: Ondrej
    family-names: Pesek
    email: pesej.ondrek@gmail.com

GitHub Events

Total
  • Fork event: 1
  • Create event: 66
  • Release event: 4
  • Issues event: 6
  • Watch event: 7
  • Delete event: 49
  • Member event: 1
  • Issue comment event: 23
  • Push event: 242
  • Gollum event: 6
  • Pull request review event: 61
  • Pull request review comment event: 49
  • Pull request event: 134
Last Year
  • Fork event: 1
  • Create event: 66
  • Release event: 4
  • Issues event: 6
  • Watch event: 7
  • Delete event: 49
  • Member event: 1
  • Issue comment event: 23
  • Push event: 242
  • Gollum event: 6
  • Pull request review event: 61
  • Pull request review comment event: 49
  • Pull request event: 134

Committers

Last synced: over 1 year ago

All Time
  • Total Commits: 774
  • Total Committers: 32
  • Avg Commits per committer: 24.188
  • Development Distribution Score (DDS): 0.807
Past Year
  • Commits: 92
  • Committers: 8
  • Avg Commits per committer: 11.5
  • Development Distribution Score (DDS): 0.63
Top Committers
Name Email Commits
Markus Neteler n****r@g****m 149
Carmen Tawalika m****a 121
Anika Weinmann 3****n 83
huhabla m****d 60
Carmen c****a@g****m 55
Soeren Gebbert s****t@g****m 46
Carmen Tawalika t****a@m****e 45
AnikaBettge 3****e 31
renovate[bot] 2****] 31
Marc Jansen j****n@t****e 28
Anika Bettge b****e@m****e 19
Julia Haas 8****s 13
Guido Riembauer r****r@m****e 13
Jorge Andres Herrera Maldonado h****m@g****m 10
Soeren Gebbert s****t@g****m 10
Markus Metz m****k@g****m 9
anikaweinmann a****n@m****e 9
linakrisztian 1****n 9
Guido Riembauer 6****r 9
Markus Metz 3****m 5
Jorge Andrés Herrera Maldonado 3****a 5
Julia Haas h****s@m****e 3
Momen 5****d 2
Jonas Eberle j****e@g****e 1
Momen-Mawad e****3@g****m 1
Anika S Halota a****a@g****m 1
mundialis developer 3****v 1
dependabot[bot] 4****] 1
Hinrich Paulsen p****n 1
Alexey Shiklomanov a****v@g****m 1
and 2 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 37
  • Total pull requests: 301
  • Average time to close issues: over 1 year
  • Average time to close pull requests: 21 days
  • Total issue authors: 9
  • Total pull request authors: 12
  • Average comments per issue: 1.54
  • Average comments per pull request: 0.44
  • Merged pull requests: 231
  • Bot issues: 1
  • Bot pull requests: 137
Past Year
  • Issues: 5
  • Pull requests: 116
  • Average time to close issues: 3 months
  • Average time to close pull requests: 16 days
  • Issue authors: 3
  • Pull request authors: 7
  • Average comments per issue: 0.6
  • Average comments per pull request: 0.1
  • Merged pull requests: 71
  • Bot issues: 0
  • Bot pull requests: 86
Top Authors
Issue Authors
  • mmacata (19)
  • neteler (8)
  • ninsbl (5)
  • renovate[bot] (2)
  • anikaweinmann (2)
  • linakrisztian (1)
  • jonas-eberle (1)
  • kalxas (1)
  • juleshaas (1)
Pull Request Authors
  • renovate[bot] (198)
  • mmacata (83)
  • anikaweinmann (45)
  • neteler (25)
  • linakrisztian (10)
  • marcjansen (5)
  • ninsbl (3)
  • dependabot[bot] (3)
  • Haoyu-Gao (2)
  • griembauer (2)
  • metzm (1)
  • pesekon2 (1)
  • juleshaas (1)
Top Labels
Issue Labels
bug (10) enhancement (7) actinia as a service (7) cicd (4) plugin (4) documentation (3) actinia roadmap (3) prio (2) refactoring (2) dependencies (2) good first issue (1) question (1) help wanted (1) WIP (1) breaking change (1)
Pull Request Labels
cicd (9) documentation (6) dependencies (5) bug (3) invalid (2) enhancement (2) actinia as a service (1) question (1) refactoring (1)

Dependencies

requirements.txt pypi
  • Flask ==1.1.4
  • Flask-Cors >=3.0.3
  • Flask-HTTPAuth >=3.2.3
  • Flask-RESTful >=0.3.6
  • MarkupSafe ==2.0.1
  • Sphinx >=1.7.1
  • boto3 >=1.6.6
  • colorlog >=4.2.1
  • docutils ==0.15
  • flask-restful-swagger-2 *
  • fluent-logger >=0.9.4
  • geopandas *
  • google-cloud >=0.32.0
  • google-cloud-bigquery <=3.0.0
  • google-cloud-storage >=1.6.0
  • gunicorn >=19.9.0
  • joblib ==0.15.1
  • matplotlib ==3.3.4
  • pandas *
  • passlib >=1.7.1
  • ply >=3.11
  • psutil >=5.7.0
  • pystac ==0.5.6
  • python-json-logger *
  • python-magic >=0.4.15
  • rasterio ==1.2.10
  • redis >=2.10.6
  • requests >=2.20.0
  • rq >=0.10.0
  • sentinelsat *
  • setuptools *
  • threadpoolctl ==2.1.0
  • tqdm *
  • uWSGI >=2.0.17
  • wheel *
requirements_ubuntu19.txt pypi
  • Flask >=0.12.3
  • Flask-Cors >=3.0.3
  • Flask-HTTPAuth >=3.2.3
  • Flask-RESTful >=0.3.6
  • Shapely *
  • Sphinx >=1.7.1
  • boto3 >=1.6.6
  • colorlog >=4.2.1
  • docutils >=0.14
  • flask-restful-swagger-2 *
  • fluent-logger >=0.9.4
  • geopandas ==0.8.1
  • google-cloud *
  • google-cloud-bigquery *
  • google-cloud-storage *
  • gunicorn >=19.9.0
  • matplotlib *
  • numpy >=1.15.4
  • pandas *
  • passlib >=1.7.1
  • ply >=3.11
  • psutil >=5.7.0
  • pyproj ==2.6.1
  • pystac ==0.5.6
  • python-json-logger *
  • python-magic >=0.4.15
  • rasterio ==1.2.10
  • redis >=2.10.6
  • requests >=2.20.0
  • rq >=0.10.0
  • scikit-learn *
  • six >=1.13.0
  • uWSGI >=2.0.17
  • wheel *
.github/docker-action/action.yml actions
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
.github/workflows/black.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/codeql-analysis.yml actions
  • actions/checkout v2 composite
  • github/codeql-action/analyze v1 composite
  • github/codeql-action/autobuild v1 composite
  • github/codeql-action/init v1 composite
.github/workflows/deploy_docs.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/docker.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/metadata-action v3 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
.github/workflows/flake8.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/python-publish.yml actions
  • actions/checkout v2 composite
  • softprops/action-gh-release v1 composite
.github/workflows/tests.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/setup-buildx-action v1 composite
docker/actinia-core-alpine/Dockerfile docker
  • actinia_installation latest build
  • build-base latest build
  • mundialis/actinia alpine-dependencies-2022-11-18 build
  • mundialis/actinia alpine-dependencies-v1 build
  • mundialis/grass-py3-pdal releasebranch_8_2-alpine build
docker/actinia-core-dev/Dockerfile docker
  • mundialis/actinia-core latest build
docker/actinia-core-tests/Dockerfile docker
  • mundialis/actinia-core latest build
docker/docker-compose-dev.yml docker
  • redis 5.0.4-alpine
docker/docker-compose.yml docker
  • mundialis/actinia-core 4.2.1
  • redis 5.0.4-alpine