libsim  Versione 7.1.6

◆ 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 2218 del file dballe_class.F03.

2223  end do
2224  endif
2225 end if
2226 
2227 if (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
2240 end if
2241 
2242 
2243 if (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
2256 end if
2257 
2258 if (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
2271 end if
2272 
2273 if (present(priority)) then
2274  dbafilter_init%priority=priority
2275 else if (nopreserve) then
2276  dbafilter_init%priority=imiss
2277 end if
2278 
2279 if (present(priomin)) then
2280  dbafilter_init%priomin=priomax
2281 else if (nopreserve) then
2282  dbafilter_init%priomin=imiss
2283 end if
2284 
2285 if (present(priomax)) then
2286  dbafilter_init%priomax=priomax
2287 else if (nopreserve) then
2288  dbafilter_init%priomax=imiss
2289 end if
2290 
2291 if (present(contextana)) then
2292  dbafilter_init%contextana=contextana
2293 else if (nopreserve) then
2294  dbafilter_init%contextana=.false.
2295 end if
2296 
2297 if (present(anaonly)) then
2298  dbafilter_init%anaonly=anaonly
2299 else if (nopreserve) then
2300  dbafilter_init%anaonly=.false.
2301 end if
2302 if (present(dataonly)) then
2303  dbafilter_init%dataonly=dataonly
2304 else if (nopreserve) then
2305  dbafilter_init%dataonly=.false.
2306 end if
2307 
2308 if (present(query)) then
2309  dbafilter_init%query=query
2310 else if (nopreserve) then
2311  dbafilter_init%query=cmiss
2312 end if
2313 
2314 end function dbafilter_init
2315 
2317 subroutine dbafilter_display(filter)
2318 class(dbafilter), intent(in) :: filter
2319 
2320 print *,"------------------ filter ---------------"
2321 call filter%ana%display()
2322 call filter%datetime%display()
2323 call filter%level%display()
2324 call filter%timerange%display()
2325 call filter%network%display()
2326 print *, " >>>> minimum:"
2327 call filter%datetimemin%display()
2328 call filter%coordmin%display()
2329 print *, " >>>> maximum:"
2330 call filter%datetimemax%display()
2331 call filter%coordmax%display()
2332 print *, " >>>> vars:"
2333 call filter%vars%display()
2334 print *, " >>>> starvars:"
2335 call filter%starvars%display()
2336 print *, " >>>> anavars:"
2337 call filter%anavars%display()
2338 print *, " >>>> anastarvars:"
2339 call filter%anastarvars%display()
2340 print *,"var=",filter%var
2341 print *,"limit=",filter%limit
2342 print *,"ana_filter=",trim(filter%ana_filter)
2343 print *,"data_filter=",trim(filter%data_filter)
2344 print *,"attr_filter=",trim(filter%attr_filter)
2345 print *,"varlist=",trim(filter%varlist)
2346 print *,"*varlist=",trim(filter%starvarlist)
2347 print *,"anavarlist=",trim(filter%anavarlist)
2348 print *,"ana*varlist=",trim(filter%anastarvarlist)
2349 print *,"priority=",filter%priority
2350 print *,"priomin=",filter%priomin
2351 print *,"priomax=",filter%priomax
2352 print *,"contextana=",filter%contextana
2353 print *,"anaonly=",filter%anaonly
2354 print *,"dataonly=",filter%dataonly
2355 print *,"query=",trim(filter%query)
2356 
2357 print *,"-----------------------------------------"
2358 
2359 end subroutine dbafilter_display
2360 
2362 subroutine dbafilter_set(filter,session)
2363 class(dbafilter), intent(in) :: filter
2364 type(dbasession), intent(in) :: session
2365 
2366 integer :: ier,year,month,day,hour,minute,sec,msec
2367 
2368 call session%unsetall()
2369 
2370 call filter%ana%dbaset(session)
2371 call filter%network%dbaset(session)
2372 ier = idba_set(session%sehandle,"var",filter%var)
2373 
2374 ier = idba_set(session%sehandle,"limit",filter%limit)
2375 ier = idba_set(session%sehandle,"priority",filter%priority)
2376 ier = idba_set(session%sehandle,"priomin",filter%priomin)
2377 ier = idba_set(session%sehandle,"priomax",filter%priomax)
2378 
2379 ier = idba_set(session%sehandle,"latmin",getilat(filter%coordmin%geo_coord))
2380 ier = idba_set(session%sehandle,"lonmin",getilon(filter%coordmin%geo_coord))
2381 ier = idba_set(session%sehandle,"latmax",getilat(filter%coordmax%geo_coord))
2382 ier = idba_set(session%sehandle,"lonmax",getilon(filter%coordmax%geo_coord))
2383 
2384 ier = idba_set(session%sehandle,"ana_filter",filter%ana_filter)
2385 ier = idba_set(session%sehandle,"data_filter",filter%data_filter)
2386 ier = idba_set(session%sehandle,"attr_filter",filter%attr_filter)
2387 
2388 ier = idba_set(session%sehandle,"query",filter%query)
2389 
2390 if (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 
2397 else
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)
2435 end if
2436 
2437 end subroutine dbafilter_set
2438 
2439 
2441 type(dbametadata) function dbametadata_contextana(metadata)
2442 class(dbametadata), intent(in) :: metadata
2443 
2444 type (dbadatetime) :: datetime
2445 type (dbalevel) :: level
2446 type (dbatimerange) :: timerange
2447 
2448 select type(metadata)
2449 type is(dbametadata)
2450  dbametadata_contextana=metadata
2451 end select
2452 
2453 dbametadata_contextana%datetime=datetime%dbacontextana()
2454 dbametadata_contextana%level=level%dbacontextana()
2455 dbametadata_contextana%timerange=timerange%dbacontextana()
2456 
2457 end function dbametadata_contextana
2458 
2459 
2461 subroutine dbametaanddata_display(metaanddata)
2462 class(dbametaanddata), intent(in) :: metaanddata
2463 
2464 call metaanddata%metadata%display()
2465 call metaanddata%dataattrv%display()
2466 
2467 end subroutine dbametaanddata_display
2468 
2470 subroutine dbametaanddata_extrude(metaanddata,session,noattr,filter,attronly,template)
2471 class(dbametaanddata), intent(in) :: metaanddata
2472 type(dbasession), intent(in) :: session
2473 logical, intent(in),optional :: noattr
2474 type(dbafilter),intent(in),optional :: filter
2475 logical, intent(in),optional :: attronly
2476 character(len=*),intent(in),optional :: template
2477 
2478 type(dbafilter) :: myfilter
2479 
2480 !print *,"------------------"
2481 !call metaanddata%display()
2482 !print *,"contextana false"
2483 
2484 myfilter=dbafilter(filter=filter,contextana=.false.)
2485 call extrude(metaanddata,session,noattr,myfilter,attronly,template)
2486 
2487 !print *,"contextana true"
2488 myfilter=dbafilter(filter=filter,contextana=.true.)
2489 call extrude(metaanddata,session,noattr,myfilter,attronly,template)
2490 
2491 contains
2492 
2493 subroutine extrude(metaanddata,session,noattr,filter,attronly,template)
2494 class(dbametaanddata), intent(in) :: metaanddata
2495 type(dbasession), intent(in) :: session
2496 logical, intent(in),optional :: noattr
2497 type(dbafilter),intent(in) :: filter
2498 logical, intent(in),optional :: attronly
2499 character(len=*),intent(in),optional :: template
2500 
2501 if (.not. filter == metaanddata%metadata) return
2502 
2503 call session%unsetall()
2504 !write metadata
2505 call session%set(metadata=metaanddata%metadata)
2506 
2507 !write data and attribute

Generated with Doxygen.