GriddingMachine, una base de dades i programari per a la modelització del sistema terrestre a escala global i regional

Cada conjunt de dades de la base de dades de GriddingMachine s’etiqueta amb una etiqueta única seguint un patró de denominació general: LABEL_(EXTRALABEL_)IX_JT_(YEAR_)VK, on ​​EXTRALABEL i YEAR són opcionals (taula 1). Aquí, LABEL és l’identificador de dades principal (per exemple, GPP per a la productivitat primària bruta), EXTRALABEL és l’identificador de dades secundàries per distingir conjunts de dades dins d’una col·lecció (per exemple, GPP de diferents models), IX indica que la resolució espacial és 1/I° , JT representa la resolució temporal (H per hora, D per dia, M per mes i Y per any) i VK significa la versió del conjunt de dades de la nostra col·lecció (V1 per a les dades de la publicació 1 i VN per a les dades de la publicació N) . Per exemple, LAI_MODIS_20X_1 M_2008_V1 significa índex d’àrea foliar (LAI) de MODIS a una resolució espacial d’1/20° i una resolució temporal d’1 mes per a l’any 2008, i V1 indica que el conjunt de dades és la primera col·lecció LAI; VCMAX_2X_1Y_V2 significa velocitat màxima de carboxilació (Vcmax) amb una resolució espacial d’1/2° i una resolució temporal d’1 any, i V2 indica que el conjunt de dades és el segon Vcmax col · lecció.

Taula 1 Conjunts de dades dins de les col·leccions de GriddingMachine.

Tot i que pretenem accedir a les dades de manera automàtica i còmoda dins de diversos llenguatges de programació, encara oferim accés a dades tradicional des dels servidors HTTP. Els conjunts de dades comprimits es poden descarregar manualment des d’un arxiu de dades obert allotjat a CaltechDATA17.

Suport a la Júlia

Oferim suport per a l’idioma Julia mitjançant GriddingMachine.jl (v0.2, requereix Julia 1.6+), que inclou tres submòduls provats: Collector, Indexer i Requestor (Fig. 2). El col·lector és responsable de descarregar i gestionar conjunts de dades; Indexer s’encarrega de llegir els conjunts de dades descarregats; i el Sol·licitant és responsable de sol·licitar un subconjunt de dades directament des del nostre servidor sense descarregar els conjunts de dades. Per instal·lar GriddingMachine.jl, només cal escriure el següent a Julia REPL (bucle de lectura-eval-impressió):

Fig. 2
imatge 2

Marc del paquet GriddingMachine.jl (v0.2). GriddingMachine.jl conté tres submòduls: Collector, Indexer i Requestor. El col·lector descarrega i gestiona els conjunts de dades; L’indexador llegeix els conjunts de dades descarregats; i el Sol·licitant sol·licita un subconjunt de dades directament des del servidor sense descarregar els conjunts de dades.

A continuació, presentem només les característiques fonamentals de GriddingMachine.jl i fem referència als lectors a la nostra documentació en línia per obtenir més detalls sobre GriddingMachine.jl a https://clima.github.io/GriddingMachine.jl/stable/.

Descarregar dades

Classifiquem els conjunts de dades en diferents col·leccions mitjançant l’estructura GriddedCollection, que inclou els camps següents:

  • LABEL: una cadena que apareix als noms dels fitxers, com ara LAI;

  • SUPPORTED_COMBOS: una matriu de cadenes per a combinacions admeses, com ara [MODIS_2X_8D_2018_V1, MODIS_2X_8D_2019_V1, MODIS_2X_8D_2020_V1];

  • DEFAULT_COMBO: una cadena de la combinació predeterminada, com ara MODIS_2X_8D_2020_V1.

Actualment, tenim un total de 19 categories de conjunt de dades (columna Tipus de conjunt de dades a la taula 1) i 19 funcions per construir aquestes estructures de GriddedCollection en conseqüència:

  • recollida_de_biomassa

  • col·lecció_altura_de_dosser

  • col·lecció_índex_aglutinant

  • col·lecció_elevació

  • col·lecció_gpp

  • lai_col·lecció

  • col·lecció_de_màscara_de_terra

  • col·lecció_de_nitrogen_de_fulles

  • col·lecció_de_fosfor_full

  • col·lecció_pft

  • sif_col·lecció

  • sil_col·lecció

  • sla_col·lecció

  • col·lecció_color_sòl

  • recollida_hidràulica_sòl

  • col·lecció_superficie_àrea

  • col·lecció_de_densitat_d’arbres

  • col·lecció_vcmax

  • col·lecció_densitat_de_fusta

Per exemple, es pot definir una col·lecció LAI i comprovar les combinacions admeses mitjançant les ordres següents:

La funció query_collection retorna el camí al conjunt de dades (Julia baixarà el fitxer automàticament a la carpeta ~/.julia/artefacts si el conjunt de dades no existeix):

El primer mètode retorna el camí a la combinació predeterminada; i el segon i el tercer mètodes retornen el camí al conjunt de dades de destinació.

Funció clean_collection! neteja els conjunts de dades descarregats:

El primer i el segon mètodes netegen tots els conjunts de dades obsolets que no estaven a Artifacts.toml; el tercer mètode neteja tots els conjunts de dades de GriddingMachine; el quart mètode neteja tots els conjunts de dades seleccionats; i l’últim mètode neteja tots els conjunts de dades d’una col·lecció.

Llegeix les dades descarregades

Amb la ruta del conjunt de dades de query_collection, podem carregar les dades mitjançant la funció read_LUT (que vol dir llegir la taula de cerca) a Indexer. Els mètodes suportats són

El primer mètode carrega tot el conjunt de dades (matriu 3D a l’exemple anterior); el segon mètode carrega la vuitena capa del conjunt de dades (només aplicable a conjunts de dades 3D); el tercer mètode retorna totes les dades a una latitud (30,1°) i longitud (116,1°) determinades; i l’últim mètode només retorna dades sobre la latitud (30,1°), la longitud (116,1°) i l’índex de cicle donats (8). Per al tercer i últim mètode, la interpolació d’opcions és falsa per defecte i la funció retorna les dades que cauen a la quadrícula (la latitud de 30 a 30,5° i la longitud de 116 a 116,5° en aquest exemple). Si l’opció d’interpolació és certa, utilitzem el mètode d’interpolació bilineal i la funció retorna resultats interpolats linealment dels seus quatre veïns més propers.

Sol·licitar dades parcials

Tingueu en compte que les funcions query_collection i read_LUT estan pensades per descarregar (si no existeixen) i llegir el conjunt de dades local, cosa que pot dificultar la reutilització de dades. Per exemple, si només es necessiten les dades d’uns quants llocs, la descàrrega de gigabytes de dades d’aquests pocs llocs (1) requeriria molt de temps, (2) malbarataria l’emmagatzematge local i (3) augmentaria la càrrega innecessària dels servidors de dades. Per tant, oferim una manera de sol·licitar dades per a llocs específics al Sol·licitant mitjançant la funció request_LUT:

El primer mètode pren el nom de l’etiqueta (nom complet), la latitud (30,1°) i la longitud (116,1°) com a entrada i retorna la sèrie temporal de LAI i el seu error; el segon mètode pren un índex de cicle addicional com a entrada i només retorna les dades i l’error del cicle objectiu (dels dies 57 al 64 en aquest exemple). De manera similar a la funció read_LUT, es pot optar per interpolar les dades establint l’opció d’interpolació a fals o true. El que fa request_LUT és (i) el final de l’usuari passa la informació d’entrada al servidor, (2) el final del servidor llegeix les dades mitjançant query_collection i read_LUT, (3) el final del servidor torna un fitxer JSON estructurat a l’extrem de l’usuari i (4) El final de l’usuari tradueix el JSON estructurat a dades (nombres o matrius).

Altres suports d’idiomes

A més de Julia, també oferim interfícies d’usuari senzilles per a Matlab, Octave, Python i R per facilitar la distribució i la reutilització del conjunt de dades. Oferim tres funcions per a Matlab, Octave, Python i R, i són (1) update_GM que baixa l’últim Artifacts.toml de Github, (2) query_collection que baixa i retorna la ruta del conjunt de dades (igual que a Julia) , i (3) request_LUT que sol·licita dades parcials del servidor (igual que a Julia). A diferència de Julia, update_GM i query_collection descarreguen les dades a ~/GMCollections en lloc de ~/.julia/artefacts. Artifacts.toml s’emmagatzema a ~/GMCollections/Artifacts.toml; els fitxers tar.gz comprimits s’emmagatzemen a ~/GMCollections/archives; i els conjunts de dades s’extreuen a ~/GMCollections/artefacts. Amb el camí del conjunt de dades, els usuaris poden triar els paquets que prefereixen per llegir el conjunt de dades. En comparació, GriddingMachine.jl actualitza Artifacts.toml mitjançant l’alliberament de paquets, i cal actualitzar GriddingMachine.jl per utilitzar els darrers conjunts de dades.

Matlab

Oferim suport d’idiomes Matlab mitjançant Matlab Toolbox (codi font disponible a https://github.com/Yujie-W/octave-griddingmachine). Els usuaris de Matlab poden instal·lar i utilitzar la caixa d’eines mitjançant

Octava

El suport d’idioma Octave també es proporciona a través de https://github.com/Yujie-W/octave-griddingmachine, que és compatible amb Matlab i Octave. Els usuaris d’Octave poden instal·lar i utilitzar el paquet mitjançant

Python

Oferim suport d’idioma Python mitjançant un paquet Python registrat mitjançant PyPI (codi font disponible a https://github.com/Yujie-W/python-griddingmachine) i els usuaris de Python poden instal·lar el paquet mitjançant pip:

Per consultar el camí al conjunt de dades o subconjunt de dades descarregat directament des del servidor, es pot utilitzar

R

Oferim suport de llenguatge R mitjançant un paquet allotjat a Github i els usuaris de R poden instal·lar i utilitzar el paquet mitjançant

Com que R no permet retornar múltiples variables, les dades i l’error de la sol·licitud s’emmagatzemen com a camps d’una llista, i es pot llegir amb resultats$data i resultats$std.

Leave a Comment

Your email address will not be published. Required fields are marked *