Read this in other languages: English, Italiano.
- [Disclaimer] (#disclaimer)
- Dipendenze
- Installazione
- API
- Licenza
Arkiweb recentemente è diventato incompatibile con le API C++ di arkimet. Lo sviluppo di arkiweb è attualmente in stato di freeze.
Per utilizzare l'ultima verisone stabile di arkiweb con le vecchie versioni di arkimet e dballe sono disponibili le seguenti risorse:
- un'immagine docker: https://hub.docker.com/repository/docker/arpaesimc/arkiweb (creata da https://github.com/ARPA-SIMC/arkiweb-docker-image)
- un repository copr dedicato: https://copr.fedorainfracloud.org/coprs/simc/arkiweb/
La compilazione di arkiweb richiede le seguenti librerie:
In caso di modifica dei file Javascript o CSS o di compilazione dal repository git clonato, occorrono i seguenti programmi:
node.js
: http://nodejs.org/npm
: https://www.npmjs.com/eco
: https://github.com/sstephenson/eco
$ autoreconf -ifv && ./configure && make
I web service sono installati in $libdir/arkiweb
.
Per installare i servizi in un server web, bisogna configurarlo.
La variabile d'ambiente ARKIWEB_CONFIG
è obbligatoria.
Va assegnata al path del file di configurazione creato con arki-mergeconf
.
Un esempio di configurazione per Apache è disponibile su
$datarootdir/arkiweb/httpd/arkiweb.conf
.
Quando la variabile globale ARKIWEB_RESTRICT
è assegnata, il servizio cerca
una variabile globale ${ARKIWEB_RESTRICT}
e ne utilizza il valore per limitare
l'accesso ai dataset (similment all'opzione --restrict
dei comandi arkimet.
In altre parole, utilizzando arkiweb con un SetEnv ARKIWEB_RESTRICT=UTENTE
,
allora arkiweb andrà a cercare il valore della variabile d'ambiente UTENTE
e lo userà nel restrict.
Esempio con la Apache basic authentication:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
Require valid-user
SetEnv ARKIWEB_RESTRICT REMOTE_USER
Inoltre, è possibile limitare la dimensione o il numero massimo dei dati estratti:
# Max 1000 items
SetEnv ARKIWEB_MAXCOUNT MAXCOUNT
SetEnv MAXCOUNT 1000
# Max 1000000 bytes
SetEnv ARKIWEB_MAXSIZE MAXSIZE
SetEnv MAXSIZE 1000000
Il sito web è installato in $datarootdir/arkiweb/public/
.
arkiweb.css
: fogli di stile cssarkiweb.js
: versione di sviluppo del file javascriptarkiweb.min.js
: versione "minified"
Nella stessa directory si trovano le seguenti librerie di terze parti:
- jquery licensed under MIT license.
- jquery-ui dual licensed under MIT and GPLv2 license.
- jquery.layout dual licensed under the MIT and GPL licenses.
- jquery.blockUI dual licensed under the MIT and GPL licenses.
- jquery-ui-timepicker-addon dual licensed under the MIT and GPL licenses.
- underscore licensed under MIT license.
- backbone licensed under MIT license.
- openlayers licensed under the 2-clause BSD license.
- strftime licensed under BSD license.
Per far partire l'applicazione arkiweb: supponendo di avere i webservice
configurati sotto /services/arkiweb
e che si voglia includere arkiweb in
un <div id="arkiweb">
:
$(document).ready(function() {
arkiweb.run({
baseUrl: "/services/arkiweb",
el: "#arkiweb"
});
});
Vedere $docdir/arkiweb/html/example/index.html
per un esempio simile.
Name | Description |
---|---|
datasets | Recupera la lista dei dataset |
summary | Recupera i summary |
fields | Recupera la lista dei campi |
data | Recupera i dati |
- tutti i webservice funzionano con parametri GET
- tutti i parametri necessitano di encoding web (ad es. l'opzione
--data-urlencode
di curl), a causa dell'uso di caratteri riservati nelle query come ";"
Il servizio /datasets
restituisce la lista dei dataset in formato JSON
.
I parametri sono:
datasets[]=NOME
: esegue il servizio sul dataset di nomeNOME
. Può essere assegnata più volte. Se non assegnata, il servizio viene eseguito su tutti i dataset disponibili.query=QUERY
: filtra i dataset secondo la query specificata. NOTA: quandoquery
è specificata il servizio può essere molto lento.
L'output è un oggetto JSON
:
{
"datasets": [
{
"id": "lmsmr4x52",
"name": "lmsmr4x52",
"description": "COSMOI7, Operational suite, v4.21, CI and BC from IFS",
"bounding": "POLYGON ((20.6613559288928954 31.7145084340445464, 0.9181226563627547 ... ))",
"allowed": true,
"postprocess": [
"singlepoint",
"subarea",
"seriet"
]
},
{
...
},
...
]
}
id
: id del datasetname
: nome del datasetdescription
: descrizione del datasetbounding
: bounding box in formatoWKT
allowed
:true
se l'utente può scaricare dati da quel datasetpostprocess
: array con la lista dei postprocessatori disponibili
# Lista di tutti i datasets
$ curl -G 'http://USER:PASSWORD@HOST/services/arkiweb/datasets'
# Lista di tutti i dataset con dati disponibili per la giornata di oggi
$ curl -G 'http://USER:PASSWORD@HOST/services/arkiweb/datasets' --data-urlencode 'query=reftime:=today'
Il servizio /fields
restituisce la lista dei campi disponibili (metadati) per
il dataset specificato e per la (eventuale) query specificata.
I parametri sono:
datasets[]=NOME
: esegue il servizio sul dataset di nomeNOME
. Può essere assegnata più volte. Se non assegnata, non vengono restituiti dati.query=QUERY
: filtra i dataset secondo la query specificata.
L'output è un oggetto JSON
:
{
"fields": [
{
"type": "area",
"values": [{...}, {...}]
},
{
"type": "product",
"values": [{...}, {...}]
}
],
"stats": {
"b": [
2012,
6,
5,
12,
0,
0
],
"e": [
2013,
9,
4,
0,
0,
0
],
"c": 5178696,
"s": 964376769120
}
}
fields
: array con un oggetto per ogni tipologia di metadatotype
: il tipo di metadatovalues
: array che contiene i metadati di quel tipo
stats
:b
: reftime inizialee
: reftime finalec
: numero degli oggettis
: dimensione in byte
# Elenca i metadata disponibili per oggi per i dataset cosmo_5M_ita and cosmo_2I
$ curl -G --anyauth 'http://USER:PASSWORD@HOST/services/arkiweb/fields' --data-urlencode 'datasets[]=cosmo_5M_ita' --data-urlencode 'datasets[]=lmsmr6x54' --data-urlencoede 'query=reftime:=today'
Il servizio /summary
restituisce i metadati di ogni singolo file archiviato.
Usa gli stessi parametri del servizio /fields
.
# Elenca il numero di grib di temperatura a 2 metri per la corsa odierna di cosmo_5M_ita:
$ curl -G --anyauth 'http://USER:PASSWORD@HOST/services/arkiweb/fields' --data-urlencode 'datasets[]=cosmo_5M_ita' --data-urlencode 'query=reftime:=today 00:00; product: GRIB1,80,2,11; level: GRIB1,105,2'
Il servizio /data
restituisce i dati.
I parametri disponibili sono:
datasets[]=NOME
: estrae i dati dal datasetNOME
. Può essere assegnato più volte.query=QUERY
: filtra i dati secondo la query. Se non assegnata implica "tutti i dati disponibili" e in genere non è una buona idea.postprocess=NAME ARGS
: postprocessatore. Se questo parametro è assegnato, è necessario specificare un solo dataset: viene restituito un HTTP status 400 (Bad Request) quando si prova a postprocessare più dataset contemporaneamente.
Il formato restituito dipende dal tipo di dati richiesti e/o dal postprocessatore selezionato. Per ulteriori informazioni sui parametri dei postprocessatori vedere: https://github.com/ARPA-SIMC/arkimet-postprocessor-suite
# Estrae le analisi di oggi di cosmo_5M_ita:
$ curl -G --anyauth 'http://USER:PASSWORD@HOST/services/arkiweb/data' --data-urlencode 'datasets[]=cosmo_5M_ita' --data-urlencode 'query=reftime:=today;timerange:GRIB1,0,0'
# Estrae un singolo punto specificando coordinate lat/lon dalle analisi odierne di cosmo_5M_ita usando il postprocessatore `singlepoint` e richiedendo `JSON` come formato
$ curl -G --anyauth 'http://USER:PASSWORD@HOST/services/arkiweb/data' --data-urlencode 'datasets[]=cosmo_5M_ita' --data-urlencode 'query=reftime:=today;timerange:GRIB1,0,0' --data-urlencode 'postprocess=singlepoint -f JSON 12 44'
Arkiweb è distribuito su licenza GPLv2+.
Le seguenti librerie di terze parti sono incluse:
- jquery licensed under MIT license.
- jquery-ui dual licensed under MIT and GPLv2 license.
- jquery.layout dual licensed under the MIT and GPL licenses.
- jquery.blockUI dual licensed under the MIT and GPL licenses.
- jquery-ui-timepicker-addon dual licensed under the MIT and GPL licenses.
- underscore licensed under MIT license.
- backbone licensed under MIT license.
- openlayers licensed under the 2-clause BSD license.
- strftime licensed under BSD license.