

Observera
Detta projekt ingår endast på OSGeoLives virtuella maskindisk (VMDK)
actinia Snabbstart¶
Actinia är ett REST API med öppen källkod för skalbar, distribuerad, högpresterande bearbetning av geografiska data som huvudsakligen använder GRASS GIS för beräkningsuppgifter. Actinia tillhandahåller ett REST API för att bearbeta satellitbilder, tidsserier av satellitbilder, raster- och vektordata.
Actinia kan användas på olika sätt:
curl eller liknande kommandoradsverktyg
gränssnittet för Python <https://github.com/actinia-org/actinia-python-client>`__
tillägget Postman eller RESTman för webbläsare
öppna en GRASS GIS-session och använda verktyget ace (actinia command execution)
andra gränssnitt till REST API
I den här snabbstarten använder vi GRASS GIS för att på ett enkelt sätt starta kommandon från sessionen till actinia-servern (som i sin tur använder GRASS GIS). Tanken är att snabbt utveckla ett arbetsflöde lokalt på små datamängder för att sedan köra det på servern.
Använda actinia med en Jupyter-anteckningsbok¶
Många Jupyter-anteckningsböcker för actinia finns tillgängliga från https://github.com/actinia-org/actinia-jupyter
Introduktion till ace - actinia command execution¶
Verktyget ace
(detaljer) gör det möjligt att köra ett enda GRASS GIS-kommando eller en lista med GRASS GIS-kommandon på en actinia REST-tjänst (https://actinia.mundialis.de/). Dessutom ger det jobbhantering, möjlighet att lista platser, kartuppsättningar och kartlager som användaren har tillgång till samt skapande och borttagning av kartuppsättningar.
Verktyget ace
måste köras i en aktiv GRASS GIS-session. Det installeras med g.extension extension=ace url=https://github.com/actinia-org/ace
.
Alla kommandon kommer att utföras som standard i en eephemeral databas. Därför måste genererad utdata exporteras med hjälp av utökade GRASS-kommandon.
Alternativet mapset=MAPSET_NAME
gör det möjligt att utföra kommandon i den beständiga användardatabasen. Det kan användas tillsammans med alternativet location=LOCATION_NAME
.
Konfigurera din miljö¶
Se till att köra följande kommandon under en GRASS GIS-session.
Användaren måste konfigurera följande miljövariabler för att ange actinia-servern och autentiseringsuppgifterna:
# set credentials and REST server URL
export ACTINIA_USER='demouser'
export ACTINIA_PASSWORD='gu3st!pa55w0rd'
export ACTINIA_URL='https://actinia.mundialis.de/latest'
Få tillgång till exempeldata¶
Utvalda dataset är tillgängliga för demo-användaren. För att lista de platser du har tillgång till kör du
ace -l
['latlong_wgs84', 'ECAD', 'nc_spm_08']
Följande kommando listar kartset för aktuell plats i den aktiva GRASS GIS-sessionen (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']
Få tillgång till data från externa källor¶
GRASS GIS-kommandon kan kompletteras med actinia-specifika tillägg. Operatorn @
kan anges för en inmatningsparameter för att importera en webbaserad resurs och för att ange export av en utmatningsparameter.
Det är viktigt att namnet på den lokala platsen och kartuppsättningen motsvarar namnet på actinia REST-servern.
För närvarande tillgängliga dataset är (organiserade efter projektioner):
Provdataset från North Carolina (NC State-Plane metric CRS, EPSG: 3358):
baskartografi (
nc_spm_08/PERMANENT
; källa: https://grassbook.org/datasets/datasets-3rd-edition/)Landsat-underscener (
nc_spm_08/landsat
; källa: https://grass.osgeo.org/download/data/)
Latitud-Longitud (LatLong WGS84, EPSG:4326):
empty (
latlong_wgs84/PERMANENT/
)16-dagars NDVI, MOD13C1, V006, CMG 0,05 grader res. (
latlong_wgs84/modis_ndvi_global/
; källa: https://lpdaac.usgs.gov/products/mod13c1v006/)LST growing degree days asia 2017 (
latlong_wgs84/asia_gdd_2017/
; source: https://www.mundialis.de/en/products/surface-temperature-data/)LST tropiska dagar Asien 2017 (
latlong_wgs84/asia_tropical_2017/
)LST-temperatur dagligen Asien 2017, inklusive min, max och medelvärde (
latlong_wgs84/asia_lst_daily_2017/
)
Europa (EU LAEA CRS, EPSG:3035):
EU DEM 25m V1.1 (
eu_laea/PERMANENT/
; source: https://land.copernicus.eu/en/products/products-that-are-no-longer-disseminated-on-the-clms-website)CORINE Landcover 2012, g100_clc12_V18_5 (
eu_laea/corine_2012/
; source: https://land.copernicus.eu/en/products/corine-land-cover/clc-2012)
World Mollweide (EPSG 54009):
GHS_POP_GPW42015_GLOBE_R2015A_54009_250_v1_0 (
world_mollweide/pop_jrc
; källa: https://ghsl.jrc.ec.europa.eu/ghs_pop.php)
Inspektera REST-anropet före inlämning¶
För att generera en JSON-begäran för actinia-processens kedja behöver du bara lägga till flaggan -d
(dry-run):
ace location="nc_spm_08" grass_command="r.slope.aspect elevation=elevation slope=myslope" -d
Visa en karta - kartåtergivning¶
Det är mycket enkelt (och snabbt) att rendera en karta:
# 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-karta visad av actinia¶
Ephemeral processing är standardmetoden för bearbetning av actinia. Kommandon utförs i en efemär kartuppsättning som tas bort efter bearbetningen. Du kan exportera utdata från GRASS GIS-moduler för att lagra beräkningsresultatet för nedladdning och vidare analys. Följande exportformat stöds för närvarande:
raster:
COG
,GTiff
vektor:
GPKG
,GML
,GeoJSON
,ESRI_Shapefile
tabell:
CSV
,TXT
Exempel på skript¶
Exempel 1: beräkning av lutning och aspekt samt univariat statistik från en höjdmodell¶
Följande kommandon (som ska lagras i ett skript och köras med ace
) importerar ett rasterskikt från en internetkälla som rasterkarta elev
, ställer in beräkningsregionen till kartan och beräknar lutningen. Ytterligare information om rasterlagret begärs med r.info
.
Spara följande skript som textfil 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
Spara skriptet i textfilen till /tmp/ace_dtm_statistics.sh
och kör det sparade skriptet som
ace --location nc_spm_08 --script ace_dtm_statistics.sh
Resultaten (meddelanden, statistik, filer) tillhandahålls som REST-resurser.
För att generera en JSON-begäran för actinia-processens kedja behöver du bara lägga till flaggan -d
(dry-run):
ace -d location="nc_spm_08" script="/tmp/ace_dtm_statistics.sh"
Utmatningen bör se ut så här:
{
"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"
}
]
}
]
}
Exempel 2: Segmentering av ortofotobilder med export¶
Spara följande skript som textfil /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
Kör skriptet som sparats i en textfil som
ace location="nc_spm_08" script="/tmp/ace_segmentation.sh"
Resultaten (meddelanden, statistik, filer) tillhandahålls som REST-resurser.
Exempel på uthållig bearbetning¶
GRASS GIS-kommandon kan köras i en användarspecifik beständig databas. Användaren måste skapa en kartuppsättning på en befintlig plats. Denna kartuppsättning kan nås via ace
. Alla bearbetningsresultat av kommandon som körs i denna mapset kommer att lagras permanent. Tänk på att bearbetningen kommer att utföras i en kortvarig databas som kommer att flyttas till den permanenta lagringen med rätt namn efter bearbetningen.
För att skapa en ny mapset på nc_spm_08-platsen med namnet test_mapset måste följande kommando köras
ace location="nc_spm_08" create_mapset="test_mapset"
Kör kommandona från statistikskriptet i den nya beständiga kartuppsättningen
ace location="nc_spm_08" mapset="test_mapset" script="/path/to/ace_dtm_statistics.sh"
Visa alla rasterkartor som har skapats med skriptet i test_mapset
ace location="nc_spm_08" mapset="test_mapset" grass_commmand="g.list type=raster mapset=test_mapset"
Visa information om rasterkartan elev och slope_elev
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"
Ta bort test_mapset (dubbelkolla alltid namn när du tar bort)
ace location="nc_spm_08" delete_mapset="test_mapset"
Om den aktiva GRASS GIS-sessionen har identiska namn på platser och kartor kan ett alias användas för att undvika att använda alternativet persistent i varje enskilt kommandoanrop:
alias acp="ace --persistent `g.mapset -p`"
Vi antar att i den aktiva GRASS GIS-sessionen är den aktuella platsen nc_spm_08 och det aktuella mapsetet är test_mapset. Då kan kommandona från ovan utföras på följande sätt:
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"
Saker att prova¶
Installera på OSGeoLive VM med Docker Compose¶
Krav: docker och docker-compose (redan tillgängligt i OSGeoLive VM-versionen)
För att bygga och driftsätta actinia, kör
git clone https://github.com/actinia-org/actinia-core.git
cd actinia_core
docker-compose -f docker/docker-compose.yml up
Nu har du en fungerande actinia-instans lokalt! Kontrollera med
curl http://127.0.0.1:8088/api/v3/version
Skapa nya platser¶
# (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"
Installera GRASS GIS-tillägg (extensions)¶
# (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\""
Hur vill du gå vidare?¶
Besök actinias webbplats på https://actinia.mundialis.de <https://actinia.mundialis.de>`_
actinia handledning: https://neteler.gitlab.io/actinia-introduction
Further reading: 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)