|
◆ vol7d_dballe_import_old()
subroutine vol7d_dballe_class::vol7d_dballe_import_old |
( |
type(vol7d_dballe), intent(inout) |
this, |
|
|
character(len=*), dimension(:), intent(in), optional |
var, |
|
|
type(vol7d_network), intent(in), optional |
network, |
|
|
type(geo_coord), intent(inout), optional |
coordmin, |
|
|
type(geo_coord), intent(inout), optional |
coordmax, |
|
|
type(datetime), intent(in), optional |
timei, |
|
|
type(datetime), intent(in), optional |
timef, |
|
|
type(vol7d_level), intent(in), optional |
level, |
|
|
type(vol7d_timerange), intent(in), optional |
timerange, |
|
|
type(vol7d_network), intent(in), optional |
set_network, |
|
|
character(len=*), dimension(:), intent(in), optional |
attr, |
|
|
character(len=*), dimension(:), intent(in), optional |
anavar, |
|
|
character(len=*), dimension(:), intent(in), optional |
anaattr, |
|
|
character(len=*), dimension(:), intent(in), optional |
varkind, |
|
|
character(len=*), dimension(:), intent(in), optional |
attrkind, |
|
|
character(len=*), dimension(:), intent(in), optional |
anavarkind, |
|
|
character(len=*), dimension(:), intent(in), optional |
anaattrkind, |
|
|
logical, intent(in), optional |
anaonly, |
|
|
logical, intent(in), optional |
dataonly, |
|
|
type(vol7d_ana), intent(inout), optional |
ana |
|
) |
| |
|
private |
import da DB-all.e
- Parametri
-
Definizione alla linea 492 del file vol7d_dballe_class.F03.
495 allocate (anastarvars%dcv(i)%dat,source=dbadatac(anaattr(i)))
497 call l4f_category_log(this%category,l4f_error, "attr and attrkind mismach")
498 CALL raise_fatal_error()
501 allocate (anastarvars%dcv(i)%dat,source=dbadatac(anaattr(i)))
511 mydbacoordmin=dbacoord()
512 if ( present(coordmin)) mydbacoordmin%geo_coord=coordmin
513 mydbacoordmax=dbacoord()
514 if ( present(coordmax)) mydbacoordmax%geo_coord=coordmax
516 if ( present(ana)) mydbaana%vol7d_ana=ana
517 mydatetimemin=dbadatetime()
518 if ( present(timei)) mydatetimemin%datetime=timei
519 mydatetimemax=dbadatetime()
520 if ( present(timef)) mydatetimemax%datetime=timef
521 mydbatimerange=dbatimerange()
522 if ( present(timerange)) mydbatimerange%vol7d_timerange=timerange
523 mydbalevel=dbalevel()
524 if ( present(level)) mydbalevel%vol7d_level=level
525 mydbanetwork=dbanetwork()
526 if ( present(network)) mydbanetwork%vol7d_network=network
531 filter=dbafilter(coordmin=mydbacoordmin,coordmax=mydbacoordmax,ana=mydbaana, &
532 datetimemin=mydatetimemin,datetimemax=mydatetimemax, &
533 timerange=mydbatimerange,level=mydbalevel,network=mydbanetwork,query=query,&
534 vars=vars,starvars=starvars,anavars=anavars,anastarvars=anastarvars,&
535 dataonly=dataonly,anaonly=anaonly)
539 call import(this,filter,set_network)
542 END SUBROUTINE vol7d_dballe_import_old
547 subroutine vol7d_dballe_import(this,filter,set_network)
549 TYPE(vol7d_dballe), INTENT(inout) :: this
550 type(dbafilter), INTENT(in) :: filter
551 TYPE(vol7d_network), INTENT(in), OPTIONAL :: set_network
553 TYPE(vol7d) :: vol7dtmp
554 type(dbametaanddata), allocatable :: metaanddatav(:)
555 type(dbafilter) :: myfilter
557 CALL l4f_category_log(this%category,l4f_debug, import vol7d_dballe ')
559 .not. if ( filter%dataonly) then
560 ! ----------------> constant station data
561 myfilter=dbafilter(filter=filter,contextana=.TRUE.,query=cmiss)
563 ! call this%handle%set(filter=myfilter)
565 CALL l4f_category_log(this%category,L4F_DEBUG,'start import vol7d_dballe ingest for constant station data ')
566 ! call this%handle%ingest(filter=myfilter)
567 call this%handle%ingest(metaanddatav,filter=myfilter)
568 CALL l4f_category_log(this%category,L4F_DEBUG,'end import vol7d_dballe ingest ')
569 CALL l4f_category_log(this%category,L4F_DEBUG,'start import vol7d_dballe dba2v7d ')
570 call dba2v7d(this%vol7d, metaanddatav,this%time_definition,set_network)
571 CALL l4f_category_log(this%category,L4F_DEBUG,'end import vol7d_dballe dba2v7d ')
573 deallocate (metaanddatav)
577 call init(this%vol7d)
578 call vol7d_alloc(this%vol7d)
579 call vol7d_alloc_vol(this%vol7d)
581 ! ----------------> constant station data end
583 .not. if ( filter%anaonly) then
584 ! ----------------> working on data
585 myfilter=dbafilter(filter=filter,contextana=.false.)
587 ! call this%handle%set(filter=myfilter)
590 CALL l4f_category_log(this%category,L4F_DEBUG,'start import vol7d_dballe ingest for station data ')
591 ! call this%handle%ingest(filter=myfilter)
592 call this%handle%ingest(metaanddatav,filter=myfilter)
593 CALL l4f_category_log(this%category,L4F_DEBUG,'end import vol7d_dballe ingest ')
594 CALL l4f_category_log(this%category,L4F_DEBUG,'start import vol7d_dballe dba2v7d ')
595 call dba2v7d(vol7dtmp,metaanddatav,this%time_definition,set_network)
596 CALL l4f_category_log(this%category,L4F_DEBUG,'end import vol7d_dballe dba2v7d ')
598 deallocate (metaanddatav)
600 CALL vol7d_merge(this%vol7d, vol7dtmp, sort=.TRUE.) ! Smart merge
602 !!$ ! should we sort separately in case no merge is done?
603 !!$ CALL vol7d_smart_sort(this%vol7d, lsort_time=.TRUE., lsort_timerange=.TRUE., lsort_level=.TRUE.)
606 call vol7d_dballe_set_var_du(this%vol7d)
613 !!$ allocate (this%data_id( nana, ntime, nlevel, ntimerange, nnetwork),stat=istat)
614 !!$ if (istat/= 0) THEN
615 !!$ CALL l4f_category_log(this%category,L4F_ERROR,'cannot allocate ' &
616 !!$ //TRIM(to_char(nana*ntime*nlevel*ntimerange*nnetwork))//' data_id elements ')
617 !!$ CALL raise_fatal_error()
621 !!$ this%data_id=DBA_MVI
625 nullify(this%data_id)
632 !CALL l4f_category_log(this%category,L4F_DEBUG,"data_id: "//trim(to_char(buffer(i)%data_id)))
635 this%data_id(indana,indtime,indlevel,indtimerange,indnetwork)=buffer(i)%data_id
638 ier=idba_set (this%handle,"*context_id",buffer(i)%data_id)
639 ier=idba_set (this%handle,"*var_related",buffer(i)%btable)
640 !per ogni dato ora lavoro sugli attributi
641 ier=idba_set(this%handle, "*varlist",starvarlist )
642 ier=idba_voglioancora (this%handle,nn)
643 !print*,buffer(i)%btable," numero attributi",nn
647 CALL l4f_category_log(this%category,L4F_DEBUG,'end import vol7d_dballe ')
649 importend subroutine vol7d_dballe_
653 !>\brief Cancella l'oggetto !>\brief Cancella l'
655 SUBROUTINE vol7d_dballe_delete(this, preserveidbhandle)
656 TYPE(vol7d_dballe) :: this !< oggetto da cancellare
657 logical,intent(in), optional :: preserveidbhandle !< do not close connection to dsn
659 # ifndef F2003_FULL_FEATURES
660 call this%handle%delete()
662 .not. if ( optio_log(preserveidbhandle)) call this%idbhandle%delete()
665 !!$if (associated(this%data_id)) then
666 !!$ deallocate (this%data_id)
667 !!$ nullify(this%data_id)
670 CALL delete(this%vol7d)
673 call l4f_category_delete(this%category)
676 END SUBROUTINE vol7d_dballe_delete
680 import dba objects in vol7d !>\brief
681 !subroutine dba2v7d(this,metaanddatav,vars,starvars,anavars,anastarvars,time_definition, set_network)
682 subroutine dba2v7d(this,metaanddatav,time_definition, set_network)
684 type(dbametaanddata),intent(inout) :: metaanddatav(:) ! change value in datetime reguard timedefinition
685 TYPE(vol7d),INTENT(inout) :: this
686 integer,INTENT(in),OPTIONAL :: time_definition !< 0=time is reference time ; 1=time is validity time (default=1)
687 TYPE(vol7d_network),INTENT(in),OPTIONAL :: set_network
689 type(dbadcv) :: starvars
690 type(dbadcv) :: anavars
691 type(dbadcv) :: anastarvars
695 integer :: indana,indtime,indlevel,indtimerange,inddativar,indnetwork,indattrvar
697 integer :: nana,ntime,ntimerange,nlevel,nnetwork
699 INTEGER :: i, j, k, n
700 integer :: inddativarattr
701 integer :: nanavar, indanavar,indanavarattr,nanavarattr
703 integer :: ndativarr, ndativari, ndativarb, ndativard, ndativarc
704 integer :: ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc
705 integer :: ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc
707 integer :: nanavarr, nanavari, nanavarb, nanavard, nanavarc
708 integer :: nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc
709 integer :: nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc
711 integer :: ndativar,ndativarattr
713 type(characterlist) :: dativarl,dativarattrl,anavarl,anavarattrl
715 character(len=listcharmaxlen),allocatable :: dativara(:),dativarattra(:),anavara(:),anavarattra(:)
717 integer :: ltime_definition
719 type(datetime),allocatable :: tmptime(:)
720 type(vol7d_network),allocatable :: tmpnetwork(:)
721 type(vol7d_level),allocatable :: tmplevel(:)
722 type(vol7d_timerange),allocatable :: tmptimerange(:)
723 type(vol7d_ana),allocatable :: tmpana(:)
726 ltime_definition=optio_i(time_definition)
727 .not. if ( c_e(ltime_definition)) ltime_definition = 1
729 ! take in account time_definition
730 if (ltime_definition == 0) then
731 do i =1,size(metaanddatav)
732 metaanddatav(i)%metadata%datetime%datetime = &
733 metaanddatav(i)%metadata%datetime%datetime - &
734 timedelta_new(sec=metaanddatav(i)%metadata%timerange%vol7d_timerange%p1)
|