SOI TN 99-141
R S Bogart, J A Aloise, R I Bush, K Leibrand, J Schou, & J Sommers
To solve the orthogonal problem, of finding data of multiple types for a given time, there should ideally be a set of similar programs to query the database to find all dataset names, possibly matching certain selection criteria, within a specified time interval. Unfortunately the existing database is not well-structured to support such queries: time comparisons (based on the T_START and T_STOP parameters for example) are very slow, and there is no guarantee that these time intervals can be converted to valid record number ranges.
To solve the problem in the restricted case of data in prog:mdi,level:lev1.5 (or lev1.4), the solution is fairly simple, since all such datasets are organized either hourly or daily, and furthermore all obey the naming convention that the series names are *_01h, *_06h, or *_01d depending on the organization. Since use of the DS naming table to construct correspondences between record numbers and time intervals is inherently more flexible and trustworthy than relying on name conventions, this approach should be used. It is the same approach currently used by the pls family.
A general-purpose tool should query the DS naming table (and epoch table) for all datasets matching a given set of Block values; in this specific implementation those should be 1hr, 6hr, and 1day, and the Prog and Level values should be further restricted to mdi and lev1.5 respectively. The DS naming query tool should also support (but not require!) restriction of the Series value as well. The result of the query to the DS naming table would be sets of prog:level:series triads for each Block value (15 for prog:mdi,level:lev1.5; block:1day and about 65 for prog:mdi,level:lev1.5; block:1hr). A separate program should combine these triads with appropriate record ranges corresponding to a selected time interval for direct queries to the database in order to generate lists of found datasets for preparation of request tables similar to the existing ones. Presumably data should be organized in this scheme by record number: for example, all data series for a given hour (or day) should be listed together, rather than all hours for a given series; but the query tool described could support either method, that merely depends on the design of the web-page generating program. Obviously tools are required to translate times to record numbers based on blocking and epoch information, but the existing tools probably suffice.
Note that the results of the query to the DS naming table could well be cached in semi-permanent files, since the table is very seldom changed and the number of records is quite small. An example of such a table might look like the following:
sun> cat $QRY_CACHE/prog:mdi,lev:lev1.5,block:1day mdi^lev1.5^fd2loi64_Ic_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^fd_Ic_6h_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^fd_M_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^fd_M_96m_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^fd_Mag_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^fd_V_6h_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^loi64_Ic_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^loi64_V_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^loi_Ld_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^loi_V_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^rwbin_Ic_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^rwbin_Ld_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^vw_Ld_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI mdi^lev1.5^vw_V_01d^TS_EQ^t_obs^1993.01.01_00:00:00_TAI
An example of such an entry level form might look like the following (checkboxes may be preferable to some of the menus):
Lower-level forms, generated on the fly by the query programs, would send the same information to the query programs, except that since the first level program would generate a complete list of available data sets matching the selection criteria, only one additional selection level would be required. An example of such a page, generated by a request for all MDI level 1.5 Doppler data between 1999.10.09_00:00 and 1999.10.09_17:59, might look like the following:
|Series||Observable||Cadence||Image Size||Nominal Resolution ["/pxl]|
|fd_V_6h_01d||Doppler||4 / day||1024×1024||2|
|loi64_V_01d||Doppler||1440 / day||64×64||32|
|vw_V_06h||Doppler||360 / 6 hr||192×192||10|
|hr_Vm_bin2x2_01h||Doppler||60 / hour||512×512||1.3|
|fd_V_01h||Doppler||60 / hour||1024×1024||2|
The issue of extracting single images, however, is independent of cuts through the database, and ought to be addressed separately.