|
◆ 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] | filter | prototype filter to use as default |
[in] | ana | ana filter |
[in] | var | var filter |
[in] | datetime | date and time filter |
[in] | level | level filter |
[in] | timerange | timerange filter |
[in] | network | network filter |
[in] | coordmin | minimun coordinate filter |
[in] | coordmax | maximum coordinate filter |
[in] | datetimemin | minumum date and time filter |
[in] | datetimemax | maximum date and time filter |
[in] | limit | Maximum number of results to return |
[in] | ana_filter | Restricts 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_filter | Restricts 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_filter | Restricts the results to only those data which have an attribute that matches the filter. Examples: 'conf>70', 'B33197=0', '25<=conf<=50' |
[in] | varlist | Comma-separated list of variable B codes wanted on output |
[in] | starvarlist | Comma-separated list of attribute B codes wanted on output |
[in] | anavarlist | Comma-separated list of variable B codes wanted on output for ana |
[in] | anastarvarlist | Comma-separated list of attribute B codes wanted on output for ana |
[in] | priority | priority on network wanted on output |
[in] | priomin | minimum priority on network wanted on output |
[in] | priomax | maximum priority on network wanted on output |
[in] | contextana | set contextana; if true we want to work on station data else on data |
[in] | query | Comma-separated list of query modifiers. Can have one of: 'best' or obsoletes: 'bigana', 'nosort', 'stream'. Examples: 'best' obsoletes: 'nosort,stream' |
[in] | anaonly | only station data wanted on input/output |
[in] | dataonly | only data wanted on input/output |
Definizione alla linea 2247 del file dballe_class.F03.
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) 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)// "," 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) 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)// "," 2278 if ( present(priority)) then 2279 dbafilter_init%priority=priority 2280 else if (nopreserve) then 2281 dbafilter_init%priority=imiss 2284 if ( present(priomin)) then 2285 dbafilter_init%priomin=priomax 2286 else if (nopreserve) then 2287 dbafilter_init%priomin=imiss 2290 if ( present(priomax)) then 2291 dbafilter_init%priomax=priomax 2292 else if (nopreserve) then 2293 dbafilter_init%priomax=imiss 2296 if ( present(contextana)) then 2297 dbafilter_init%contextana=contextana 2298 else if (nopreserve) then 2299 dbafilter_init%contextana=.false. 2302 if ( present(anaonly)) then 2303 dbafilter_init%anaonly=anaonly 2304 else if (nopreserve) then 2305 dbafilter_init%anaonly=.false. 2307 if ( present(dataonly)) then 2308 dbafilter_init%dataonly=dataonly 2309 else if (nopreserve) then 2310 dbafilter_init%dataonly=.false. 2313 if ( present(query)) then 2314 dbafilter_init%query=query 2315 else if (nopreserve) then 2316 dbafilter_init%query=cmiss 2319 end function dbafilter_init 2322 subroutine dbafilter_display(filter) 2323 class(dbafilter), intent(in) :: filter 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) 2362 print *, "-----------------------------------------" 2364 end subroutine dbafilter_display 2367 subroutine dbafilter_set(filter,session) 2368 class(dbafilter), intent(in) :: filter 2369 type(dbasession), intent(in) :: session 2371 integer :: ier,year,month,day,hour,minute,sec,msec 2373 call session%unsetall() 2375 call filter%ana%dbaset(session) 2376 call filter%network%dbaset(session) 2377 ier = idba_set(session%sehandle, "var",filter%var) 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) 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)) 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) 2393 ier = idba_set(session%sehandle, "query",filter%query) 2395 if (filter%contextana) then 2397 call session%setcontextana() 2399 ier = idba_set(session%sehandle, "varlist",filter%anavarlist) 2400 ier = idba_set(session%sehandle, "*varlist",filter%anastarvarlist) 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) 2408 CALL getval(filter%datetimemin%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec) 2410 sec=nint(float(msec)/1000.) 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) 2422 CALL getval(filter%datetimemax%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec) 2425 sec=nint(float(msec)/1000.) 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) 2438 ier = idba_set(session%sehandle, "varlist",filter%varlist) 2439 ier = idba_set(session%sehandle, "*varlist",filter%starvarlist) 2442 end subroutine dbafilter_set 2446 type(dbametadata) function dbametadata_contextana(metadata) 2447 class(dbametadata), intent(in) :: metadata 2450 type(dbalevel) :: level 2451 type(dbatimerange) :: timerange 2453 select type(metadata) 2454 type is(dbametadata) 2455 dbametadata_contextana=metadata 2458 dbametadata_contextana%datetime= datetime%dbacontextana() 2459 dbametadata_contextana%level=level%dbacontextana() 2460 dbametadata_contextana%timerange=timerange%dbacontextana() 2462 end function dbametadata_contextana 2466 subroutine dbametaanddata_display(metaanddata) 2467 class(dbametaanddata), intent(in) :: metaanddata 2469 call metaanddata%metadata%display() 2470 call metaanddata%dataattrv%display() 2472 end subroutine dbametaanddata_display 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 2483 type(dbafilter) :: myfilter 2489 myfilter=dbafilter(filter=filter,contextana=.false.) 2490 call extrude(metaanddata,session,noattr,myfilter,attronly,template) 2493 myfilter=dbafilter(filter=filter,contextana=.true.) 2494 call extrude(metaanddata,session,noattr,myfilter,attronly,template) 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 2506 if (.not. filter == metaanddata%metadata) return 2508 call session%unsetall() 2510 call session%set(metadata=metaanddata%metadata) 2514 call metaanddata%dataattrv%extrude(session,noattr,filter,attronly) 2517 call session%close_message(template) 2519 end subroutine extrude 2520 end subroutine dbametaanddata_extrude 2524 subroutine dbametaanddatav_display(metaanddatav) 2525 class(dbametaanddatav), intent(in) :: metaanddatav 2527 call metaanddatav%metadata%display() 2528 call metaanddatav%datav%display() 2530 end subroutine dbametaanddatav_display Class for expressing an absolute time value.
Restituiscono il valore dell'oggetto nella forma desiderata.
|