actinia-core


Nameactinia-core JSON
Version 4.13.1 PyPI version JSON
download
home_page
SummaryActinia Core is an open source REST API for scalable, distributed, high performance processing of geographical data that uses mainly GRASS GIS for computational tasks
upload_time2024-02-23 14:12:56
maintainer
docs_urlNone
authorCarmen Tawalika, Anika Weinmann, Guido Riembauer, Markus Metz, Julia Haas, Marc Jansen, Jorge A. Herrera Maldonado, Sören Gebbert, Markus Neteler, Momen Mawad, and more
requires_python>=3.8
license
keywords processing earth observation cloud-based processing rest api gis grass gis osgeo
VCS
bugtrack_url
requirements boto3 colorlog docutils Flask Flask-HTTPAuth Flask-RESTful flask-restful-swagger-2 Flask-Cors fluent-logger google-cloud google-cloud-bigquery google-cloud-storage gunicorn matplotlib passlib ply psutil python-json-logger python-keycloak python-magic Sphinx redis requests rq setuptools uWSGI wheel geopandas rasterio pystac PyJWT werkzeug pandas sentinelsat tqdm
Travis-CI No Travis.
coveralls test coverage
            # Actinia — The GRASS GIS REST API

Software [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5879231.svg)](https://doi.org/10.5281/zenodo.5879231)
Article [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2631917.svg)](https://doi.org/10.5281/zenodo.2631917)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Docker pulls](https://img.shields.io/docker/pulls/mundialis/actinia-core.svg)](https://hub.docker.com/r/mundialis/actinia-core)

**[Actinia](https://actinia.mundialis.de/)** is an open source REST API for scalable, distributed, high performance
processing of geographical data that mainly uses [GRASS GIS](https://grass.osgeo.org/) 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 an ephemeral databases. The computational results of ephemeral processing
are available via object storage as GeoTIFF files.

## API documentation

<!---
a more complete API documentation generated with Spinx was here: https://actinia.mundialis.de/api_docs
but no longer exists
--->

The full API documentation is available [here](https://redocly.github.io/redoc/?url=https://actinia.mundialis.de/latest/swagger.json&nocors)

## actinia command execution - actinia shell

There is also an option to interactively control actinia. For details,
see [here](https://github.com/actinia-org/ace).

## 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:

```
pip install actinia-core
```

## Installation with Docker

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

```
docker pull mundialis/actinia-core
```

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

Actinia is also available on [OSGeoLive](https://live.osgeo.org/en/overview/actinia_overview.html).

## Examples

### Data management

- List all locations that are available in the actinia persistent database:

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

- List all mapsets in the location latlong_wgs84:

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

- List all space-time raster datasets (STRDS) in location latlong_wgs84 and mapset Sentinel_timeseries:

```bash
curl -u 'demouser:gu3st!pa55w0rd' -X GET "https://actinia.mundialis.de/api/v3/locations/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/locations/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 S2A_MSIL1C_20170212T104141_N0204_R008_T31TGJ_20170212T104138:

```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](https://actinia.mundialis.de/api/v3/swagger.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](https://pre-commit.com)
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 <actinia-core_source_dir>

# 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](.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](https://contrib.rocks/image?repo=actinia-org/actinia-core "actinia-core contributors")](https://github.com/actinia-org/actinia-core/graphs/contributors)

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "actinia-core",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "processing,earth observation,cloud-based processing,rest api,gis,grass gis,osgeo",
    "author": "Carmen Tawalika, Anika Weinmann, Guido Riembauer, Markus Metz, Julia Haas, Marc Jansen, Jorge A. Herrera Maldonado, S\u00f6ren Gebbert, Markus Neteler, Momen Mawad, and more",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/cf/98/ff46159df25e1c808930af9953e622028c412346c19b2bd22c2ad0c58dfa/actinia-core-4.13.1.tar.gz",
    "platform": null,
    "description": "# Actinia \u2014 The GRASS GIS REST API\n\nSoftware [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5879231.svg)](https://doi.org/10.5281/zenodo.5879231)\nArticle [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2631917.svg)](https://doi.org/10.5281/zenodo.2631917)\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Docker pulls](https://img.shields.io/docker/pulls/mundialis/actinia-core.svg)](https://hub.docker.com/r/mundialis/actinia-core)\n\n**[Actinia](https://actinia.mundialis.de/)** is an open source REST API for scalable, distributed, high performance\nprocessing of geographical data that mainly uses [GRASS GIS](https://grass.osgeo.org/) for computational tasks.\n\nIt provides a REST API to process satellite images, time series of satellite images,\narbitrary raster data with geographical relations and vector data.\n\nThe REST interface allows to access, manage and manipulate the GRASS GIS\ndatabase via HTTP GET, PUT, POST and DELETE requests and to process raster, vector and\ntime series data located in a persistent GRASS GIS database.\n**Actinia** allows the processing of cloud based data, for example all Landsat 4-8 scenes as well as all\nSentinel-2 scenes in an ephemeral databases. The computational results of ephemeral processing\nare available via object storage as GeoTIFF files.\n\n## API documentation\n\n<!---\na more complete API documentation generated with Spinx was here: https://actinia.mundialis.de/api_docs\nbut no longer exists\n--->\n\nThe full API documentation is available [here](https://redocly.github.io/redoc/?url=https://actinia.mundialis.de/latest/swagger.json&nocors)\n\n## actinia command execution - actinia shell\n\nThere is also an option to interactively control actinia. For details,\nsee [here](https://github.com/actinia-org/ace).\n\n## Installation\n\nRequired system packages:\n\n- alpine: `apk add python3 py3-pip`\n  As not all python packages are pre-build for alpine, they need to be build during installation. For this some system packages are required:\n  `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`\n- ubuntu: `apt install -y python3 python3-pip`\n\nAnd then install from pypi:\n\n```\npip install actinia-core\n```\n\n## Installation with Docker\n\nDocker images are available from https://hub.docker.com/r/mundialis/actinia-core\n\n```\ndocker pull mundialis/actinia-core\n```\n\nFor own deployments or local dev-setup, see the `docker/` subfolder.\n\nActinia is also available on [OSGeoLive](https://live.osgeo.org/en/overview/actinia_overview.html).\n\n## Examples\n\n### Data management\n\n- List all locations that are available in the actinia persistent database:\n\n```bash\ncurl -u 'demouser:gu3st!pa55w0rd' -X GET \"https://actinia.mundialis.de/api/v3/locations\"\n```\n\n- List all mapsets in the location latlong_wgs84:\n\n```bash\ncurl -u 'demouser:gu3st!pa55w0rd' -X GET \"https://actinia.mundialis.de/api/v3/locations/latlong_wgs84/mapsets\"\n```\n\n- List all space-time raster datasets (STRDS) in location latlong_wgs84 and mapset Sentinel_timeseries:\n\n```bash\ncurl -u 'demouser:gu3st!pa55w0rd' -X GET \"https://actinia.mundialis.de/api/v3/locations/latlong_wgs84/mapsets/modis_ndvi_global/strds\"\n```\n\n- List all raster map layers of the STRDS:\n\n```bash\ncurl -u 'demouser:gu3st!pa55w0rd' -X GET \"https://actinia.mundialis.de/api/v3/locations/latlong_wgs84/mapsets/modis_ndvi_global/strds/ndvi_16_5600m/raster_layers\"\n```\n\n### Landsat and Sentinel-2 NDVI computation\n\n- Compute the NDVI of the top of athmosphere (TOAR) corrected Landsat4 scene LC80440342016259LGN00:\n\n```bash\ncurl -u 'demouser:gu3st!pa55w0rd' -X POST \"https://actinia.mundialis.de/api/v3/landsat_process/LC80440342016259LGN00/TOAR/NDVI\"\n```\n\n- NDVI computation of Sentinel-2A scene S2A_MSIL1C_20170212T104141_N0204_R008_T31TGJ_20170212T104138:\n\n```bash\ncurl -u 'demouser:gu3st!pa55w0rd' -X POST \"https://actinia.mundialis.de/api/v3/sentinel2_process/ndvi/S2A_MSIL1C_20170212T104141_N0204_R008_T31TGJ_20170212T104138\"\n```\n\nThe results of the asynchronous computations are available as GeoTIFF file in a cloud storage for download.\n\n### List of available endpoints\n\nTo see a simple **list of endpoints** (and more), consult the \"paths\" section in the [API JSON](https://actinia.mundialis.de/api/v3/swagger.json); or, to list the available endpoints on command line, run\n\n```bash\n# sudo npm install -g json\ncurl -u 'demouser:gu3st!pa55w0rd' -X GET https://actinia.mundialis.de/api/v3/swagger.json | json paths | json -ka\n```\n\n## Development\n\n### Use pre-commit\n\nIt is highly recommended to install and use [pre-commit](https://pre-commit.com)\nbefore submitting any new or modified code or any other content. The pre-commit\nGit hooks set checks validity and executes automated formatting for\na range of file formats, including Python. Pre-commit installs\nall necessary tools in a virtual environment upon first use.\n\nIf you never used pre-commit before, you must start by installing it on your\nsystem. You only do it once:\n\n```bash\npython -m pip install pre-commit\n```\n\nPre-commit must then be activated in the code repository. Change the directory\nto the root folder and use the `install` command:\n\n```bash\ncd <actinia-core_source_dir>\n\n# once per repo\npre-commit install\n```\n\nPre-commit will then be automatically triggered by the `git commit` command. If\nit finds any problem it will abort the commit and try to solve it automatically.\nIn that case review the changes and run again `git add` and\n`git commit`.\n\nIt is also possible to run pre-commit manually, e.g:\n\n```bash\npre-commit run flake8 --all-files\npre-commit run black --all-files\n# pre-commit run yamllint --all-files\n# pre-commit run markdownlint --all-files\n```\n\nOr to target a specific set of files:\n\n```bash\npre-commit run --files src/*\n```\n\nThe pre-commit hooks set is defined in\n[.pre-commit-config.yaml](.pre-commit-config.yaml).\n\nIt is possible to temporally disable the pre-commit hooks in the repo, e.g. while\nworking on older branches:\n\n```bash\npre-commit uninstall\n```\n\nAnd to reactivate pre-commit again:\n\n```bash\ngit switch main\npre-commit install\n```\n\n## Thanks to all contributors \u2764\n\n[![actinia-core contributors](https://contrib.rocks/image?repo=actinia-org/actinia-core \"actinia-core contributors\")](https://github.com/actinia-org/actinia-core/graphs/contributors)\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "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",
    "version": "4.13.1",
    "project_urls": {
        "API_Docs": "https://redocly.github.io/redoc/?url=https://actinia.mundialis.de/latest/swagger.json",
        "Homepage": "https://github.com/actinia-org/actinia_core",
        "Tutorial": "https://actinia-org.github.io/actinia_core"
    },
    "split_keywords": [
        "processing",
        "earth observation",
        "cloud-based processing",
        "rest api",
        "gis",
        "grass gis",
        "osgeo"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5b830a5dbfff8ddc574bbb5356f57d343896a034a32df913cf86bedf445b4f3c",
                "md5": "49cf2c06a039a82f577066c3a66bdd1a",
                "sha256": "9473e2ba98722f447bc1f9ad6e710c04b08a05d689864fea297785104709452c"
            },
            "downloads": -1,
            "filename": "actinia_core-4.13.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "49cf2c06a039a82f577066c3a66bdd1a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 357456,
            "upload_time": "2024-02-23T14:12:55",
            "upload_time_iso_8601": "2024-02-23T14:12:55.244874Z",
            "url": "https://files.pythonhosted.org/packages/5b/83/0a5dbfff8ddc574bbb5356f57d343896a034a32df913cf86bedf445b4f3c/actinia_core-4.13.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cf98ff46159df25e1c808930af9953e622028c412346c19b2bd22c2ad0c58dfa",
                "md5": "344860b7d20e2f6dba6492224148027a",
                "sha256": "7200177330513c3f8030a45412affee54183af3144cc952694f8078dba02cca7"
            },
            "downloads": -1,
            "filename": "actinia-core-4.13.1.tar.gz",
            "has_sig": false,
            "md5_digest": "344860b7d20e2f6dba6492224148027a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 266666,
            "upload_time": "2024-02-23T14:12:56",
            "upload_time_iso_8601": "2024-02-23T14:12:56.816964Z",
            "url": "https://files.pythonhosted.org/packages/cf/98/ff46159df25e1c808930af9953e622028c412346c19b2bd22c2ad0c58dfa/actinia-core-4.13.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-23 14:12:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "actinia-org",
    "github_project": "actinia_core",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [
        {
            "name": "boto3",
            "specs": [
                [
                    ">=",
                    "1.6.6"
                ]
            ]
        },
        {
            "name": "colorlog",
            "specs": [
                [
                    ">=",
                    "4.2.1"
                ]
            ]
        },
        {
            "name": "docutils",
            "specs": [
                [
                    "==",
                    "0.20.1"
                ]
            ]
        },
        {
            "name": "Flask",
            "specs": [
                [
                    ">=",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "Flask-HTTPAuth",
            "specs": [
                [
                    ">=",
                    "3.2.3"
                ]
            ]
        },
        {
            "name": "Flask-RESTful",
            "specs": [
                [
                    ">=",
                    "0.3.9"
                ]
            ]
        },
        {
            "name": "flask-restful-swagger-2",
            "specs": []
        },
        {
            "name": "Flask-Cors",
            "specs": [
                [
                    ">=",
                    "3.0.3"
                ]
            ]
        },
        {
            "name": "fluent-logger",
            "specs": [
                [
                    ">=",
                    "0.9.4"
                ]
            ]
        },
        {
            "name": "google-cloud",
            "specs": [
                [
                    ">=",
                    "0.32.0"
                ]
            ]
        },
        {
            "name": "google-cloud-bigquery",
            "specs": [
                [
                    "<=",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "google-cloud-storage",
            "specs": [
                [
                    ">=",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "gunicorn",
            "specs": [
                [
                    ">=",
                    "19.9.0"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    "==",
                    "3.3.4"
                ]
            ]
        },
        {
            "name": "passlib",
            "specs": [
                [
                    ">=",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "ply",
            "specs": [
                [
                    ">=",
                    "3.11"
                ]
            ]
        },
        {
            "name": "psutil",
            "specs": [
                [
                    ">=",
                    "5.7.0"
                ]
            ]
        },
        {
            "name": "python-json-logger",
            "specs": []
        },
        {
            "name": "python-keycloak",
            "specs": [
                [
                    ">=",
                    "2.6.0"
                ]
            ]
        },
        {
            "name": "python-magic",
            "specs": [
                [
                    ">=",
                    "0.4.15"
                ]
            ]
        },
        {
            "name": "Sphinx",
            "specs": [
                [
                    ">=",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "redis",
            "specs": [
                [
                    ">=",
                    "2.10.6"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.20.0"
                ]
            ]
        },
        {
            "name": "rq",
            "specs": [
                [
                    ">=",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "setuptools",
            "specs": []
        },
        {
            "name": "uWSGI",
            "specs": [
                [
                    ">=",
                    "2.0.17"
                ]
            ]
        },
        {
            "name": "wheel",
            "specs": []
        },
        {
            "name": "geopandas",
            "specs": []
        },
        {
            "name": "rasterio",
            "specs": [
                [
                    "==",
                    "1.3.4"
                ]
            ]
        },
        {
            "name": "pystac",
            "specs": [
                [
                    "==",
                    "0.5.6"
                ]
            ]
        },
        {
            "name": "PyJWT",
            "specs": []
        },
        {
            "name": "werkzeug",
            "specs": [
                [
                    "==",
                    "3.0.1"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": []
        },
        {
            "name": "sentinelsat",
            "specs": []
        },
        {
            "name": "tqdm",
            "specs": []
        }
    ],
    "lcname": "actinia-core"
}
        
Elapsed time: 0.20056s