../../_images/logo_actinia.png ../../_images/OSGeo_community.png

Megjegyzés

Ez a projekt csak az OSGeoLive virtuális gépben (VMDK) található meg

actinia gyorstalpaló

Az actinia egy nyílt forráskódú REST API térinformatikai adatok skálázható, megosztott, nagy teljesítményű feldolgozásához, mely többnyire GRASS GIS-t használ a számítási feladatokhoz. Az actinia egy REST API-t biztosít műholdképek, műholdkép idősorok. raszter és vektor adatok feldolgozásához.

Az actinia-t különböző módokon használhatjuk:

  • curl vagy hasonló parancsori eszköz

  • Jupyter jegyzettömbön keresztül

  • a Python interfész

  • a Postman vagy RESTman bövítmény a böngészőkhöz

  • GRASS GIS munkafolyamat nyitása és az ace (actinia command execution) eszköz használata

  • más interfész REST API-hoz

Ebben a gyorstalpalóban a GRASS GIS-t használjuk a parancsok indítására a munkamenetből az actinia szerver felé (mely maga is GRASS GIS-t használ). Az elképzelés az, hogy gyorsan dolgozzunk ki egy munkafolyamatot helyben, kis adathalmazzal,majd hajtsuk végre a szerveren.

actinia használata Jupyter jegyzettömbbel

Számos Jupyter jegyzettömb van az actinia-hoz itt https://github.com/actinia-org/actinia-jupyter

Bevezetés az ac-ba - actinia parancs végrehajtás

Az ace eszköz (részletek <https://neteler.gitlab.io/actinia-introduction/#controlling-actinia-from-a-running-grass-gis-session>`_)) lehetővé teszi egy GRASS GIS parancs vagy a GRASS GIS parancsok listájának végrehajtását egy actinia REST szolgáltatáson (https://actinia.mundialis.de/). Továbbá munkakezelést is biztosít, a képesség, hogy a felhasználó által elérhető helyeket, térképhalmazokat, és térkép rétegeket listázzon továbbá térképhalmazokat hozzon létre és töröljön.

Az ace eszközt egy aktív GRASS GIS munkamenetből kell végrehajtani. Ezzel a paranccsal telepíthető g.extension extension=ace url=https://github.com/actinia-org/ace.

Minden parancsot egy tiszavirág életű adatbázisban hajtunk végre alapértelmezés szerint. Ezért az elkészített outputot exportálni kell a kibővített GRASS parancsok használatával.

A mapset=MAPSET_NAME beállítás lehetővé teszi a parancsok végrehajtását az állandó felhasználói adatbázisban. Ez használható a location=LOCATION_NAME paraméterrel együtt.

A környezet beállítása

Győződjön meg róla, hogy egy GRASS GIS munkamenetben futtatja a következő parancsokat.

A felhasználónak a következő környezeti változókat kell beállítania az actinia szerverhez és a hitelesítő adatokhoz:

# set credentials and REST server URL
export ACTINIA_USER='demouser'
export ACTINIA_PASSWORD='gu3st!pa55w0rd'
export ACTINIA_URL='https://actinia.mundialis.de/latest'

Hozzáférés a példa adatokhoz

A kiválasztott adatok elérhetők a demó felhasználó számára. A helyek listája, melyekhez hozzáférhet

ace -l
['latlong_wgs84', 'ECAD', 'nc_spm_08']

A kövtkező parancs az aktuális hely térképhalmazait listázza az aktuális GRASS GIS munkamenetben (nc_spm_08):

# running ace in the "nc_spm_08" location
# (the current location name is propagated to the server):
ace location="nc_spm_08" -m
['PERMANENT', 'landsat', 'modis_lst']

Adatok elérése külső forrásokból

A GRASS GIS parancsok kibővíthetők az actinia specifikus kiterjesztésekkel. a @ művelet adható meg egy input vagy output paraméterhez, hogy egy web helyről importálja az erőforrást illetve, hogy exportálja.

Fontos, hogy a lokális hely és térképhalmaz egyezzen meg a actinia REST szerverével.

Aktuálisan elérhető adathalmazok (vetület szerint csoportosítva):

A REST-hívás ellenőrzése az elküldés előtt

Az actinia feldolgozás lánc JSON kérés generálásához adja meg a -d (dry-run) kapcsolót:

ace location="nc_spm_08" grass_command="r.slope.aspect elevation=elevation slope=myslope" -d

Egy térkép megjelenítése - térképrajzolás

Nagyon egyszerű (és gyors) a térképrajzolás:

# check amount of pixels, just FYI
ace location="latlong_wgs84" grass_command="r.info globcover@globcover"
# render the map ... 7 billion pixels
ace location="latlong_wgs84" render_raster="globcover@globcover"
ESA Globcover térkép actinia-val megjelenítve

ESA Globcover térkép actinia-val megjelenítve

Az efemer feldolgozás az actinia alapértelmezett feldolgozási módszere. A parancsokat egy efemer térképhalmazban hajtunk végre, amit a feldolgozás után eltávolítunk. A GRASS GIS modulok outputját exportálhatja, a számítási eredmények tárolására, letöltésére vagy további elemzéshez. A következő export formátumokat támogatjuk:

  • raszter: COG, GTiff

  • vektor: GPKG, GML, GeoJSON, ESRI_Shapefile

  • tábla: CSV, TXT

Szkript példák

1. példa: lejtés, kitettség és egyváltozós statisztikák számítása egy magasság modellből

A következő parancsok (egy szkriptben tárolandó és ace-val végrehajtandó) egy raszter réteget importálnak egy internetes forrásból elev névvel, beállítják a számítási régiót a térképhez és kiszámítja a lejtést. További információt kérünk az r.info.val.

Tárolja a következő szkriptet mint egy szövegfájl ace_dtm_statistics.sh:

# grass ~/grassdata/nc_spm_08/user1/
# Import the web resource and set the region to the imported map
g.region raster=elev@https://storage.googleapis.com/graas-geodata/elev_ned_30m.tif -ap
# Compute univariate statistics
r.univar map=elev
r.info elev
# Compute the slope of the imported map and mark it for export as a COG file (Cloud Optimized GeoTIFF)
r.slope.aspect elevation=elev slope=slope_elev+COG
r.info slope_elev

Mentse el a szkriptet a /tmp/ace_dtm_statistics.sh szövegfájlba és futtassa a mentett szkriptet

ace --location nc_spm_08 --script ace_dtm_statistics.sh

Az eredményeket (üzenetek, statisztikák, fájlok) mint REST erőforrásokat kapjuk meg.

Az actinia feldolgozás lánc JSON kérés generálásához adja meg a -d (dry-run) kapcsolót:

ace -d location="nc_spm_08" script="/tmp/ace_dtm_statistics.sh"

Így kell kinéznie az outputnak:

{
  "version": "1",
  "list": [
    {
      "module": "g.region",
      "id": "g.region_1804289383",
      "flags": "pa",
      "inputs": [
        {
          "import_descr": {
            "source": "https://storage.googleapis.com/graas-geodata/elev_ned_30m.tif",
            "type": "raster"
          },
          "param": "raster",
          "value": "elev"
        }
      ]
    },
    {
      "module": "r.univar",
      "id": "r.univar_1804289383",
      "inputs": [
        {
          "param": "map",
          "value": "elev"
        },
        {
          "param": "percentile",
          "value": "90"
        },
        {
          "param": "separator",
          "value": "pipe"
        }
      ]
    },
    {
      "module": "r.info",
      "id": "r.info_1804289383",
      "inputs": [
        {
          "param": "map",
          "value": "elev"
        }
      ]
    },
    {
      "module": "r.slope.aspect",
      "id": "r.slope.aspect_1804289383",
      "inputs": [
        {
          "param": "elevation",
          "value": "elev"
        },
        {
          "param": "format",
          "value": "degrees"
        },
        {
          "param": "precision",
          "value": "FCELL"
        },
        {
          "param": "zscale",
          "value": "1.0"
        },
        {
          "param": "min_slope",
          "value": "0.0"
        }
      ],
      "outputs": [
        {
          "export": {
            "format": "COG",
            "type": "raster"
          },
          "param": "slope",
          "value": "slope_elev"
        }
      ]
    },
    {
      "module": "r.info",
      "id": "r.info_1804289383",
      "inputs": [
        {
          "param": "map",
          "value": "slope_elev"
        }
      ]
    }
  ]
}

Példa 2: ortofotó kép szegmentáció exporttal

Tárolja a következő szkriptet mint egy szövegfájlt /tmp/ace_segmentation.sh:

# grass ~/grassdata/nc_spm_08/user1/
# Import the web resource and set the region to the imported map
# we apply a importer trick for the import of multi-band GeoTIFFs:
# install with: g.extension importer url=https://github.com/actinia-org/importer
importer raster=ortho2010@https://apps.mundialis.de/workshops/osgeo_ireland2017/north_carolina/ortho2010_t792_subset_20cm.tif
# The importer has created three new raster maps, one for each band in the geotiff file
# stored them in an image group
r.info map=ortho2010.1
r.info map=ortho2010.2
r.info map=ortho2010.3
# Set the region and resolution
g.region raster=ortho2010.1 res=1 -p
# Note: the RGB bands are organized as a group
# export as a as COG file (Cloud Optimized GeoTIFF)
i.segment group=ortho2010 threshold=0.25 output=ortho2010_segment_25+COG goodness=ortho2010_seg_25_fit+COG
# Finally vectorize segments with r.to.vect and export as a GeoJSON file
r.to.vect input=ortho2010_segment_25 type=area output=ortho2010_segment_25+GeoJSON

Futtassa a szövegfájlba mentett parancsfájlt

ace location="nc_spm_08" script="/tmp/ace_segmentation.sh"

Az eredményeket (üzenetek, statisztikák, fájlok) mint REST erőforrásokat kapjuk meg.

Példák az állandó feldolgozásra

A GRASS GIS parancsok végrehajthatóak egy felhasználó által megadott állandó adatbázisban. A felhasználónak létre kell hoznia egy térképhalmazt egy létező helyen. Ezt a térképhalmazt elérhetjük a ace-n keresztül. Ebben a térképhalmazban futtatott parancsok összes feldolgozási eredményét tartósan tároljuk. Ne felejtse el, hogy a feldolgozást egy efemer adatbázisban hajtjuk végre, amelyet a feldolgozás után a helyes névvel áthelyezzük a tartós tárhelyre.

Egy új térképhalmaz létrehozásához az nc_spm_08 helyen, test_mapset névvel a következő parancsot kell végrehajtania

ace location="nc_spm_08" create_mapset="test_mapset"

Futtassa a parancsokat a statisztika szkriptből egy új tartós térképhalmazban

ace location="nc_spm_08" mapset="test_mapset" script="/path/to/ace_dtm_statistics.sh"

A test_mapset-ben lévő parancsfájllal létrehozott rasztertérképek megjelenítése

ace location="nc_spm_08" mapset="test_mapset" grass_commmand="g.list type=raster mapset=test_mapset"

Az elev és slope_elev térképekről információ megjelenítése

ace location="nc_spm_08" mapset="test_mapset" grass_command="r.info elev@test_mapset"
ace location="nc_spm_08" mapset="test_mapset" grass_command="r.info slope_elev@test_mapset"

Törölje a test_mapset-et (mindig ellenőrizze duplán a neveket a törlésnél)

ace location="nc_spm_08" delete_mapset="test_mapset"

Ha az aktív GRASS GIS munkamenet azonos hely/térképcsoport beállításokkal rendelkezik, akkor egy aliast lehet használni, hogy elkerülje a tartós beállítást minden egyes parancs hívásban:

alias acp="ace --persistent `g.mapset -p`"

Feltételezzük, hogy az aktív GRASS GIS munkamenetben az aktuális hely nc_spm_08 és az aktuális térképhalmaz test_mapset.  Ekkor a fenti parancsok a következő módon hajthatók végre:

ace location="nc_spm_08" create_mapset="test_mapset"
acp location="nc_spm_08" script="/path/to/ace_dtm_statistics.sh"
acp location="nc_spm_08" grass_command="g.list type=raster mapset=test_mapset"
acp location="nc_spm_08" grass_command="r.info elev@test_mapset"
acp location="nc_spm_08" grass_command="r.info slope_elev@test_mapset"

Kipróbálandó dolgok

Telepítés az OSGeoLive VM-en Docker Compose-al

Követelmények: docker és docker-compose (már rendelkezésre áll az OSGeoLive VM verzióban)

Az actinia elkészítéséhez és telepítéséhez futtassa

git clone https://github.com/actinia-org/actinia-core.git
cd actinia_core
docker-compose -f docker/docker-compose.yml up

Most van egy helyi, futó actinia példánya! Ellenőrizze

curl http://127.0.0.1:8088/api/v3/version

Új helyek létrehozása

# (note: the "demouser" is not enabled for this)
#
# create new location
ace create_location="mylatlon 4326"
# create new mapset within location
ace location="mylatlon" create_mapset="user1"

GRASS GIS bővítmények telepítése

# (requires elevated user privileges)
#
# list existing addons, see also
# https://grass.osgeo.org/grass-stable/manuals/addons/
ace location="latlong_wgs84" grass_command="g.extension -l"

# install machine learning addon r.learn.ml2
ace location="latlong_wgs84" grass_command="g.extension extension=\"r.learn.ml2\""

Mi a következő?

  • Látogassa meg az actinia honlapot https://actinia.mundialis.de

  • actinia oktatóanyag: https://neteler.gitlab.io/actinia-introduction

  • További olvasmányok: Neteler, M., Gebbert, S., Tawalika, C., Bettge, A., Benelcadi, H., Löw, F., Adams, T, Paulsen, H. (2019). Actinia: cloud based geoprocessing. In Proc. of the 2019 conference on Big Data from Space (BiDS’2019) (pp. 41-44). EUR 29660 EN, Publications Office of the European Union 5, Luxembourg: P. Soille, S. Loekken, and S. Albani (Eds.). (DOI)