libsim Versione 7.2.0

◆ dbafilter_init()

type(dbafilter) function dbafilter_init ( type(dbafilter), intent(in), optional  filter,
type(dbaana), intent(in), optional  ana,
character(len=*), intent(in), optional  var,
type(dbadatetime), intent(in), optional  datetime,
type(dbalevel), intent(in), optional  level,
type(dbatimerange), intent(in), optional  timerange,
type(dbanetwork), intent(in), optional  network,
type(dbadatetime), intent(in), optional  datetimemin,
type(dbadatetime), intent(in), optional  datetimemax,
type(dbacoord), intent(in), optional  coordmin,
type(dbacoord), intent(in), optional  coordmax,
integer, intent(in), optional  limit,
character(len=*), intent(in), optional  ana_filter,
character(len=*), intent(in), optional  data_filter,
character(len=*), intent(in), optional  attr_filter,
character(len=*), intent(in), optional  varlist,
character(len=*), intent(in), optional  starvarlist,
character(len=*), intent(in), optional  anavarlist,
character(len=*), intent(in), optional  anastarvarlist,
integer, intent(in), optional  priority,
integer, intent(in), optional  priomin,
integer, intent(in), optional  priomax,
logical, intent(in), optional  contextana,
class(dbadcv), intent(in), optional  vars,
class(dbadcv), intent(in), optional  starvars,
class(dbadcv), intent(in), optional  anavars,
class(dbadcv), intent(in), optional  anastarvars,
character(len=*), intent(in), optional  query,
logical, intent(in), optional  anaonly,
logical, intent(in), optional  dataonly 
)
private

Constructor This is the filter we can use to limit results fron the ingest operation Without parameter it is initialized to missing.

Parametri
[in]filterprototype filter to use as default
[in]anaana filter
[in]varvar filter
[in]datetimedate and time filter
[in]levellevel filter
[in]timerangetimerange filter
[in]networknetwork filter
[in]coordminminimun coordinate filter
[in]coordmaxmaximum coordinate filter
[in]datetimeminminumum date and time filter
[in]datetimemaxmaximum date and time filter
[in]limitMaximum number of results to return
[in]ana_filterRestricts the results to only those stations which have a pseudoana value that matches the filter. Examples: 'height>=1000', 'B02001=1', '1000<=height<=2000
[in]data_filterRestricts the results to only the variables of the given type, which have a value that matches the filter. Examples: 't<260', 'B22021>2', '10<=B22021<=20'
[in]attr_filterRestricts the results to only those data which have an attribute that matches the filter. Examples: 'conf>70', 'B33197=0', '25<=conf<=50'
[in]varlistComma-separated list of variable B codes wanted on output
[in]starvarlistComma-separated list of attribute B codes wanted on output
[in]anavarlistComma-separated list of variable B codes wanted on output for ana
[in]anastarvarlistComma-separated list of attribute B codes wanted on output for ana
[in]prioritypriority on network wanted on output
[in]priominminimum priority on network wanted on output
[in]priomaxmaximum priority on network wanted on output
[in]contextanaset contextana; if true we want to work on station data else on data
[in]queryComma-separated list of query modifiers. Can have one of: 'best' or obsoletes: 'bigana', 'nosort', 'stream'. Examples: 'best' obsoletes: 'nosort,stream'
[in]anaonlyonly station data wanted on input/output
[in]dataonlyonly data wanted on input/output

Definizione alla linea 2212 del file dballe_class.F03.

2217 end do
2218
2219 dbafilter_init%varlist=""
2220 do i=1,size(vars%dcv)
2221 dbafilter_init%varlist=trim(dbafilter_init%varlist)//vars%dcv(i)%dat%btable
2222 if (i /= size(vars%dcv)) dbafilter_init%varlist=trim(dbafilter_init%varlist)//","
2223 end do
2224 endif
2225end if
2226
2227if (present(starvars)) then
2228 if (allocated(starvars%dcv)) then
2229 allocate(dbafilter_init%starvars%dcv(size(starvars%dcv)))
2230 do i =1,size(starvars%dcv)
2231 allocate(dbafilter_init%starvars%dcv(i)%dat,source=starvars%dcv(i)%dat)
2232 end do
2233
2234 dbafilter_init%starvarlist=""
2235 do i=1,size(starvars%dcv)
2236 dbafilter_init%starvarlist=trim(dbafilter_init%starvarlist)//starvars%dcv(i)%dat%btable
2237 if (i /= size(starvars%dcv)) dbafilter_init%starvarlist=trim(dbafilter_init%starvarlist)//","
2238 end do
2239 end if
2240end if
2241
2242
2243if (present(anavars)) then
2244 if (allocated(anavars%dcv)) then
2245 allocate(dbafilter_init%anavars%dcv(size(anavars%dcv)))
2246 do i =1,size(anavars%dcv)
2247 allocate(dbafilter_init%anavars%dcv(i)%dat,source=anavars%dcv(i)%dat)
2248 end do
2249
2250 dbafilter_init%anavarlist=""
2251 do i=1,size(anavars%dcv)
2252 dbafilter_init%anavarlist=trim(dbafilter_init%anavarlist)//anavars%dcv(i)%dat%btable
2253 if (i /= size(anavars%dcv)) dbafilter_init%anavarlist=trim(dbafilter_init%anavarlist)//","
2254 end do
2255 endif
2256end if
2257
2258if (present(anastarvars)) then
2259 if (allocated(anastarvars%dcv)) then
2260 allocate(dbafilter_init%anastarvars%dcv(size(anastarvars%dcv)))
2261 do i =1,size(anastarvars%dcv)
2262 allocate(dbafilter_init%anastarvars%dcv(i)%dat,source=anastarvars%dcv(i)%dat)
2263 end do
2264
2265 dbafilter_init%anastarvarlist=""
2266 do i=1,size(anastarvars%dcv)
2267 dbafilter_init%anastarvarlist=trim(dbafilter_init%anastarvarlist)//anastarvars%dcv(i)%dat%btable
2268 if (i /= size(anastarvars%dcv)) dbafilter_init%anastarvarlist=trim(dbafilter_init%anastarvarlist)//","
2269 end do
2270 end if
2271end if
2272
2273if (present(priority)) then
2274 dbafilter_init%priority=priority
2275else if (nopreserve) then
2276 dbafilter_init%priority=imiss
2277end if
2278
2279if (present(priomin)) then
2280 dbafilter_init%priomin=priomax
2281else if (nopreserve) then
2282 dbafilter_init%priomin=imiss
2283end if
2284
2285if (present(priomax)) then
2286 dbafilter_init%priomax=priomax
2287else if (nopreserve) then
2288 dbafilter_init%priomax=imiss
2289end if
2290
2291if (present(contextana)) then
2292 dbafilter_init%contextana=contextana
2293else if (nopreserve) then
2294 dbafilter_init%contextana=.false.
2295end if
2296
2297if (present(anaonly)) then
2298 dbafilter_init%anaonly=anaonly
2299else if (nopreserve) then
2300 dbafilter_init%anaonly=.false.
2301end if
2302if (present(dataonly)) then
2303 dbafilter_init%dataonly=dataonly
2304else if (nopreserve) then
2305 dbafilter_init%dataonly=.false.
2306end if
2307
2308if (present(query)) then
2309 dbafilter_init%query=query
2310else if (nopreserve) then
2311 dbafilter_init%query=cmiss
2312end if
2313
2314end function dbafilter_init
2315
2317subroutine dbafilter_display(filter)
2318class(dbafilter), intent(in) :: filter
2319
2320print *,"------------------ filter ---------------"
2321call filter%ana%display()
2322call filter%datetime%display()
2323call filter%level%display()
2324call filter%timerange%display()
2325call filter%network%display()
2326print *, " >>>> minimum:"
2327call filter%datetimemin%display()
2328call filter%coordmin%display()
2329print *, " >>>> maximum:"
2330call filter%datetimemax%display()
2331call filter%coordmax%display()
2332print *, " >>>> vars:"
2333call filter%vars%display()
2334print *, " >>>> starvars:"
2335call filter%starvars%display()
2336print *, " >>>> anavars:"
2337call filter%anavars%display()
2338print *, " >>>> anastarvars:"
2339call filter%anastarvars%display()
2340print *,"var=",filter%var
2341print *,"limit=",filter%limit
2342print *,"ana_filter=",trim(filter%ana_filter)
2343print *,"data_filter=",trim(filter%data_filter)
2344print *,"attr_filter=",trim(filter%attr_filter)
2345print *,"varlist=",trim(filter%varlist)
2346print *,"*varlist=",trim(filter%starvarlist)
2347print *,"anavarlist=",trim(filter%anavarlist)
2348print *,"ana*varlist=",trim(filter%anastarvarlist)
2349print *,"priority=",filter%priority
2350print *,"priomin=",filter%priomin
2351print *,"priomax=",filter%priomax
2352print *,"contextana=",filter%contextana
2353print *,"anaonly=",filter%anaonly
2354print *,"dataonly=",filter%dataonly
2355print *,"query=",trim(filter%query)
2356
2357print *,"-----------------------------------------"
2358
2359end subroutine dbafilter_display
2360
2362subroutine dbafilter_set(filter,session)
2363class(dbafilter), intent(in) :: filter
2364type(dbasession), intent(in) :: session
2365
2366integer :: ier,year,month,day,hour,minute,sec,msec
2367
2368call session%unsetall()
2369
2370call filter%ana%dbaset(session)
2371call filter%network%dbaset(session)
2372ier = idba_set(session%sehandle,"var",filter%var)
2373
2374ier = idba_set(session%sehandle,"limit",filter%limit)
2375ier = idba_set(session%sehandle,"priority",filter%priority)
2376ier = idba_set(session%sehandle,"priomin",filter%priomin)
2377ier = idba_set(session%sehandle,"priomax",filter%priomax)
2378
2379ier = idba_set(session%sehandle,"latmin",getilat(filter%coordmin%geo_coord))
2380ier = idba_set(session%sehandle,"lonmin",getilon(filter%coordmin%geo_coord))
2381ier = idba_set(session%sehandle,"latmax",getilat(filter%coordmax%geo_coord))
2382ier = idba_set(session%sehandle,"lonmax",getilon(filter%coordmax%geo_coord))
2383
2384ier = idba_set(session%sehandle,"ana_filter",filter%ana_filter)
2385ier = idba_set(session%sehandle,"data_filter",filter%data_filter)
2386ier = idba_set(session%sehandle,"attr_filter",filter%attr_filter)
2387
2388ier = idba_set(session%sehandle,"query",filter%query)
2389
2390if (filter%contextana) then
2391
2392 call session%setcontextana()
2393
2394 ier = idba_set(session%sehandle,"varlist",filter%anavarlist)
2395 ier = idba_set(session%sehandle,"*varlist",filter%anastarvarlist)
2396
2397else
2398
2399 if (c_e(filter%datetime%datetime)) call filter%datetime%dbaset(session)
2400 if (c_e(filter%level%vol7d_level)) call filter%level%dbaset(session)
2401 if (c_e(filter%timerange%vol7d_timerange)) call filter%timerange%dbaset(session)
2402
2403 CALL getval(filter%datetimemin%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec)
2404 if (c_e(msec)) then
2405 sec=nint(float(msec)/1000.)
2406 else
2407 sec=imiss
2408 end if
2409
2410 ier = idba_set(session%sehandle,"yearmin",year)
2411 ier = idba_set(session%sehandle,"monthmin",month)
2412 ier = idba_set(session%sehandle,"daymin",day)
2413 ier = idba_set(session%sehandle,"hourmin",hour)
2414 ier = idba_set(session%sehandle,"minumin",minute)
2415 ier = idba_set(session%sehandle,"secmin",sec)
2416
2417 CALL getval(filter%datetimemax%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec)
2418
2419 if (c_e(msec)) then
2420 sec=nint(float(msec)/1000.)
2421 else
2422 sec=imiss
2423 end if
2424
2425 ier = idba_set(session%sehandle,"yearmax",year)
2426 ier = idba_set(session%sehandle,"monthmax",month)
2427 ier = idba_set(session%sehandle,"daymax",day)
2428 ier = idba_set(session%sehandle,"hourmax",hour)
2429 ier = idba_set(session%sehandle,"minumax",minute)
2430 ier = idba_set(session%sehandle,"secmax",sec)
2431
2432
2433 ier = idba_set(session%sehandle,"varlist",filter%varlist)
2434 ier = idba_set(session%sehandle,"*varlist",filter%starvarlist)
2435end if
2436
2437end subroutine dbafilter_set
2438
2439
2441type(dbametadata) function dbametadata_contextana(metadata)
2442class(dbametadata), intent(in) :: metadata
2443
2444type (dbadatetime) :: datetime
2445type (dbalevel) :: level
2446type (dbatimerange) :: timerange
2447
2448select type(metadata)
2449type is(dbametadata)
2450 dbametadata_contextana=metadata
2451end select
2452
2453dbametadata_contextana%datetime=datetime%dbacontextana()
2454dbametadata_contextana%level=level%dbacontextana()
2455dbametadata_contextana%timerange=timerange%dbacontextana()
2456
2457end function dbametadata_contextana
2458
2459
2461subroutine dbametaanddata_display(metaanddata)
2462class(dbametaanddata), intent(in) :: metaanddata
2463
2464call metaanddata%metadata%display()
2465call metaanddata%dataattrv%display()
2466
2467end subroutine dbametaanddata_display
2468
2470subroutine dbametaanddata_extrude(metaanddata,session,noattr,filter,attronly,template)
2471class(dbametaanddata), intent(in) :: metaanddata
2472type(dbasession), intent(in) :: session
2473logical, intent(in),optional :: noattr
2474type(dbafilter),intent(in),optional :: filter
2475logical, intent(in),optional :: attronly
2476character(len=*),intent(in),optional :: template
2477
2478type(dbafilter) :: myfilter
2479
2480!print *,"------------------"
2481!call metaanddata%display()
2482!print *,"contextana false"
2483
2484myfilter=dbafilter(filter=filter,contextana=.false.)
2485call extrude(metaanddata,session,noattr,myfilter,attronly,template)
2486
2487!print *,"contextana true"
2488myfilter=dbafilter(filter=filter,contextana=.true.)
2489call extrude(metaanddata,session,noattr,myfilter,attronly,template)
2490
2491contains
2492
2493subroutine extrude(metaanddata,session,noattr,filter,attronly,template)
2494class(dbametaanddata), intent(in) :: metaanddata
2495type(dbasession), intent(in) :: session
2496logical, intent(in),optional :: noattr
2497type(dbafilter),intent(in) :: filter
2498logical, intent(in),optional :: attronly
2499character(len=*),intent(in),optional :: template
2500
2501if (.not. filter == metaanddata%metadata) return

Generated with Doxygen.