|
◆ 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 2227 del file dballe_class.F03.
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) 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)// "," 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) 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)// "," 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) 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)// "," 2273 if ( present(priority)) then 2274 dbafilter_init%priority=priority 2275 else if (nopreserve) then 2276 dbafilter_init%priority=imiss 2279 if ( present(priomin)) then 2280 dbafilter_init%priomin=priomax 2281 else if (nopreserve) then 2282 dbafilter_init%priomin=imiss 2285 if ( present(priomax)) then 2286 dbafilter_init%priomax=priomax 2287 else if (nopreserve) then 2288 dbafilter_init%priomax=imiss 2291 if ( present(contextana)) then 2292 dbafilter_init%contextana=contextana 2293 else if (nopreserve) then 2294 dbafilter_init%contextana=.false. 2297 if ( present(anaonly)) then 2298 dbafilter_init%anaonly=anaonly 2299 else if (nopreserve) then 2300 dbafilter_init%anaonly=.false. 2302 if ( present(dataonly)) then 2303 dbafilter_init%dataonly=dataonly 2304 else if (nopreserve) then 2305 dbafilter_init%dataonly=.false. 2308 if ( present(query)) then 2309 dbafilter_init%query=query 2310 else if (nopreserve) then 2311 dbafilter_init%query=cmiss 2314 end function dbafilter_init 2317 subroutine dbafilter_display(filter) 2318 class(dbafilter), intent(in) :: filter 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) 2357 print *, "-----------------------------------------" 2359 end subroutine dbafilter_display 2362 subroutine dbafilter_set(filter,session) 2363 class(dbafilter), intent(in) :: filter 2364 type(dbasession), intent(in) :: session 2366 integer :: ier,year,month,day,hour,minute,sec,msec 2368 call session%unsetall() 2370 call filter%ana%dbaset(session) 2371 call filter%network%dbaset(session) 2372 ier = idba_set(session%sehandle, "var",filter%var) 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) 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)) 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) 2388 ier = idba_set(session%sehandle, "query",filter%query) 2390 if (filter%contextana) then 2392 call session%setcontextana() 2394 ier = idba_set(session%sehandle, "varlist",filter%anavarlist) 2395 ier = idba_set(session%sehandle, "*varlist",filter%anastarvarlist) 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) 2403 CALL getval(filter%datetimemin%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec) 2405 sec=nint(float(msec)/1000.) 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) 2417 CALL getval(filter%datetimemax%datetime, year=year, month=month, day=day, hour=hour, minute=minute,msec=msec) 2420 sec=nint(float(msec)/1000.) 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) 2433 ier = idba_set(session%sehandle, "varlist",filter%varlist) 2434 ier = idba_set(session%sehandle, "*varlist",filter%starvarlist) 2437 end subroutine dbafilter_set 2441 type(dbametadata) function dbametadata_contextana(metadata) 2442 class(dbametadata), intent(in) :: metadata 2444 type(dbadatetime) :: datetime 2445 type(dbalevel) :: level 2446 type(dbatimerange) :: timerange 2448 select type(metadata) 2449 type is(dbametadata) 2450 dbametadata_contextana=metadata 2453 dbametadata_contextana%datetime=datetime%dbacontextana() 2454 dbametadata_contextana%level=level%dbacontextana() 2455 dbametadata_contextana%timerange=timerange%dbacontextana() 2457 end function dbametadata_contextana 2461 subroutine dbametaanddata_display(metaanddata) 2462 class(dbametaanddata), intent(in) :: metaanddata 2464 call metaanddata%metadata%display() 2465 call metaanddata%dataattrv%display() 2467 end subroutine dbametaanddata_display 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 2478 type(dbafilter) :: myfilter 2484 myfilter=dbafilter(filter=filter,contextana=.false.) 2485 call extrude(metaanddata,session,noattr,myfilter,attronly,template) 2488 myfilter=dbafilter(filter=filter,contextana=.true.) 2489 call extrude(metaanddata,session,noattr,myfilter,attronly,template) 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 2501 if (.not. filter == metaanddata%metadata) return 2503 call session%unsetall() 2505 call session%set(metadata=metaanddata%metadata) 2509 call metaanddata%dataattrv%extrude(session,noattr,filter,attronly)
|