libsim Versione 7.2.4
Tipi di dato | Funzioni/Subroutine
Riferimenti per il modulo vol7d_dballe_class

classe per import ed export di volumi da e in DB-All.e Continua...

Tipi di dato

interface  delete
 cancella Continua...
 
interface  export
 exporta Continua...
 
interface  import
 importa Continua...
 
interface  init
 inizializza Continua...
 
type  vol7d_dballe
 Oggetto per import ed export da DB-All.e. Continua...
 

Funzioni/Subroutine

subroutine vol7d_dballe_init (this, dsn, user, password, write, wipe, repinfo, filename, format, file, categoryappend, time_definition, idbhandle, template)
 inizializza l'oggetto
 
subroutine vol7d_dballe_importvvnv (this, var, network, coordmin, coordmax, timei, timef, level, timerange, set_network, attr, anavar, anaattr, varkind, attrkind, anavarkind, anaattrkind, anaonly, dataonly, ana)
 Identica a vol7d_dballe_importvsns con var e network vettore.
 
subroutine vol7d_dballe_import_old (this, var, network, coordmin, coordmax, timei, timef, level, timerange, set_network, attr, anavar, anaattr, varkind, attrkind, anavarkind, anaattrkind, anaonly, dataonly, ana)
 import da DB-all.e
 
subroutine vol7d_dballe_import (this, filter, set_network)
 import da DB-all.e
 
subroutine vol7d_dballe_delete (this, preserveidbhandle)
 Cancella l'oggetto.
 
subroutine dba2v7d (this, metaanddatav, time_definition, set_network)
 import dba objects in vol7d
 
subroutine, public vol7d_dballe_set_var_du (this)
 Integra il vettore delle variabili in vol7d con le descrizioni e le unità di misura eventualmente mancanti.
 
subroutine vol7d_dballe_export_old (this, network, coordmin, coordmax, timei, timef, level, timerange, var, attr, anavar, anaattr, ana, dataonly, anaonly, template, attr_only)
 Exporta un volume dati a un DSN DB-all.e.
 
subroutine vol7d_dballe_export (this, filter, template, attr_only)
 

Descrizione dettagliata

classe per import ed export di volumi da e in DB-All.e

Questo modulo definisce gli oggetti e i metodi per gestire l'importazione e l'esportazione di volumi dal database per dati sparsi DB-All.e

Il tutto funziona intorno all'oggetto vol7d_dballe che aggiunge ad un oggetto vol7d ulteriori informazioni.

Con la chiamata init vengono definiti i parametri di accesso alla DSN (database) di DB-All.e. oppure da file bufr/crex

Con import è possibile acquisire nel prorio programma i dati presenti nel DSN o su file; l'allocazione di memoria è automatica. Import è in grado di importare dati senza nessuna ulteriore specificazione: vengono acquisite tutte le stazioni senza limiti di tempo o di spazio, per tutti i dati, compresi quelli di anagrafica; solo gli attributi vengono tralasciati se non specificati. Se non specificato i dati sono in forma character che permette di essere conservativi su tutti i tipi di dato archiviabile in DB-all.e. Aumentando i parametri all'intefaccia import è possibile specificare sottoinsiemi temporali e spaziali, elenchi di variabili e attributi. E' possibile anche specificare il tipo per ogni variabile o attributo richiesto. E' fornito un set di routine per avere la possibilità di estrarre un vettore di variabili e un vettore di reti. E' possibile anche specificare una singola stazione. vol7d_dballe%data_id contiene un vettore di servizio con gli id interni del database che indirizzano direttamente i dati. Una particolare opzione permette di attivare l'opzione query di tipo best in DB-All.e per avere in una unica rete i dati migliori presenti nel DB.

Con export si riscrivono i dati nel DSN di DB-All.e potendo attivare una serie di filtri.

Con delete si elimina definitvamente l'oggetto vol7d_dballe.

Mantenendo lo stesso oggetto nella sequenza init, import, export, delete si sovrascrive lo stesso DSN di DB-All.e. Il vettore vol7d_dballe%data_id in export permette di sovrascrivere solo gli attributi; eventualmente possono essere sovrascritti i soli attributi relativi agli elementi data_id non mancanti.

E' da notare che se si attiva l'opzione "anaonly" solo ma tutte le stazioni e i dati di anagrafica vengono importati secondo i parametri di query selezionati. Se l'opzione "anaonly" è disattivata solo le stazioni con i dati richiesti presenti saranno caricati nella sezione anagrafica

Utilizzando due differenti oggetti uno per import e uno per export è possibile tramite l'associazione del puntatore in essi contenuto relativo al volume vol7d ricopiare contenuti in altri DSN senza sprechi di memoria.

Programma esempio

! Copyright (C) 2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
! authors:
! Davide Cesari <dcesari@arpa.emr.it>
! Paolo Patruno <ppatruno@arpa.emr.it>
! This program is free software; you can redistribute it and/or
! modify it under the terms of the GNU General Public License as
! published by the Free Software Foundation; either version 2 of
! the License, or (at your option) any later version.
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
! You should have received a copy of the GNU General Public License
! along with this program. If not, see <http://www.gnu.org/licenses/>.
PROGRAM v7ddballe
! Programma di esempio di estrazione dall'archivio DB-all.e
IMPLICIT NONE
TYPE(vol7d_dballe) :: v7d
TYPE(datetime) :: ti, tf
TYPE(vol7d_network):: network
CHARACTER(len=12) :: c
INTEGER :: i, n
REAL, POINTER :: vol2d(:,:)
! Definisco le date iniziale e finale e network
CALL init(ti, year=2007, month=3, day=18, hour=12)
CALL init(tf, year=2007, month=3, day=21, hour=00)
call init(network,name='generic')
! Chiamo il costruttore della classe vol7d_dballe per il mio oggetto
CALL init(v7d)
! Importo i dati, variabile 'B13011' della btable (precipitazione),
CALL import(v7d, var=(/'B13011'/),set_network=network,varkind=(/"r"/), attr=(/"*B33192","*B33007"/))
!CALL import(v7d, 'B13011', network=network, timei=ti, timef=tf, timerange=vol7d_timerange(4,-1800,0), attr=(/"*B33192","*B33007"/))
print *,v7d%vol7d%dativar%r
print *,v7d%vol7d%datiattr%c
! Creo una vista su un array bidimensionale che scorre le dimensioni
! dell'anagrafica e del tempo (vol7d_ana_d, vol7d_time_d)
CALL vol7d_get_voldatir(v7d%vol7d, (/vol7d_ana_d,vol7d_time_d/), vol2dp=vol2d)
! Calcolo la media e la stampo assieme all'istante
DO i = 1, SIZE(v7d%vol7d%time)
CALL getval(v7d%vol7d%time(i), simpledate=c)
n = count(vol2d(:,i) /= rmiss)
IF (n > 0) THEN
print*, c, ' prec. media:', sum(vol2d(:,i), mask=(vol2d(:,i) /= rmiss))/n,n
! if (c=="200703202030" ) print *, vol2d(:,i)
ENDIF
ENDDO
CALL delete (v7d)
END PROGRAM v7ddballe
Distruttori per le 2 classi.
Restituiscono il valore dell'oggetto nella forma desiderata.
Costruttori per le classi datetime e timedelta.
Lettura da file.
Classi per la gestione delle coordinate temporali.
Classe per la gestione di un volume completo di dati osservati.
classe per import ed export di volumi da e in DB-All.e

Generated with Doxygen.