|
◆ 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 2222 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)
|