libsim  Versione6.3.0

◆ dbafilter_init()

type(dbafilter) function dballe_class::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 2247 del file dballe_class.F03.

2247 
2248 if (present(anavars)) then
2249  if (allocated(anavars%dcv)) then
2250  allocate(dbafilter_init%anavars%dcv(size(anavars%dcv)))
2251  do i =1,size(anavars%dcv)
2252  allocate(dbafilter_init%anavars%dcv(i)%dat,source=anavars%dcv(i)%dat)
2253  end do
2254 
2255  dbafilter_init%anavarlist=""
2256  do i=1,size(anavars%dcv)
2257  dbafilter_init%anavarlist=trim(dbafilter_init%anavarlist)//anavars%dcv(i)%dat%btable
2258  if (i /= size(anavars%dcv)) dbafilter_init%anavarlist=trim(dbafilter_init%anavarlist)//","
2259  end do
2260  endif
2261 end if
2262 
2263 if (present(anastarvars)) then
2264  if (allocated(anastarvars%dcv)) then
2265  allocate(dbafilter_init%anastarvars%dcv(size(anastarvars%dcv)))
2266  do i =1,size(anastarvars%dcv)
2267  allocate(dbafilter_init%anastarvars%dcv(i)%dat,source=anastarvars%dcv(i)%dat)
2268  end do
2269 
2270  dbafilter_init%anastarvarlist=""
2271  do i=1,size(anastarvars%dcv)
2272  dbafilter_init%anastarvarlist=trim(dbafilter_init%anastarvarlist)//anastarvars%dcv(i)%dat%btable
2273  if (i /= size(anastarvars%dcv)) dbafilter_init%anastarvarlist=trim(dbafilter_init%anastarvarlist)//","
2274  end do
2275  end if
2276 end if
2277 
2278 if (present(priority)) then
2279  dbafilter_init%priority=priority
2280 else if (nopreserve) then
2281  dbafilter_init%priority=imiss
2282 end if
2283 
2284 if (present(priomin)) then
2285  dbafilter_init%priomin=priomax
2286 else if (nopreserve) then
2287  dbafilter_init%priomin=imiss
2288 end if
2289 
2290 if (present(priomax)) then
2291  dbafilter_init%priomax=priomax
2292 else if (nopreserve) then
2293  dbafilter_init%priomax=imiss
2294 end if
2295 
2296 if (present(contextana)) then
2297  dbafilter_init%contextana=contextana
2298 else if (nopreserve) then
2299  dbafilter_init%contextana=.false.
2300 end if
2301 
2302 if (present(anaonly)) then
2303  dbafilter_init%anaonly=anaonly
2304 else if (nopreserve) then
2305  dbafilter_init%anaonly=.false.
2306 end if
2307 if (present(dataonly)) then
2308  dbafilter_init%dataonly=dataonly
2309 else if (nopreserve) then
2310  dbafilter_init%dataonly=.false.
2311 end if
2312 
2313 if (present(query)) then
2314  dbafilter_init%query=query
2315 else if (nopreserve) then
2316  dbafilter_init%query=cmiss
2317 end if
2318 
2319 end function dbafilter_init
2320 
2322 subroutine dbafilter_display(filter)
2323 class(dbafilter), intent(in) :: filter
2324 
2325 print *,"------------------ filter ---------------"
2326 call filter%ana%display()
2327 call filter%datetime%display()
2328 call filter%level%display()
2329 call filter%timerange%display()
2330 call filter%network%display()
2331 print *, " >>>> minimum:"
2332 call filter%datetimemin%display()
2333 call filter%coordmin%display()
2334 print *, " >>>> maximum:"
2335 call filter%datetimemax%display()
2336 call filter%coordmax%display()
2337 print *, " >>>> vars:"
2338 call filter%vars%display()
2339 print *, " >>>> starvars:"
2340 call filter%starvars%display()
2341 print *, " >>>> anavars:"
2342 call filter%anavars%display()
2343 print *, " >>>> anastarvars:"
2344 call filter%anastarvars%display()
2345 print *,"var=",filter%var
2346 print *,"limit=",filter%limit
2347 print *,"ana_filter=",trim(filter%ana_filter)
2348 print *,"data_filter=",trim(filter%data_filter)
2349 print *,"attr_filter=",trim(filter%attr_filter)
2350 print *,"varlist=",trim(filter%varlist)
2351 print *,"*varlist=",trim(filter%starvarlist)
2352 print *,"anavarlist=",trim(filter%anavarlist)
2353 print *,"ana*varlist=",trim(filter%anastarvarlist)
2354 print *,"priority=",filter%priority
2355 print *,"priomin=",filter%priomin
2356 print *,"priomax=",filter%priomax
2357 print *,"contextana=",filter%contextana
2358 print *,"anaonly=",filter%anaonly
2359 print *,"dataonly=",filter%dataonly
2360 print *,"query=",trim(filter%query)
2361 
2362 print *,"-----------------------------------------"
2363 
2364 end subroutine dbafilter_display
2365 
2367 subroutine dbafilter_set(filter,session)
2368 class(dbafilter), intent(in) :: filter
2369 type(dbasession), intent(in) :: session
2370 
2371 integer :: ier,year,month,day,hour,minute,sec,msec
2372 
2373 call session%unsetall()
2374 
2375 call filter%ana%dbaset(session)
2376 call filter%network%dbaset(session)
2377 ier = idba_set(session%sehandle,"var",filter%var)
2378 
2379 ier = idba_set(session%sehandle,"limit",filter%limit)
2380 ier = idba_set(session%sehandle,"priority",filter%priority)
2381 ier = idba_set(session%sehandle,"priomin",filter%priomin)
2382 ier = idba_set(session%sehandle,"priomax",filter%priomax)
2383 
2384 ier = idba_set(session%sehandle,"latmin",getilat(filter%coordmin%geo_coord))
2385 ier = idba_set(session%sehandle,"lonmin",getilon(filter%coordmin%geo_coord))
2386 ier = idba_set(session%sehandle,"latmax",getilat(filter%coordmax%geo_coord))
2387 ier = idba_set(session%sehandle,"lonmax",getilon(filter%coordmax%geo_coord))
2388 
2389 ier = idba_set(session%sehandle,"ana_filter",filter%ana_filter)
2390 ier = idba_set(session%sehandle,"data_filter",filter%data_filter)
2391 ier = idba_set(session%sehandle,"attr_filter",filter%attr_filter)
2392 
2393 ier = idba_set(session%sehandle,"query",filter%query)
2394 
2395 if (filter%contextana) then
2396 
2397  call session%setcontextana()
2398 
2399  ier = idba_set(session%sehandle,"varlist",filter%anavarlist)
2400  ier = idba_set(session%sehandle,"*varlist",filter%anastarvarlist)
2401 
2402 else
2403 
2404  if (c_e(filter%datetime%datetime)) call filter%datetime%dbaset(session)
2405  if (c_e(filter%level%vol7d_level)) call filter%level%dbaset(session)
2406  if (c_e(filter%timerange%vol7d_timerange)) call filter%timerange%dbaset(session)
2407 
2408  CALL getval(filter%datetimemin%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec)
2409  if (c_e(msec)) then
2410  sec=nint(float(msec)/1000.)
2411  else
2412  sec=imiss
2413  end if
2414 
2415  ier = idba_set(session%sehandle,"yearmin",year)
2416  ier = idba_set(session%sehandle,"monthmin",month)
2417  ier = idba_set(session%sehandle,"daymin",day)
2418  ier = idba_set(session%sehandle,"hourmin",hour)
2419  ier = idba_set(session%sehandle,"minumin",minute)
2420  ier = idba_set(session%sehandle,"secmin",sec)
2421 
2422  CALL getval(filter%datetimemax%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec)
2423 
2424  if (c_e(msec)) then
2425  sec=nint(float(msec)/1000.)
2426  else
2427  sec=imiss
2428  end if
2429 
2430  ier = idba_set(session%sehandle,"yearmax",year)
2431  ier = idba_set(session%sehandle,"monthmax",month)
2432  ier = idba_set(session%sehandle,"daymax",day)
2433  ier = idba_set(session%sehandle,"hourmax",hour)
2434  ier = idba_set(session%sehandle,"minumax",minute)
2435  ier = idba_set(session%sehandle,"secmax",sec)
2436 
2437 
2438  ier = idba_set(session%sehandle,"varlist",filter%varlist)
2439  ier = idba_set(session%sehandle,"*varlist",filter%starvarlist)
2440 end if
2441 
2442 end subroutine dbafilter_set
2443 
2444 
2446 type(dbametadata) function dbametadata_contextana(metadata)
2447 class(dbametadata), intent(in) :: metadata
2448 
2449 type(dbadatetime) :: datetime
2450 type(dbalevel) :: level
2451 type(dbatimerange) :: timerange
2452 
2453 select type(metadata)
2454 type is(dbametadata)
2455  dbametadata_contextana=metadata
2456 end select
2457 
2458 dbametadata_contextana%datetime=datetime%dbacontextana()
2459 dbametadata_contextana%level=level%dbacontextana()
2460 dbametadata_contextana%timerange=timerange%dbacontextana()
2461 
2462 end function dbametadata_contextana
2463 
2464 
2466 subroutine dbametaanddata_display(metaanddata)
2467 class(dbametaanddata), intent(in) :: metaanddata
2468 
2469 call metaanddata%metadata%display()
2470 call metaanddata%dataattrv%display()
2471 
2472 end subroutine dbametaanddata_display
2473 
2475 subroutine dbametaanddata_extrude(metaanddata,session,noattr,filter,attronly,template)
2476 class(dbametaanddata), intent(in) :: metaanddata
2477 type(dbasession), intent(in) :: session
2478 logical, intent(in),optional :: noattr
2479 type(dbafilter),intent(in),optional :: filter
2480 logical, intent(in),optional :: attronly
2481 character(len=*),intent(in),optional :: template
2482 
2483 type(dbafilter) :: myfilter
2484 
2485 !print *,"------------------"
2486 !call metaanddata%display()
2487 !print *,"contextana false"
2488 
2489 myfilter=dbafilter(filter=filter,contextana=.false.)
2490 call extrude(metaanddata,session,noattr,myfilter,attronly,template)
2491 
2492 !print *,"contextana true"
2493 myfilter=dbafilter(filter=filter,contextana=.true.)
2494 call extrude(metaanddata,session,noattr,myfilter,attronly,template)
2495 
2496 contains
2497 
2498 subroutine extrude(metaanddata,session,noattr,filter,attronly,template)
2499 class(dbametaanddata), intent(in) :: metaanddata
2500 type(dbasession), intent(in) :: session
2501 logical, intent(in),optional :: noattr
2502 type(dbafilter),intent(in) :: filter
2503 logical, intent(in),optional :: attronly
2504 character(len=*),intent(in),optional :: template
2505 
2506 if (.not. filter == metaanddata%metadata) return
2507 
2508 call session%unsetall()
2509 !write metadata
2510 call session%set(metadata=metaanddata%metadata)
2511 
2512 !write data and attribute
2513 !call session%extrude(metaanddata%dataattrv,noattr,filter)
2514 call metaanddata%dataattrv%extrude(session,noattr,filter,attronly)
2515 
2516 !to close message on file
2517 call session%close_message(template)
2518 
2519 end subroutine extrude
2520 end subroutine dbametaanddata_extrude
2521 
2522 
2524 subroutine dbametaanddatav_display(metaanddatav)
2525 class(dbametaanddatav), intent(in) :: metaanddatav
2526 
2527 call metaanddatav%metadata%display()
2528 call metaanddatav%datav%display()
2529 
2530 end subroutine dbametaanddatav_display
2531 
Class for expressing an absolute time value.
Restituiscono il valore dell&#39;oggetto nella forma desiderata.

Generated with Doxygen.