How my generator works Linyun Data provider has the following Raw data Dataset: ECMWF_ERA-40_subset.ncml longitude, 0, 2.5, …, 355, 357.5 latitude, 90, 87.5, …, -87.5, -90 time, 898476, 898482, …, 899196, 899202 tcw.longitude, 0, 2.5, …, 355, 357.5 tcw.tcw[tcw.time=898476][tcw.latitude=90], -25311, -25311, …, -25311 tcw.tcw[tcw.time=898476][tcw.latitude=87.5], -23880, -23798, …, -25311 …… Metadata NC_GLOBAL.Conventions: CF-1.0 NC_GLOBAL.history: 2004-09-15 17:04:29 GMT by mars2netcdf-0.92 DODS_EXTRA.Unlimited_Dimension: time WcsMetadata: <Domain xmlns="http://www.opengis.net/wcs/1.1" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml"> <SpatialDomain> <ows:BoundingBox crs="urn:ogc:def:crs:EPSG::4326"> <ows:LowerCorner>360 90</ows:LowerCorner> <ows:UpperCorner>0 -90</ows:UpperCorner> </ows:BoundingBox> </SpatialDomain> <TemporalDomain> <TimePeriod> <BeginPosition>2002-07-01T09:00/15:00</BeginPosition> <EndPosition>2002-07-31T15:00/21:00</EndPosition> <TimeResolution>6 hours</TimeResolution> </TimePeriod> </TemporalDomain> </Domain> <SupportedCRS xmlns="http://www.opengis.net/wcs/1.1">urn:ogc:def:crs:EPSG::4326</SupportedCRS> They want the data portal in this way • End users can select the data section to view by selecting variables and applying constraints on time, latitude and longitude • End users can get the data section in forms of an ASCII textual file, a NetCDF file or a binary DAP object • There is a visualization of the currently selected data section shown on the Web page They want the portal looks like So they write a description file <description> <dataset> <name>ECMWF_ERA-40</name> <url>http://test.opendap.org:8080/opendap/ECMWF_ERA-40_subset.ncml</url> <access-method>NetCDF</access-method> </dataset> <widget> <label id=“label1”>Action:</label> <button id=“button1”> <name>Get ASCII</name> <action type=“javascript” function=“ascii_button” /> </button> <button id=“button2”> … </button> </widget> <layout> <row><cell id=“label1” /><cell id=“button1” /><cell id=“button2” />…</row> … <row><cell id=“previewLabel” /></row> <row><cell id=“preview1” /><cell id=“preview2” /></row> </layout> </description> The descritpion file defines the following elements • URL of the dataset and access method • Widgets on the UI and their layout – Label – Button – Section selector – Facet list – Query display – Search result For example, a section selector looks like <widget> … <section-selector variable=“tcw” id=“section-tcw”> <introduction>Grid of Array of 16 bit Integers [time = 0..61][latitude = 0..72][longitude = 0..143]</introduction> <constraint variable=“time”> <default start=0 step=1 end=61/> </constraint> <constraint variable=“latitude”> <default start=0 step=1 end=72/> </constraint> <constraint variable=“longitude”> <default start=0 step=1 end=143/> </constraint> </section-selector> … </widget> A facet list looks like <facet-list id=“main”> <facet name=“Catalogs:” facet=“Catalog” /> <facet name=“Agencies:” facet=“Agency” /> <facet name=“Categories:” facet=“Category” /> </facet-list> A query display looks like <query-display id=“right” modify=“true” layout=“vertical”> <constraint name=“Keywords:” type=“keyword” /> <constraint name=“” type=“facet-list” reference=“main”/> </facet-list> <facet-list id=“main”> <facet name=“Catalogs:” facet=“Ca <facet name=“Agencies:” facet=“Ag <facet name=“Categories:” facet=“ </facet-list> A query display can also looks like <query-display id=“left” modify=“false” layout=“horizontal”> <constraint name=“Keywords:” type=“keyword” /> <constraint type=“facet-list” reference=“main”/> </facet-list> A search result can be a table <search-result id=“result” type=“table” data=“result-data” results-per-page=10 /> Where “result-data” is a hidden element containing the search result A search result can also be a preview <search-result id=“result” type=“preview” data=“result-data” forward=“onclick” /> Where “result-data” is a hidden element containing the search result