Changeset 1138 for TI03-DataExtractor


Ignore:
Timestamp:
08/06/06 01:38:06 (13 years ago)
Author:
astephen
Message:

Latest relatively stable version with CSML input and almost output.

Location:
TI03-DataExtractor/trunk
Files:
8 added
14 edited

Legend:

Unmodified
Added
Removed
  • TI03-DataExtractor/trunk/dxs/datasets/inputDatasets.xml

    r1109 r1138  
    22<!-- DXDataInputs is the top level node in this XML tree --> 
    33<DXDataInputs> 
     4                                                 
     5    <!-- A DXDatasetGroup is a superset of a DXDataset, essentially just a         container object for logical groupings of datasets. --> 
     6                                                 
     7    <DXDatasetGroup> 
     8                                                                                                 
     9        <dxGroupShortName> 
     10                                                                        tdg1                                         
     11        </dxGroupShortName> 
     12                                                                                 
     13        <!-- not used...yet --> 
     14                                                                                                 
     15        <dxGroupLongName> 
     16                                                                        Test Data Group 1                                         
     17        </dxGroupLongName> 
     18                                                                                                 
     19        <!-- dxGroupFileNamePrefix is used when defining sensible names     for multiple file outputs, if not given it will default to      the dxGroupShortName --> 
     20                                                                                                 
     21        <dxGroupFileNamePrefix> 
     22                                                                        tdg1-prefix                                         
     23        </dxGroupFileNamePrefix> 
     24                                                                                                 
     25        <dxGroupAccessRestrictions> 
     26                                                                                                                                                 
     27            <permittedRoles> 
     28                                                                                                all                                                             
     29            </permittedRoles> 
     30                                                                                                                                                 
     31            <permittedUsers> 
     32                                                                                                all                                                             
     33            </permittedUsers> 
     34                                                                                                                         
     35        </dxGroupAccessRestrictions> 
     36                                                                                                 
     37        <MetadataLinks> 
     38                                                                                                                                                 
     39            <!-- detailedMetadataLink will eventually point to B-metadata record            in the NDG schema. --> 
     40                                                                                                                                                 
     41            <detailedMetadataLink> 
     42                                                                                                http://somewhere-great/wouldbegood                                                             
     43            </detailedMetadataLink> 
     44                                                                                                                                                 
     45            <!-- discoveryMetadataLink will eventually point to D-metadata record             in the NDG schema. --> 
     46                                                                                                                                                 
     47            <discoveryMetadataLink> 
     48                                                                                                http://somewhere-else/great.also                                                             
     49            </discoveryMetadataLink> 
     50                                                                                                                                                 
     51            <!-- usageMetadataLink will eventually point to A-metadata record            in the NDG schema. --> 
     52                                                                                                                                                 
     53            <usageMetadataLink> 
     54                                                                                                none                                                             
     55            </usageMetadataLink> 
     56                                                                                                                                                 
     57            <documentationLink> 
     58                                                                                                undefined                                                             
     59            </documentationLink> 
     60                                                                                                                         
     61        </MetadataLinks> 
     62                                                                                                 
     63        <annotation> 
     64                                                                                                                                                 
     65            <documentation> 
     66                                                                                                The purpose of DXDatasetGroups is to allow a higher level            of logical grouping, navigation and selection than individual datasets.            The DatasetGroup in the DX is just a group of Datasets. It is unlikely             that the DatasetGroup will have any metadata record links - but they are             included just in case.                                                             
     67            </documentation> 
     68                                                                                                                         
     69        </annotation> 
     70                                                                                                 
     71        <!-- A DXDataset object maps one-to-one to an A-metadata record such as a       CSML or CDML file. In fact even single data file can be mapped in at this       level. A DXDataset contains a collection of features or variables but they      are not exposed in this document, only when the Dataset is selected during      a request. --> 
     72                                                                                                 
     73        <DXDataset> 
     74                                                                                                                                                 
     75            <dxDatasetShortName> 
     76                                                                                                tdg1-td1                                                             
     77            </dxDatasetShortName> 
     78                                                                                                                         
     79            <!-- not used...yet --> 
     80                                                                                                                                                 
     81            <dxDatasetLongName> 
     82                                                                                                Test Dataset 1                                                             
     83            </dxDatasetLongName> 
     84                                                                                                                                                 
     85            <!-- dxDatasetFileNameSection is used when defining sensible names      for multiple file outputs, if not given it will default to      the dxDatasetShortName --> 
     86                                                                                                                                                         
     87            <dxDatasetFileNameSection> 
     88                                                                                                dset1                                                             
     89            </dxDatasetFileNameSection> 
     90                                                                                                                                                                 
     91            <!-- Note that the Access Restrictions on a Dataset override those of           its parent DatasetGroup. --> 
     92                                                                                                                                                 
     93            <dxDatasetAccessRestrictions> 
     94                                                                                                                                                                                                 
     95                <permittedRoles> 
     96                                                                                                                        all                                                                                 
     97                </permittedRoles> 
     98                                                                                                                                                                                                 
     99                <permittedUsers> 
     100                                                                                                                        all                                                                                 
     101                </permittedUsers> 
     102                                                                                                                                                                         
     103            </dxDatasetAccessRestrictions> 
     104                                                                                                                                                 
     105            <MetadataLinks> 
     106                                                                                                                                                                                                 
     107                <!-- detailedMetadataLink will eventually point to B-metadata record                in the NDG schema. --> 
     108                                                                                                                                                                                                 
     109                <detailedMetadataLink> 
     110                                                                                                                        undefined                                                                                 
     111                </detailedMetadataLink> 
     112                                                                                                                                                                                                 
     113                <!-- discoveryMetadataLink will eventually point to D-metadata record                in the NDG schema. --> 
     114                                                                                                                                                                                                 
     115                <discoveryMetadataLink> 
     116                                                                                                                        undefined                                                                                 
     117                </discoveryMetadataLink> 
     118                                                                                                                                                                                                 
     119                <!-- usageMetadataLink will eventually point to A-metadata record                in the NDG schema. --> 
     120                                                                                                                                                                                                 
     121                <usageMetadataLink> 
     122                                                                                                                        file:/usr/local/test/dxs/testdata/testdata1.xml                                                                                 
     123                </usageMetadataLink> 
     124                                                                                                                                                                                                 
     125                <documentationLink> 
     126                                                                                                                        undefined                                                                                 
     127                </documentationLink> 
     128                                                                                                                                                                         
     129            </MetadataLinks> 
     130                                                                                                                                                 
     131            <annotation> 
     132                                                                                                                                                                                                 
     133                <documentation> 
     134                                                                                                                         A DXDataset object maps one-to-one to an A-metadata record such as a           CSML or CDML file. In fact even single data file can be mapped in at this               level. A DXDataset contains a collection of features or variables but they              are not exposed in this document, only when the Dataset is selected during              a request.                                                                                  
     135                </documentation> 
     136                                                                                                                                                                         
     137            </annotation> 
     138                                                                                                                         
     139        </DXDataset> 
     140                                                                         
     141    </DXDatasetGroup> 
     142                                                 
     143    <!-- A DXDatasetGroup is a superset of a DXDataset, essentially just a         container object for logical groupings of datasets. --> 
     144                                                 
     145    <DXDatasetGroup> 
     146                                                                                                 
     147        <dxGroupShortName> 
     148                                                                        tdg2                                         
     149        </dxGroupShortName> 
     150                                                                                 
     151        <!-- not used...yet --> 
     152                                                                                                 
     153        <dxGroupLongName> 
     154                                                                        Test Data Group 2                                         
     155        </dxGroupLongName> 
     156                                                                                                 
     157        <!-- dxGroupFileNamePrefix is used when defining sensible names     for multiple file outputs, if not given it will default to      the dxGroupShortName --> 
     158                                                                                                         
     159        <dxGroupFileNamePrefix> 
     160                                                                        tdg2-prefix                                         
     161        </dxGroupFileNamePrefix> 
     162                                                                                                         
     163        <dxGroupAccessRestrictions> 
     164                                                                                                                                                 
     165            <permittedRoles> 
     166                                                                                                dset2                                                             
     167            </permittedRoles> 
     168                                                                                                                                                 
     169            <permittedUsers> 
     170                                                                                                nobody                                                             
     171            </permittedUsers> 
     172                                                                                                                         
     173        </dxGroupAccessRestrictions> 
     174                                                                                                 
     175        <MetadataLinks> 
     176                                                                                                                                                 
     177            <!-- detailedMetadataLink will eventually point to B-metadata record            in the NDG schema. --> 
     178                                                                                                                                                 
     179            <detailedMetadataLink> 
     180                                                                                                undefined                                                             
     181            </detailedMetadataLink> 
     182                                                                                                                                                 
     183            <!-- discoveryMetadataLink will eventually point to D-metadata record             in the NDG schema. --> 
     184                                                                                                                                                 
     185            <discoveryMetadataLink> 
     186                                                                                                undefined                                                             
     187            </discoveryMetadataLink> 
     188                                                                                                                                                 
     189            <!-- usageMetadataLink will eventually point to A-metadata record            in the NDG schema. --> 
     190                                                                                                                                                 
     191            <usageMetadataLink> 
     192                                                                                                undefined                                                             
     193            </usageMetadataLink> 
     194                                                                                                                                                 
     195            <documentationLink> 
     196                                                                                                undefined                                                             
     197            </documentationLink> 
     198                                                                                                                         
     199        </MetadataLinks> 
     200                                                                                                 
     201        <annotation> 
     202                                                                                                                                                 
     203            <documentation> 
     204                                                                                                The purpose of DXDatasetGroups is to allow a higher level            of logical grouping,t navigation and selection than individual datasets.            The DatasetGroup in the DX is just a group of Datasets. It is unlikely             that the DatasetGroup will have any metadata record links - but they are             included just in case.                                                             
     205            </documentation> 
     206                                                                                                                         
     207        </annotation> 
     208                                                                                                 
     209        <!-- A DXDataset object maps one-to-one to an A-metadata record such as a       CSML or CDML file. In fact even single data file can be mapped in at this       level. A DXDataset contains a collection of features or variables but they      are not exposed in this document, only when the Dataset is selected during      a request. --> 
     210                                                                                                 
     211        <DXDataset> 
     212                                                                                                                                                 
     213            <dxDatasetShortName> 
     214                                                                                                tdg2-td2                                                             
     215            </dxDatasetShortName> 
     216                                                                                                                         
     217            <!-- not used...yet --> 
     218                                                                                                                                                 
     219            <dxDatasetLongName> 
     220                                                                                                Test Dataset 2                                                             
     221            </dxDatasetLongName> 
     222                                                                                                                                                 
     223            <!-- dxDatasetFileNameSection is used when defining sensible names      for multiple file outputs, if not given it will default to      the dxDatasetShortName --> 
     224                                                                                                                                                         
     225            <dxDatasetFileNameSection> 
     226                                                                                                dset2                                                             
     227            </dxDatasetFileNameSection> 
     228                                                                                                                                                         
     229            <!-- Note that the Access Restrictions on a Dataset override those of           its parent DatasetGroup. --> 
     230                                                                                                                                                 
     231            <dxDatasetAccessRestrictions> 
     232                                                                                                                                                                                                 
     233                <permittedRoles> 
     234                                                                                                                        dset2                                                                                 
     235                </permittedRoles> 
     236                                                                                                                                                                                                 
     237                <permittedUsers> 
     238                                                                                                                        nobody                                                                                 
     239                </permittedUsers> 
     240                                                                                                                                                                         
     241            </dxDatasetAccessRestrictions> 
     242                                                                                                                                                 
     243            <MetadataLinks> 
     244                                                                                                                                                                                                 
     245                <!-- detailedMetadataLink will eventually point to B-metadata record                in the NDG schema. --> 
     246                                                                                                                                                                                                 
     247                <detailedMetadataLink> 
     248                                                                                                                        undefined                                                                                 
     249                </detailedMetadataLink> 
     250                                                                                                                                                                                                 
     251                <!-- discoveryMetadataLink will eventually point to D-metadata record                in the NDG schema. --> 
     252                                                                                                                                                                                                 
     253                <discoveryMetadataLink> 
     254                                                                                                                        undefined                                                                                 
     255                </discoveryMetadataLink> 
     256                                                                                                                                                                                                 
     257                <!-- usageMetadataLink will eventually point to A-metadata record                in the NDG schema. --> 
     258                                                                                                                                                                                                 
     259                <usageMetadataLink> 
     260                                                                                                                        file:/usr/local/test/dxs/testdata/testdata2.xml                                                                                 
     261                </usageMetadataLink> 
     262                                                                                                                                                                                                 
     263                <documentationLink> 
     264                                                                                                                        undefined                                                                                 
     265                </documentationLink> 
     266                                                                                                                                                                         
     267            </MetadataLinks> 
     268                                                                                                                                                 
     269            <annotation> 
     270                                                                                                                                                                                                 
     271                <documentation> 
     272                                                                                                                         A DXDataset object maps one-to-one to an A-metadata record such as a           CSML or CDML file. In fact even single data file can be mapped in at this               level. A DXDataset contains a collection of features or variables but they              are not exposed in this document, only when the Dataset is selected during              a request.                                                                                  
     273                </documentation> 
     274                                                                                                                                                                         
     275            </annotation> 
     276                                                                                                                         
     277        </DXDataset> 
     278                                                                         
     279    </DXDatasetGroup> 
     280                                                 
     281    <!-- A DXDatasetGroup is a superset of a DXDataset, essentially just a         container object for logical groupings of datasets. --> 
     282                                                 
     283    <DXDatasetGroup> 
     284                                                                                                 
     285        <dxGroupShortName> 
     286                                                                        tdg3                                         
     287        </dxGroupShortName> 
     288                                                                                 
     289        <!-- not used...yet --> 
     290                                                                                                 
     291        <dxGroupLongName> 
     292                                                                        Test Data Group 3                                         
     293        </dxGroupLongName> 
     294                                                                                                 
     295        <!-- dxGroupFileNamePrefix is used when defining sensible names     for multiple file outputs, if not given it will default to      the dxGroupShortName --> 
     296                                                                                                         
     297        <dxGroupFileNamePrefix> 
     298                                                                        tdg3-prefix                                         
     299        </dxGroupFileNamePrefix> 
     300                                                                                                         
     301        <dxGroupAccessRestrictions> 
     302                                                                                                                                                 
     303            <permittedRoles> 
     304                                                                                                dset3                                                             
     305            </permittedRoles> 
     306                                                                                                                                                 
     307            <permittedUsers> 
     308                                                                                                zippy jane                                                             
     309            </permittedUsers> 
     310                                                                                                                         
     311        </dxGroupAccessRestrictions> 
     312                                                                                                 
     313        <MetadataLinks> 
     314                                                                                                                                                 
     315            <!-- detailedMetadataLink will eventually point to B-metadata record            in the NDG schema. --> 
     316                                                                                                                                                 
     317            <detailedMetadataLink> 
     318                                                                                                undefined                                                             
     319            </detailedMetadataLink> 
     320                                                                                                                                                 
     321            <!-- discoveryMetadataLink will eventually point to D-metadata record             in the NDG schema. --> 
     322                                                                                                                                                 
     323            <discoveryMetadataLink> 
     324                                                                                                undefined                                                             
     325            </discoveryMetadataLink> 
     326                                                                                                                                                 
     327            <!-- usageMetadataLink will eventually point to A-metadata record            in the NDG schema. --> 
     328                                                                                                                                                 
     329            <usageMetadataLink> 
     330                                                                                                undefined                                                             
     331            </usageMetadataLink> 
     332                                                                                                                                                 
     333            <documentationLink> 
     334                                                                                                undefined                                                             
     335            </documentationLink> 
     336                                                                                                                         
     337        </MetadataLinks> 
     338                                                                                                 
     339        <annotation> 
     340                                                                                                                                                 
     341            <documentation> 
     342                                                                                                The purpose of DXDatasetGroups is to allow a higher level            of logical grouping,t navigation and selection than individual datasets.            The DatasetGroup in the DX is just a group of Datasets. It is unlikely             that the DatasetGroup will have any metadata record links - but they are             included just in case.                                                             
     343            </documentation> 
     344                                                                                                                         
     345        </annotation> 
     346                                                                                                 
     347        <!-- A DXDataset object maps one-to-one to an A-metadata record such as a       CSML or CDML file. In fact even single data file can be mapped in at this       level. A DXDataset contains a collection of features or variables but they      are not exposed in this document, only when the Dataset is selected during      a request. --> 
     348                                                                                                 
     349        <DXDataset> 
     350                                                                                                                                                 
     351            <dxDatasetShortName> 
     352                                                                                                tdg3-td3                                                             
     353            </dxDatasetShortName> 
     354                                                                                                                         
     355            <!-- not used...yet --> 
     356                                                                                                                                                 
     357            <dxDatasetLongName> 
     358                                                                                                Test Dataset 3                                                             
     359            </dxDatasetLongName> 
     360                                                                                                                                                 
     361            <!-- dxDatasetFileNameSection is used when defining sensible names      for multiple file outputs, if not given it will default to      the dxDatasetShortName --> 
     362                                                                                                                                                         
     363            <dxDatasetFileNameSection> 
     364                                                                                                dset3                                                             
     365            </dxDatasetFileNameSection> 
     366                                                                                                                                                 
     367            <!-- Note that the Access Restrictions on a Dataset override those of           its parent DatasetGroup. --> 
     368                                                                                                                                                 
     369            <dxDatasetAccessRestrictions> 
     370                                                                                                                                                                                                 
     371                <permittedRoles> 
     372                                                                                                                        all                                                                                 
     373                </permittedRoles> 
     374                                                                                                                                                                                                 
     375                <permittedUsers> 
     376                                                                                                                        all                                                                                 
     377                </permittedUsers> 
     378                                                                                                                                                                         
     379            </dxDatasetAccessRestrictions> 
     380                                                                                                                                                 
     381            <MetadataLinks> 
     382                                                                                                                                                                                                 
     383                <!-- detailedMetadataLink will eventually point to B-metadata record                in the NDG schema. --> 
     384                                                                                                                                                                                                 
     385                <detailedMetadataLink> 
     386                                                                                                                        undefined                                                                                 
     387                </detailedMetadataLink> 
     388                                                                                                                                                                                                 
     389                <!-- discoveryMetadataLink will eventually point to D-metadata record                in the NDG schema. --> 
     390                                                                                                                                                                                                 
     391                <discoveryMetadataLink> 
     392                                                                                                                        undefined                                                                                 
     393                </discoveryMetadataLink> 
     394                                                                                                                                                                                                 
     395                <!-- usageMetadataLink will eventually point to A-metadata record                in the NDG schema. --> 
     396                                                                                                                                                                                                 
     397                <usageMetadataLink> 
     398                                                                                                                        file:/usr/local/test/dxs/testdata/testdata3.xml                                                                                 
     399                </usageMetadataLink> 
     400                                                                                                                                                                                                 
     401                <documentationLink> 
     402                                                                                                                        undefined                                                                                 
     403                </documentationLink> 
     404                                                                                                                                                                         
     405            </MetadataLinks> 
     406                                                                                                                                                 
     407            <annotation> 
     408                                                                                                                                                                                                 
     409                <documentation> 
     410                                                                                                                         A DXDataset object maps one-to-one to an A-metadata record such as a           CSML or CDML file. In fact even single data file can be mapped in at this               level. A DXDataset contains a collection of features or variables but they              are not exposed in this document, only when the Dataset is selected during              a request.                                                                                  
     411                </documentation> 
     412                                                                                                                                                                         
     413            </annotation> 
     414                                                                                                                         
     415        </DXDataset> 
     416                                                                         
     417    </DXDatasetGroup> 
     418                                                
     419    <DXDatasetGroup> 
    4420                 
    5     <!-- A DXDatasetGroup is a superset of a DXDataset, essentially just a         container object for logical groupings of datasets. --> 
    6                  
    7     <DXDatasetGroup> 
    8                                  
    9421        <dxGroupShortName> 
    10                         tdg1         
     422                        csmltest         
    11423        </dxGroupShortName> 
    12424                 
    13         <!-- not used...yet --> 
    14                                  
    15425        <dxGroupLongName> 
    16                         Test Data Group 1         
     426                        CSML test dataset group         
    17427        </dxGroupLongName> 
    18                                  
    19         <!-- dxGroupFileNamePrefix is used when defining sensible names     for multiple file outputs, if not given it will default to      the dxGroupShortName --> 
    20                                  
     428                 
    21429        <dxGroupFileNamePrefix> 
    22                         tdg1-prefix         
     430                        ctdg         
    23431        </dxGroupFileNamePrefix> 
    24                                  
     432                 
    25433        <dxGroupAccessRestrictions> 
    26                                                  
     434                         
    27435            <permittedRoles> 
    28                                 all             
     436                                dset1             
    29437            </permittedRoles> 
    30                                                  
     438                         
    31439            <permittedUsers> 
    32                                 all             
     440                                ag             
    33441            </permittedUsers> 
    34                                          
     442                     
    35443        </dxGroupAccessRestrictions> 
    36                                  
     444                 
    37445        <MetadataLinks> 
    38                                                  
    39             <!-- detailedMetadataLink will eventually point to B-metadata record            in the NDG schema. --> 
    40                                                  
     446                         
    41447            <detailedMetadataLink> 
    42                                 http://somewhere-great/wouldbegood             
     448                                none             
    43449            </detailedMetadataLink> 
    44                                                  
    45             <!-- discoveryMetadataLink will eventually point to D-metadata record             in the NDG schema. --> 
    46                                                  
     450                         
    47451            <discoveryMetadataLink> 
    48                                 http://somewhere-else/great.also             
     452                                none             
    49453            </discoveryMetadataLink> 
    50                                                  
    51             <!-- usageMetadataLink will eventually point to A-metadata record            in the NDG schema. --> 
    52                                                  
     454                         
    53455            <usageMetadataLink> 
    54456                                none             
    55457            </usageMetadataLink> 
    56                                                  
     458                         
    57459            <documentationLink> 
    58                                 undefined             
     460                                none             
    59461            </documentationLink> 
    60                                          
     462                     
    61463        </MetadataLinks> 
    62                                  
    63         <annotation> 
    64                                                  
    65             <documentation> 
    66                                 The purpose of DXDatasetGroups is to allow a higher level            of logical grouping, navigation and selection than individual datasets.            The DatasetGroup in the DX is just a group of Datasets. It is unlikely             that the DatasetGroup will have any metadata record links - but they are             included just in case.             
    67             </documentation> 
    68                                          
    69         </annotation> 
    70                                  
    71         <!-- A DXDataset object maps one-to-one to an A-metadata record such as a       CSML or CDML file. In fact even single data file can be mapped in at this       level. A DXDataset contains a collection of features or variables but they      are not exposed in this document, only when the Dataset is selected during      a request. --> 
    72                                  
     464             
    73465        <DXDataset> 
    74                                                  
    75466            <dxDatasetShortName> 
    76                                 tdg1-td1             
     467                csmltstds 
    77468            </dxDatasetShortName> 
    78                          
    79             <!-- not used...yet --> 
    80                                                  
    81469            <dxDatasetLongName> 
    82                                 Test Dataset 1             
     470                CSML test dataset great test 
    83471            </dxDatasetLongName> 
    84                                                  
    85             <!-- dxDatasetFileNameSection is used when defining sensible names      for multiple file outputs, if not given it will default to      the dxDatasetShortName --> 
    86                                                          
    87472            <dxDatasetFileNameSection> 
    88                                 dset1             
     473                undefined 
    89474            </dxDatasetFileNameSection> 
    90                                                                  
    91             <!-- Note that the Access Restrictions on a Dataset override those of           its parent DatasetGroup. --> 
    92                                                  
    93475            <dxDatasetAccessRestrictions> 
    94                                                                  
    95476                <permittedRoles> 
    96                                         all                 
     477                    dset1 dset2 dset3 
    97478                </permittedRoles> 
    98                                                                  
    99479                <permittedUsers> 
    100                                         all                 
     480                    ag 
    101481                </permittedUsers> 
    102                                                          
    103482            </dxDatasetAccessRestrictions> 
    104                                                  
    105483            <MetadataLinks> 
    106                                                                  
    107                 <!-- detailedMetadataLink will eventually point to B-metadata record                in the NDG schema. --> 
    108                                                                  
    109484                <detailedMetadataLink> 
    110                                         undefined                 
     485                    undefined 
    111486                </detailedMetadataLink> 
    112                                                                  
    113                 <!-- discoveryMetadataLink will eventually point to D-metadata record                in the NDG schema. --> 
    114                                                                  
    115487                <discoveryMetadataLink> 
    116                                         undefined                 
     488                    undefined 
    117489                </discoveryMetadataLink> 
    118                                                                  
    119                 <!-- usageMetadataLink will eventually point to A-metadata record                in the NDG schema. --> 
    120                                                                  
    121490                <usageMetadataLink> 
    122                                         file:DATASET_PATH_TO_CHANGE/testdata1.xml                 
     491                    file:/usr/local/test/dxs/testdata/csml1.xml 
    123492                </usageMetadataLink> 
    124                                                                  
    125493                <documentationLink> 
    126                                         undefined                 
     494                    undefined 
    127495                </documentationLink> 
    128                                                          
    129496            </MetadataLinks> 
    130                                                  
    131             <annotation> 
    132                                                                  
    133                 <documentation> 
    134                                          A DXDataset object maps one-to-one to an A-metadata record such as a           CSML or CDML file. In fact even single data file can be mapped in at this               level. A DXDataset contains a collection of features or variables but they              are not exposed in this document, only when the Dataset is selected during              a request.                  
    135                 </documentation> 
    136                                                          
    137             </annotation> 
    138                                          
    139497        </DXDataset> 
    140                          
    141498    </DXDatasetGroup> 
    142                  
    143     <!-- A DXDatasetGroup is a superset of a DXDataset, essentially just a         container object for logical groupings of datasets. --> 
    144                  
    145     <DXDatasetGroup> 
    146                                  
    147         <dxGroupShortName> 
    148                         tdg2         
    149         </dxGroupShortName> 
    150                  
    151         <!-- not used...yet --> 
    152                                  
    153         <dxGroupLongName> 
    154                         Test Data Group 2         
    155         </dxGroupLongName> 
    156                                  
    157         <!-- dxGroupFileNamePrefix is used when defining sensible names     for multiple file outputs, if not given it will default to      the dxGroupShortName --> 
    158                                          
    159         <dxGroupFileNamePrefix> 
    160                         tdg2-prefix         
    161         </dxGroupFileNamePrefix> 
    162                                          
    163         <dxGroupAccessRestrictions> 
    164                                                  
    165             <permittedRoles> 
    166                                 dset2             
    167             </permittedRoles> 
    168                                                  
    169             <permittedUsers> 
    170                                 nobody             
    171             </permittedUsers> 
    172                                          
    173         </dxGroupAccessRestrictions> 
    174                                  
    175         <MetadataLinks> 
    176                                                  
    177             <!-- detailedMetadataLink will eventually point to B-metadata record            in the NDG schema. --> 
    178                                                  
    179             <detailedMetadataLink> 
    180                                 undefined             
    181             </detailedMetadataLink> 
    182                                                  
    183             <!-- discoveryMetadataLink will eventually point to D-metadata record             in the NDG schema. --> 
    184                                                  
    185             <discoveryMetadataLink> 
    186                                 undefined             
    187             </discoveryMetadataLink> 
    188                                                  
    189             <!-- usageMetadataLink will eventually point to A-metadata record            in the NDG schema. --> 
    190                                                  
    191             <usageMetadataLink> 
    192                                 undefined             
    193             </usageMetadataLink> 
    194                                                  
    195             <documentationLink> 
    196                                 undefined             
    197             </documentationLink> 
    198                                          
    199         </MetadataLinks> 
    200                                  
    201         <annotation> 
    202                                                  
    203             <documentation> 
    204                                 The purpose of DXDatasetGroups is to allow a higher level            of logical grouping,t navigation and selection than individual datasets.            The DatasetGroup in the DX is just a group of Datasets. It is unlikely             that the DatasetGroup will have any metadata record links - but they are             included just in case.             
    205             </documentation> 
    206                                          
    207         </annotation> 
    208                                  
    209         <!-- A DXDataset object maps one-to-one to an A-metadata record such as a       CSML or CDML file. In fact even single data file can be mapped in at this       level. A DXDataset contains a collection of features or variables but they      are not exposed in this document, only when the Dataset is selected during      a request. --> 
    210                                  
    211         <DXDataset> 
    212                                                  
    213             <dxDatasetShortName> 
    214                                 tdg2-td2             
    215             </dxDatasetShortName> 
    216                          
    217             <!-- not used...yet --> 
    218                                                  
    219             <dxDatasetLongName> 
    220                                 Test Dataset 2             
    221             </dxDatasetLongName> 
    222                                                  
    223             <!-- dxDatasetFileNameSection is used when defining sensible names      for multiple file outputs, if not given it will default to      the dxDatasetShortName --> 
    224                                                          
    225             <dxDatasetFileNameSection> 
    226                                 dset2             
    227             </dxDatasetFileNameSection> 
    228                                                          
    229             <!-- Note that the Access Restrictions on a Dataset override those of           its parent DatasetGroup. --> 
    230                                                  
    231             <dxDatasetAccessRestrictions> 
    232                                                                  
    233                 <permittedRoles> 
    234                                         dset2                 
    235                 </permittedRoles> 
    236                                                                  
    237                 <permittedUsers> 
    238                                         nobody                 
    239                 </permittedUsers> 
    240                                                          
    241             </dxDatasetAccessRestrictions> 
    242                                                  
    243             <MetadataLinks> 
    244                                                                  
    245                 <!-- detailedMetadataLink will eventually point to B-metadata record                in the NDG schema. --> 
    246                                                                  
    247                 <detailedMetadataLink> 
    248                                         undefined                 
    249                 </detailedMetadataLink> 
    250                                                                  
    251                 <!-- discoveryMetadataLink will eventually point to D-metadata record                in the NDG schema. --> 
    252                                                                  
    253                 <discoveryMetadataLink> 
    254                                         undefined                 
    255                 </discoveryMetadataLink> 
    256                                                                  
    257                 <!-- usageMetadataLink will eventually point to A-metadata record                in the NDG schema. --> 
    258                                                                  
    259                 <usageMetadataLink> 
    260                                         file:DATASET_PATH_TO_CHANGE/testdata2.xml                 
    261                 </usageMetadataLink> 
    262                                                                  
    263                 <documentationLink> 
    264                                         undefined                 
    265                 </documentationLink> 
    266                                                          
    267             </MetadataLinks> 
    268                                                  
    269             <annotation> 
    270                                                                  
    271                 <documentation> 
    272                                          A DXDataset object maps one-to-one to an A-metadata record such as a           CSML or CDML file. In fact even single data file can be mapped in at this               level. A DXDataset contains a collection of features or variables but they              are not exposed in this document, only when the Dataset is selected during              a request.                  
    273                 </documentation> 
    274                                                          
    275             </annotation> 
    276                                          
    277         </DXDataset> 
    278                          
    279     </DXDatasetGroup> 
    280                  
    281     <!-- A DXDatasetGroup is a superset of a DXDataset, essentially just a         container object for logical groupings of datasets. --> 
    282                  
    283     <DXDatasetGroup> 
    284                                  
    285         <dxGroupShortName> 
    286                         tdg3         
    287         </dxGroupShortName> 
    288                  
    289         <!-- not used...yet --> 
    290                                  
    291         <dxGroupLongName> 
    292                         Test Data Group 3         
    293         </dxGroupLongName> 
    294                                  
    295         <!-- dxGroupFileNamePrefix is used when defining sensible names     for multiple file outputs, if not given it will default to      the dxGroupShortName --> 
    296                                          
    297         <dxGroupFileNamePrefix> 
    298                         tdg3-prefix         
    299         </dxGroupFileNamePrefix> 
    300                                          
    301         <dxGroupAccessRestrictions> 
    302                                                  
    303             <permittedRoles> 
    304                                 dset3             
    305             </permittedRoles> 
    306                                                  
    307             <permittedUsers> 
    308                                 zippy jane             
    309             </permittedUsers> 
    310                                          
    311         </dxGroupAccessRestrictions> 
    312                                  
    313         <MetadataLinks> 
    314                                                  
    315             <!-- detailedMetadataLink will eventually point to B-metadata record            in the NDG schema. --> 
    316                                                  
    317             <detailedMetadataLink> 
    318                                 undefined             
    319             </detailedMetadataLink> 
    320                                                  
    321             <!-- discoveryMetadataLink will eventually point to D-metadata record             in the NDG schema. --> 
    322                                                  
    323             <discoveryMetadataLink> 
    324                                 undefined             
    325             </discoveryMetadataLink> 
    326                                                  
    327             <!-- usageMetadataLink will eventually point to A-metadata record            in the NDG schema. --> 
    328                                                  
    329             <usageMetadataLink> 
    330                                 undefined             
    331             </usageMetadataLink> 
    332                                                  
    333             <documentationLink> 
    334                                 undefined             
    335             </documentationLink> 
    336                                          
    337         </MetadataLinks> 
    338                                  
    339         <annotation> 
    340                                                  
    341             <documentation> 
    342                                 The purpose of DXDatasetGroups is to allow a higher level            of logical grouping,t navigation and selection than individual datasets.            The DatasetGroup in the DX is just a group of Datasets. It is unlikely             that the DatasetGroup will have any metadata record links - but they are             included just in case.             
    343             </documentation> 
    344                                          
    345         </annotation> 
    346                                  
    347         <!-- A DXDataset object maps one-to-one to an A-metadata record such as a       CSML or CDML file. In fact even single data file can be mapped in at this       level. A DXDataset contains a collection of features or variables but they      are not exposed in this document, only when the Dataset is selected during      a request. --> 
    348                                  
    349         <DXDataset> 
    350                                                  
    351             <dxDatasetShortName> 
    352                                 tdg3-td3             
    353             </dxDatasetShortName> 
    354                          
    355             <!-- not used...yet --> 
    356                                                  
    357             <dxDatasetLongName> 
    358                                 Test Dataset 3             
    359             </dxDatasetLongName> 
    360                                                  
    361             <!-- dxDatasetFileNameSection is used when defining sensible names      for multiple file outputs, if not given it will default to      the dxDatasetShortName --> 
    362                                                          
    363             <dxDatasetFileNameSection> 
    364                                 dset3             
    365             </dxDatasetFileNameSection> 
    366                                                  
    367             <!-- Note that the Access Restrictions on a Dataset override those of           its parent DatasetGroup. --> 
    368                                                  
    369             <dxDatasetAccessRestrictions> 
    370                                                                  
    371                 <permittedRoles> 
    372                                         all                 
    373                 </permittedRoles> 
    374                                                                  
    375                 <permittedUsers> 
    376                                         all                 
    377                 </permittedUsers> 
    378                                                          
    379             </dxDatasetAccessRestrictions> 
    380                                                  
    381             <MetadataLinks> 
    382                                                                  
    383                 <!-- detailedMetadataLink will eventually point to B-metadata record                in the NDG schema. --> 
    384                                                                  
    385                 <detailedMetadataLink> 
    386                                         undefined                 
    387                 </detailedMetadataLink> 
    388                                                                  
    389                 <!-- discoveryMetadataLink will eventually point to D-metadata record                in the NDG schema. --> 
    390                                                                  
    391                 <discoveryMetadataLink> 
    392                                         undefined                 
    393                 </discoveryMetadataLink> 
    394                                                                  
    395                 <!-- usageMetadataLink will eventually point to A-metadata record                in the NDG schema. --> 
    396                                                                  
    397                 <usageMetadataLink> 
    398                                         file:DATASET_PATH_TO_CHANGE/testdata3.xml                 
    399                 </usageMetadataLink> 
    400                                                                  
    401                 <documentationLink> 
    402                                         undefined                 
    403                 </documentationLink> 
    404                                                          
    405             </MetadataLinks> 
    406                                                  
    407             <annotation> 
    408                                                                  
    409                 <documentation> 
    410                                          A DXDataset object maps one-to-one to an A-metadata record such as a           CSML or CDML file. In fact even single data file can be mapped in at this               level. A DXDataset contains a collection of features or variables but they              are not exposed in this document, only when the Dataset is selected during              a request.                  
    411                 </documentation> 
    412                                                          
    413             </annotation> 
    414                                          
    415         </DXDataset> 
    416                          
    417     </DXDatasetGroup> 
    418                      
    419499</DXDataInputs> 
  • TI03-DataExtractor/trunk/dxs/scripts/addDataset.py

    r794 r1138  
    3838======= 
    3939 
    40     scripts/addDataset.py -s super -l "Super model 3.1" -g foam -r dset2,nqwf1,ncqw2 -u ag 
    41          -b somewhere -d orother -w help.doc -g ncof -a /usr/local/dxs/testdata/var1.nc 
     40    scripts/addDataset.py -s super -l "Super model 3.1" -g foam -r dset2,nqwf1,ncqw2 -u ag -b somewhere -d orother -w help.doc -a /usr/local/dxs/testdata/var1.nc 
    4241 
    4342""" 
  • TI03-DataExtractor/trunk/pydxs/CDMSDataHandler.py

    r1109 r1138  
    416416            axis=axisList[axisIndex]    
    417417            id=axis.id 
     418            print id 
    418419             
    419420            # deal with time differently 
     
    431432                    loworig=low 
    432433                    (low, high, nudgeMessage)=nudgeSingleValuesToAxisValues(low, axis[:], "Latitude")     
    433                     if loworig!=low:   print "Nudged latitudes to nearest points..."                    
     434                    if loworig!=low:   print "Nudged latitudes to nearest points..." 
     435                selectionStrings.append('%s=(%s, %s)' % (axis.id, low, high))            
    434436            elif axis.isLongitude(): 
    435437                (low, high)=axisSelectionDict[key][:2] 
     
    437439                    loworig=low 
    438440                    (low, high, nudgeMessage)=nudgeSingleValuesToAxisValues(low, axis[:], "Longitude")   
    439                     if loworig!=low:   print "Nudged latitudes to nearest points..."                           
     441                    if loworig!=low:   print "Nudged latitudes to nearest points..." 
     442                selectionStrings.append('%s=(%s, %s)' % (axis.id, low, high))            
    440443            else: 
    441444                selector=axisSelectionDict[key][:2] 
     
    443446         
    444447        fullSelectionString=", ".join(selectionStrings) 
     448        print fullSelectionString 
    445449        variableData=eval("self.file('%s', %s)" % (variable, fullSelectionString)) 
    446450        return variableData          
     
    481485                     {'axis_1.1.1.1':('1999-01-01T00:00:0.000000', '1999-01-01T00:00:0.000000'),   
    482486                      'axis_1.1.1.3': [0.0, 355.0], 'axis_1.1.1.2': [-90.0, 90.0]}) 
     487                       
     488    print a.readVariableSubsetIntoMemory("/usr/local/test/dxs/testdata/testdata1.xml", "pqn", 
     489                     {'axis_1.1.1.1':('1999-01-01T00:00:0.000000', '1999-01-01T00:00:0.000000'),   
     490                      'axis_1.1.1.3': [0.0, 35.0], 'axis_1.1.1.2': [40.0, 90.0]}) 
  • TI03-DataExtractor/trunk/pydxs/CSMLDataHandler.py

    r1109 r1138  
    1010 
    1111This module holds the CSMLDataHandler class that is used 
    12 to hold and access information about datasets held in CSML-compatible 
     12to hold and access information about datasets held in CSML-type 
    1313formats visible to the dx package. 
    1414 
     
    1717# Import required modules 
    1818import os 
     19import API # csml's api class 
     20import re 
    1921import cdms 
    20 import re 
    2122 
    2223# Import global variables 
    23 #from serverConfig import * 
    24 #from common import * 
    25 #from DXDMLHandler import DXDMLHandler 
    26 #from DXErrors import * 
    27  
    28 def getValuesInRange(start, end, array): 
    29     """ 
    30     Takes a start and end value and returns the values in the array that are bet 
    31 ween them. 
    32     If not in range and are the same value then returns [start]. 
    33     """ 
    34     # check all are floats 
    35     array=map(lambda x: float(x), list(array)) 
    36     if array[0]>array[-1]: array.reverse() 
    37     if start>end:  (start, end)=(end, start) 
    38     (start, end)=(float(start), float(end)) 
    39     rtarray=[] 
    40     for i in array: 
    41         if i>=start and i<=end: 
    42             rtarray.append(i) 
    43     if rtarray==[] and start==end: 
    44         rtarray=[start] 
    45     return rtarray 
    46  
    47  
    48  
     24from serverConfig import * 
     25from common import * 
     26from DateTimeManager import * 
     27from DXDMLHandler import DXDMLHandler 
     28from DXErrors import * 
     29 
     30# Set up global variables 
     31dateTimePattern=re.compile(r"^(\d{4}).(\d{1,2}).(\d{1,2})(\s+|T)(\d+):(\d+):(\d+)\.?(\d+)?") 
     32         
     33          
    4934class CSMLDataHandler: 
    5035    """ 
     
    5742        Set up instance variables. 
    5843        """ 
    59         self.DXDML=None #DXDMLHandler() 
     44        self.DXDML=DXDMLHandler() 
    6045        self.file=datasetURI 
    61         if self.file: self._openDataFile(datasetURI=self.file)   
     46        if self.file: self._openDataFile(datasetURI=self.file) 
    6247    
    6348    
     
    6651        Opens a file and allocates to file handle called: self.file. 
    6752        """ 
    68         print """CSML: _openDataFile(datasetURI) 
    69 Sets:    self.file=CSMLDataset(datasetURI) 
    70 CSML_END 
    71 """ 
    7253        if datasetURI: 
    73             cdmlfile=datasetURI 
     54            csmlfile=datasetURI 
    7455        else: 
    7556            for item in self.DXDML.getDatasetsAndDatasetURIs(datasetGroup): 
    7657                if item[0]==dataset: 
    77                     cdmlfile=item[1] 
     58                    csmlfile=item[1] 
     59         
     60        # Check if path starts with "file:" 
     61        if csmlfile[:5]=="file:": 
     62            csmlfile=csmlfile[5:] 
    7863         
    7964        try: 
    80             self.file=cdms.open(cdmlfile) 
     65            self.file=API.Parser.Dataset() 
     66            self.file.parse(csmlfile) 
    8167        except IOError, error: 
    8268            raise DXDataIOError, error 
     
    8773        Gets variable metadata object from a data file. 
    8874        """ 
    89         print """CSML: _getVariable(varname) 
    90 Returns a CDML metadata variable. 
    91 It contains metadata such as attributes and axes but not the 
    92 data array. It is read from self.file. 
    93  
    94 CSML_END 
    95 """      
    9675        try: 
    97             rtvalue=self.file[varname] 
     76            rtvalue=self.file.getFeature(varname) 
    9877        except: 
    9978            raise DXOptionHandlingError, "Cannot find variable %s in file %s" % (varname, self.file.id) 
     
    10584        Returns the best name for a cdms variable. 
    10685        """ 
    107         print """CSML: _getBestName(v) 
    108 Returns the best standard_name, long_name etc from those available. 
    109 v is returned from self._getVariable() 
    110  
    111  
    112 CSML_END 
    113 """      
    11486        if not hasattr(v, "standard_name"):  
    11587            if not hasattr(v, "long_name"): 
     
    139111        the list includes a [<long_name>, <id>]. 
    140112        """  
    141         print """CSML: getVariables(datasetURI) 
    142 Returns a list of rank-2 lists containing: 
    143  
    144 [[bestVarName, varID], [bestVarName2, varID2],....] 
    145  
    146 CSML_END 
    147 """              
    148113        self._openDataFile(datasetGroup, dataset, datasetURI) 
    149         vars=self.file.listvariables() 
     114        features=self.file.getFeatureList() 
    150115        rtvars=[] 
    151116        vcount=0 
    152         for var in vars: 
    153            v=self.file[var] 
    154            name=self._getBestName(v, vcount) 
     117 
     118        for ftid in features: 
     119           v=self.file.getFeature(ftid) 
     120           name=v.description 
    155121                
    156122           # Fix name to remove leading asterisks and lower case surface start. 
     
    169135        Returns the full domain listing for a variable returning: 
    170136         
    171         [axisIndexString, knownAxisString, id, longName, units, listType, unusedItem,  
     137        [knownAxisString, id, longName, units, listType, unusedItem,  
    172138        listValue-1, listValue-2, ..., listValue-n] 
    173139         
    174140        For example: 
    175141         
    176         ["axis1.0", "time", "time", "Time", "hours since 1999-09-09 00:00:00", "start end interval", 
     142        ["time", "time", "Time", "hours since 1999-09-09 00:00:00", "start end interval", 
    177143        "", 0, 3, 6] 
    178144         
     
    182148        or "start end" where only the first and last value are given. 
    183149        """  
    184         print """CSML: getDomain(variable, datasetURI) 
    185         Returns the full domain listing for a variable returning: 
    186          
    187         [axisIndexString, knownAxisString, id, longName, units, listType, unusedItem,  
    188         listValue-1, listValue-2, ..., listValue-n] 
    189          
    190         For example: 
    191          
    192         ["axis1.0", "time", "time", "Time", "hours since 1999-09-09 00:00:00", "start end interval", 
    193         "", 0, 3, 6] 
    194          
    195         This listType represents 6-hourly time steps of 0,1,2,3 past the base time. 
    196          
    197         listType can also take the value "full list" where all values in the list are provided, 
    198         or "start end" where only the first and last value are given. 
    199  
    200 CSML_END 
    201 """              
    202150        self._openDataFile(datasetGroup, dataset, datasetURI) 
    203151        var=self._getVariable(variable) 
    204         varList=self.file.listvariables() 
     152        varList=self.file.getFeatureList() 
    205153        varList.sort() 
     154         
    206155        varIndex=varList.index(var.id) 
    207156        rtlist=[] 
    208157         
    209158        axcount=0 
    210         for axis in var.getAxisList(): 
    211             axisIndexString="axis%s.%s" % ("77777", axcount) #(varIndex+1, axcount) 
     159         
     160        axisList=self._getOrderedAxisList(var) 
     161        """axisList=[] 
     162        dr=var.getDomainReference() 
     163        drkey=dr.keys()[0] 
     164        axisList.append([drkey, dr[drkey].split()]) 
     165         
     166        dc=var.getDomainComplement() 
     167        for key in ("level", "latitude", "longitude"): 
     168            if key in dc.keys(): 
     169                axisList.append([key, dc[key]])""" 
     170                 
     171        for axis in axisList: 
     172            #axisIndexString="axis%s.%s" % ("77777", axcount) #(varIndex+1, axcount) 
     173            (name, values)=axis 
    212174            units=None 
    213             if axis.isTime(): 
     175            if name=="time": 
    214176                knownAxis="time" 
    215177                (start, end, (intervalValue, intervalUnits))=self.getTemporalDomain(datasetGroup, dataset, variable, datasetURI) 
    216178                arrayValues=[start, end, intervalValue] 
    217                 listType="start end interval" 
     179                listType="start en.split()d interval" 
    218180                units=intervalUnits 
    219             elif axis.isLevel(): 
     181            elif name=="level": 
    220182                knownAxis="level" 
    221                 arrayValues=axis[:] 
     183                arrayValues=values[:] 
    222184                listType="full list" 
    223             elif axis.isLatitude(): 
     185            elif name=="latitude": 
    224186                knownAxis="latitude" 
    225                 arrayValues=[axis[0], axis[-1]] 
     187                arrayValues=[values[0], values[-1]] 
    226188                arrayValues.sort() 
    227189                arrayValues.reverse() 
    228190                listType="start end"  
    229             elif axis.isLongitude(): 
     191            elif name=="longitude": 
    230192                knownAxis="longitude" 
    231                 arrayValues=[axis[0], axis[-1]] 
     193                arrayValues=[values[0], values[-1]] 
    232194                arrayValues.sort()       
    233195                listType="start end"                                     
     
    235197                # For any axis not known as above 
    236198                knownAxis="" 
    237                 if len(axis[:])>200: 
    238                     arrayValues=[axis[0], axis[-1]] 
     199                if len(values[:])>200: 
     200                    arrayValues=[values[0], values[-1]] 
    239201                    listType="start end"                     
    240202                else: 
    241                     arrayValues=axis[:] 
     203                    arrayValues=values[:] 
    242204                    listType="full list" 
    243205             
    244             id=axis.id 
    245             longName=self._getBestName(axis).title() 
    246             if not units:  units=getattr(axis, "units", "") 
     206            id=name 
     207            longName=name.title() 
     208            if not units:  units="" 
    247209             
    248210            unused="" 
    249             rtlist.append([axisIndexString, knownAxis, id, longName, units, listType, unused]+arrayValues) 
     211            rtlist.append([knownAxis, id, longName, units, listType, unused]+arrayValues) 
    250212            axcount=axcount+1 
    251213             
     
    257219        Returns the horizontal domain as (northernExtent, westernExtent, southernExtent, easternExtent). 
    258220        """ 
    259         print "Deprecated: NOT NEEDED" 
     221        raise "getHorizontalDomain - has been deprecated!"       
    260222        self._openDataFile(datasetGroup, dataset, datasetURI) 
    261223        var=self._getVariable(variable) 
     
    273235        a list of levels (or "Single level" string) and the units. 
    274236        """ 
    275         print "Deprecated: NOT NEEDED"   
     237        raise "getVerticalSpatialDomain - has been deprecated!" 
    276238        self._openDataFile(datasetGroup, dataset, datasetURI) 
    277239        var=self._getVariable(variable) 
     
    292254        (interval value, interval units)). 
    293255        """ 
    294         print "Deprecated: NOT NEEDED"   
    295256        self._openDataFile(datasetGroup, dataset, datasetURI) 
    296257        var=self._getVariable(variable) 
    297         time_axis=var.getTime() 
    298         time_keys=("year", "month", "day", "hour", "minute", "second") 
    299         start_time_components=time_axis.asComponentTime()[0] 
    300         end_time_components=time_axis.asComponentTime()[-1] 
    301         start_time=[] 
    302         end_time=[] 
    303         for key in time_keys: 
    304             start_time.append(getattr(start_time_components, key)) 
    305             end_time.append(getattr(end_time_components, key))  
    306         time_units=time_axis.units.split()[0] 
     258        time_axis=var.getDomainReference()["time"].split() 
     259        #time_keys=("year", "month", "day", "hour", "minute", "second") 
     260        start_time=str(time_axis[0]).replace(" ", "T") 
     261        end_time=str(time_axis[-1]).replace(" ", "T") 
     262 
     263        time_units="hours" 
    307264        if time_units[-1]=="s":  time_units=time_units[:-1] 
    308         if len(time_axis)>1: 
    309             interval_value=abs(time_axis[1]-time_axis[0]) 
     265         
     266                 
     267        """if len(time_axis)>1: 
     268            interval_value=abs(time_axis[1]-time_axis[0])""" 
     269        if len(time_axis)>1: 
     270                # convert array to relative times 
     271                relTimes=[] 
     272                relTimeAxis=cdms.createAxis([0]) 
     273                relTimeAxis.designateTime() 
     274                relTimeAxis.units="%s since %s" % (time_units, start_time.replace("T", " ")) 
     275                dtp=dateTimePattern 
     276                match=dtp.match(start_time) 
     277                if not match: 
     278                    raise "Cannot match date time pattern: %s" % start_time 
     279                matchlist=match.groups() 
     280                timeItems=[int(i) for i in (matchlist[:3]+matchlist[4:7])] 
     281                timeObj=apply(DateTimeManager, tuple(timeItems))#[float[i] for i in match.groups()])) 
     282                 
     283                matchlist2=dtp.match(time_axis[1]).groups() 
     284                secondTimeObj=apply(DateTimeManager, tuple([int(x) for x in matchlist2[:3]+matchlist2[4:7]])) 
     285                secondTimeLong=long(secondTimeObj.formatTime("%Y%m%d%H%M%S")) 
     286                # Step through times in order to get interval (only works for hours at present). 
     287                 
     288                for i in range(1,6000000,1): 
     289                    timeObj.add(1, time_units) 
     290                    if long(timeObj.formatTime("%Y%m%d%H%M%S"))==secondTimeLong: 
     291                        interval_value=i 
     292                        break 
    310293        else: 
    311             interval_value=1  # To stop loops breaking later! 
     294            interval_value=1  # To stop loops breaking later!""" 
    312295        return (start_time, end_time, (interval_value, time_units))  
    313296 
     
    317300        Returns a list of time step strings based on the selection. 
    318301        """      
    319         print """CSML: getSelectedTimeSteps(datasetURI, variable, axisSelectionDict) 
    320 Returns a list of time step strings based on the selection. 
    321  
    322 Inputs look like: 
    323 ('file:/usr/local/dx/testdata/testdata1.xml', "pqn", {"axis_1.1.1.0":("1999-01-01T00:00:00", "1999-01-01T06:00:00"), 
    324                                                       "axis_1.1.1.1":(30,-30), "axis_1.1.1.2":(30,-30)} 
    325                                                        
    326 Outputs look like: 
    327 ['1999-01-01 00:00:0.000000', '1999-01-01 06:00:0.000000'] 
    328  
    329 CSML_END 
    330 """              
    331302        self._openDataFile(datasetURI=datasetURI) 
    332303        var=self._getVariable(variable) 
     
    334305        timeAxis=None 
    335306        axcount=0 
    336         for axis in var.getAxisList(): 
    337             if axis.isTime(): 
     307         
     308        for axis in self._getOrderedAxisList(var): 
     309            (name, values)=axis  
     310            if name=="time": 
    338311                timeAxisIndex=axcount 
    339312                timeAxis=axis 
     
    342315        if timeAxis==None: 
    343316            return [] 
    344            
    345         startDateTime=None     
     317         
     318        startDateTime=None 
    346319        for key in axisSelectionDict.keys(): 
    347320            #print key, axisSelectionDict[key] 
    348             axisIndex=int(key.split(".")[-1]) 
     321            axisIndex=int(key.split(".")[-1])-1 
    349322            if axisIndex==timeAxisIndex: 
    350323                (startDateTime, endDateTime)=axisSelectionDict[key][:2] 
    351324         
     325        # If no time selection specified just return the full list 
    352326        if startDateTime==None: 
    353327            return [str(tst) for tst in timeAxis.asComponentTime()] 
     
    360334        endDateTime=":".join(items[:-1])+":"+("%f" % float(items[-1])) 
    361335         
    362         timeSteps=timeAxis.asComponentTime() 
     336        timeSteps=timeAxis[1] 
    363337        selectedTimes=[] 
    364338 
    365339        for timeStep in timeSteps: 
    366             ts=timeStep 
    367             timeStep="%.4d-%.2d-%.2d %.2d:%.2d:%f" % (ts.year, ts.month, ts.day, \ 
    368                                             ts.hour, ts.minute, ts.second) 
    369             #print str(timeStep), startDateTime 
    370             ts=str(timeStep) 
     340            #ts=timeStep 
     341            match=dateTimePattern.match(timeStep) 
     342            matchlist=list(match.groups()[:3])+list(match.groups()[4:6]) 
     343            matchlist=[int(i) for i in matchlist] 
     344            matchlist=matchlist+[float("%s.%s" % match.groups()[6:8])] 
     345            ts="%.4d-%.2d-%.2d %.2d:%.2d:%f" % tuple(matchlist) 
     346            print str(timeStep), startDateTime 
     347             
     348            #ts=str(timeStep).replace("T", " ") 
     349            #print ts, startDateTime 
    371350            if ts>endDateTime: 
    372351                break 
     
    378357        if selectedTimes==[]: 
    379358            raise DXOptionHandlingError, "All selected time steps for '%s' are out of range, please go back and re-select." % variable 
    380  
     359                 
    381360        return selectedTimes 
    382361 
     
    388367        and longitude axes are not present.  
    389368        """      
    390         print """CSML: getSelectedVariableArrayDetails(datasetURI, variable, axisSelectionDict) 
    391 Returns a tuple representing the (array shape, grid shape, size) 
    392 of the selected subset of a variable. Grid shape can be None if both latitude 
    393 and longitude axes are not present.  
    394  
    395 Inputs look like: 
    396 ('file:/usr/local/dx/testdata/testdata1.xml', "pqn", {"axis_1.1.1.0":("1999-01-01T00:00:00", "1999-01-01T06:00:00"), 
    397                                                       "axis_1.1.1.1":(30,-30), "axis_1.1.1.2":(30,-30)} 
    398                                                        
    399 Outputs look like: 
    400 ((2, 37, 72), (37, 72), 42624) 
    401  
    402 CSML_END 
    403 """              
    404369        self._openDataFile(datasetURI=datasetURI) 
    405370        var=self._getVariable(variable) 
    406         varType=var.typecode() 
     371        varType='d' # Hard-coded for CSML # var.typecode() 
    407372                 
    408373        timeAxisIndex=None 
    409374        axcount=0 
    410         for axis in var.getAxisList(): 
    411             if axis.isTime(): 
     375        axisList=self._getOrderedAxisList(var) 
     376         
     377        for axis in axisList: 
     378            if axis[0]=="time": 
    412379                timeAxisIndex=axcount 
    413380            axcount=axcount+1 
     
    422389        for key in axisSelectionDict.keys(): 
    423390            #print key, axisSelectionDict[key] 
    424             axisIndex=int(key.split(".")[-1]) 
     391            # Set the axisIndex as value minus one because we index from 1 in the dx lists 
     392            axisIndex=int(key.split(".")[-1])-1 
    425393            (low, high)=axisSelectionDict[key][:2] 
    426             axis=var.getAxis(axisIndex) 
     394            axis=self._getAxisFromIndex(var, axisIndex) 
     395            (name, values)=axis 
    427396             
    428397            if axisIndex==timeAxisIndex: 
     
    431400                axlen=1 
    432401            else: 
    433                 axlen=len(getValuesInRange(low, high, axis[:])) 
     402                axlen=len(getValuesInRange(low, high, values[:])) 
    434403                if axlen==0: 
    435                     if (axis.isLongitude() or axis.isLatitude()) and low==high: 
     404                    if (name=="longitude" or name=="latitude") and low==high: 
    436405                        print "Lat and lon can be axis length zero because we'll nudge to nearest if only one value given." 
    437406                        axlen=1 
    438407                    else: 
    439                         raise DXOptionHandlingError, "All selected '%s' axis values for '%s' are out of range, please go back and re-select." % (axis.id, variable) 
    440          
    441                 if axis.isLatitude(): 
     408                        raise DXOptionHandlingError, "All selected '%s' axis values for '%s' are out of range, please go back and re-select." % (name, variable) 
     409         
     410                if name=="latitude": 
    442411                    latLength=axlen 
    443                 elif axis.isLongitude(): 
     412                elif name=="longitude": 
    444413                    lonLength=axlen 
    445414                         
     
    448417            axLens.append(axlen) 
    449418         
     419#       print axesCounted 
     420#       print axLens 
     421         
    450422        axcount=0 
    451423        arrayShape=[] 
    452         for axis in var.getAxisList(): 
     424        for axis in self._getOrderedAxisList(var): 
     425            (name, values)=axis 
    453426            if axcount not in axesCounted: 
    454                 size=size*len(axis) 
    455                 arrayShape.append(len(axis)) 
     427                size=size*len(values) 
     428                arrayShape.append(len(values)) 
    456429            else: 
    457                 arrayShape.append(axLens[axesCounted[axcount]])   
    458             if axis.isLatitude() and latLength==None: 
     430                #print axcount 
     431                arrayShape.append(axLens[axesCounted.index(axcount)])     
     432            if name=="latitude" and latLength==None: 
    459433                latLength=len(axis) 
    460             elif axis.isLongitude() and lonLength==None: 
     434            elif name=="longitude" and lonLength==None: 
    461435                lonLength=len(axis)    
    462436            axcount=axcount+1 
     
    473447            size=size*8 
    474448        elif varType=="i": 
    475             size=size    
     449            size=size 
    476450 
    477451        return (tuple(arrayShape), gridShape, size) 
     
    482456        Returns the size in bytes of the selected subset of a variable. 
    483457        """ 
    484         print "IGNORE: Calls above method." 
    485458        return self.getSelectedVariableArrayDetails(datasetURI, varID, axisSelectionDict)[2] 
    486459 
     
    493466        with the 'timeStep' given. 
    494467        """ 
    495         print """CSML: getSelectedTimeSteps(datasetURI, variable, axisSelectionDict, timeStep=None) 
    496         Reads the variable with ID 'variable' into memory from file 
    497         'datasetURI' - sub-setting across all axes indicated in 'axisSelectionDict'. 
    498         If 'timeStep' is provided then override the time selection in 'axisSelectionDict' 
    499         with the 'timeStep' given. 
    500  
    501 Inputs look like: 
    502 ('file:/usr/local/dx/testdata/testdata1.xml', "pqn", {"axis_1.1.1.0":("1999-01-01T00:00:00", "1999-01-01T06:00:00"), 
    503                                                       "axis_1.1.1.1":(30,-30), "axis_1.1.1.2":(30,-30)}, "1999-01-01T12:00:00") 
    504                                                        
    505 Output is a CDMS transient variable which is a python Numeric Masked Array with metadata attributes and axes attached. 
    506  
    507 CSML_END 
    508 """      
    509468        self._openDataFile(datasetURI=datasetURI) 
    510469        var=self._getVariable(variable) 
    511470         
    512         axisList=var.getAxisList() 
    513              
    514         selectionStrings=[] 
     471        axisList=self._getOrderedAxisList(var) 
     472             
     473        selectionDict={} 
     474        timeSelection=[] 
    515475        for key in axisSelectionDict.keys(): 
    516476            #print key, axisSelectionDict[key] 
    517             axisIndex=int(key.split(".")[-1]) 
     477            axisIndex=int(key.split(".")[-1])-1 
    518478            axis=axisList[axisIndex]    
    519             id=axis.id 
     479            (name, values)=axis 
     480            id=name 
    520481             
    521482            # deal with time differently 
    522             if axis.isTime(): 
     483            if name=="time": 
    523484                if timeStep!=None:       
    524                     timeStep=timeStep.replace("T", " ")                  
    525                     selectionStrings.append('time="%s"' % timeStep) 
     485                    timeStep=timeStep.replace(" ", "T")                  
     486                    timeSelection=[timeStep] 
    526487                else: 
    527488                    selector=axisSelectionDict[key][:2] 
    528                     selector=(selector[0].replace("T", " "), selector[1].replace("T", " ")) 
    529                     selectionStrings.append('%s=%s' % (axis.id, str(selector)))          
    530             elif axis.isLatitude(): 
     489                    selector=(selector[0].replace(" ", "T"), selector[1].replace(" ", "T")) 
     490                    timeSelection=selector               
     491            elif name=="latitude": 
    531492                (low, high)=axisSelectionDict[key][:2] 
    532493                if low==high: 
    533494                    loworig=low 
    534                     (low, high, nudgeMessage)=nudgeSingleValuesToAxisValues(low, axis[:], "Latitude")     
    535                     if loworig!=low:   print "Nudged latitudes to nearest points..."                    
    536             elif axis.isLongitude(): 
     495                    (low, high, nudgeMessage)=nudgeSingleValuesToAxisValues(low, values[:], "Latitude")   
     496                    if loworig!=low:   print "Nudged latitudes to nearest points..." 
     497                selectionDict[name]=(low, high) 
     498            elif name=="longitude": 
    537499                (low, high)=axisSelectionDict[key][:2] 
    538500                if low==high: 
    539501                    loworig=low 
    540                     (low, high, nudgeMessage)=nudgeSingleValuesToAxisValues(low, axis[:], "Longitude")   
    541                     if loworig!=low:   print "Nudged latitudes to nearest points..."                           
     502                    (low, high, nudgeMessage)=nudgeSingleValuesToAxisValues(low, values[:], "Longitude")         
     503                    if loworig!=low:   print "Nudged latitudes to nearest points..."     
     504                selectionDict[name]=(low, high)   
    542505            else: 
    543506                selector=axisSelectionDict[key][:2] 
    544                 selectionStrings.append('%s=%s' % (axis.id, str(selector))) 
    545          
    546         fullSelectionString=", ".join(selectionStrings) 
    547         variableData=eval("self.file('%s', %s)" % (variable, fullSelectionString)) 
    548         return variableData          
     507                selectionDict[name]=selector 
     508         
     509        print selectionDict, timeSelection 
     510        print dir(var) 
     511        (subsetCSML, subsetNetCDF, arraySize)=var.subsetToGridSeries(timeSelection, "/tmp/out.csml", "/tmp/out.nc", **selectionDict) 
     512        #variableData=eval("self.file('%s', %s)" % (variable, fullSelectionString)) 
     513        return "dummy" #variableData         
    549514         
    550515 
     
    552517        """ 
    553518        Gets any CF metadta global attributes that are available 
    554         from the source dataset/file. 
    555         """ 
    556         print """CSML: getCFGlobalAttributes(datasetURI) 
    557 Gets any CF metadta global attributes that are available from the source dataset/file. 
    558  
    559 Inputs look like: 
    560 ('file:/usr/local/dx/testdata/testdata1.xml') 
    561                                                        
    562 Output is a dictionary of attribute,value pairs got from the input file. 
    563  
    564 CSML_END 
    565 """              
     519        from the source  _getOrderedAxisList(self, var)dataset/file. 
     520        """ 
     521        # Make sure data file is open 
    566522        if self.file==None: self._openDataFile(datasetURI=datafile) 
    567523        gatts={} 
    568         CF_METADATA_GLOBAL_ATTRIBUTE_KEYS="Conventions title source institution history references comment".split() 
    569524 
    570525        for gatt in CF_METADATA_GLOBAL_ATTRIBUTE_KEYS: 
     
    575530 
    576531 
     532    def _getOrderedAxisList(self, var): 
     533        """ 
     534        For CSML API - returns ordered list of axes. 
     535        """ 
     536        axisList=[] 
     537        dr=var.getDomainReference() 
     538        drkey=dr.keys()[0] 
     539        axisList.append([drkey, dr[drkey].split()]) 
     540         
     541        dc=var.getDomainComplement() 
     542        for key in ("level", "latitude", "longitude"): 
     543            if key in dc.keys(): 
     544                axisList.append([key, dc[key]]) 
     545        return axisList 
     546 
     547 
     548    def _getAxisFromIndex(self, var, axindex): 
     549        """ 
     550        For CSML API - returns axis for var given index. 
     551        """ 
     552        return self._getOrderedAxisList(var)[axindex] 
     553     
     554 
    577555if __name__=="__main__":         
    578556    a=CSMLDataHandler() 
    579     print a.getVariables(datasetURI='var1.nc') 
    580     print a.getVariables(datasetURI='var1.nc')     
    581     print a.getDomain(datasetURI='var1.nc', variable="pqn") 
    582     print a.getCFGlobalAttributes('var1.nc') 
    583     print a.getSelectedVariableArrayDetails('var1.nc', "pqn",  
    584                      {"axis_1.1.1.0":("1999-01-01T00:00:00", "1999-01-01T06:00:00"), 
    585                      "axis_1.1.1.1":(30,-30), "axis_1.1.1.2":(30,-30)}) 
     557    print a.getVariables(datasetGroup='CSML test dataset group', dataset='CSML test dataset great test') 
     558     
     559    print a.getVariables(datasetGroup='CSML test dataset group', datasetURI='file:/usr/local/test/dxs/testdata/csml1.xml')     
     560     
     561    print a.getDomain('CSML test dataset group', 'CSML test dataset great test', "pqn") 
     562 
     563    #print a.getHorizontalDomain('CSML test dataset group', 'CSML test dataset great test', "pqn") 
     564    # These have been deprecated! 
     565    #print a.getVerticalSpatialDomain('CSML test dataset group', 'CSML test dataset great test', "pqn") 
     566  
     567    print a.getTemporalDomain('CSML test dataset group', 'CSML test dataset great test', "pqn") 
     568 
     569    print a.getCFGlobalAttributes("file:/usr/local/test/dxs/testdata/csml1.xml") 
     570 
     571    print a.getSelectedVariableArrayDetails('file:/usr/local/test/dxs/testdata/csml1.xml', "pqn",  
     572                     {"axis_1.1.1.1":("1999-01-01T00:00:00", "1999-01-01T06:00:00"), 
     573                     "axis_1.1.1.2":(10,20), "axis_1.1.1.3":(0,90)}) 
     574 
     575    print a.getSelectedVariableArrayDetails('file:/usr/local/test/dxs/testdata/csml1.xml', "pqn",  
     576                     {"axis_1.1.1.1":("1999-01-01T00:00:00", "1999-01-01T06:00:00"), 
     577                     "axis_1.1.1.3":(30,-30)}) 
     578 
     579    print a.getSelectedVariableSubsetSize("file:/usr/local/test/dxs/testdata/csml1.xml", "pqn", 
     580                     {'axis_1.1.1.1':('1999-01-01T00:00:0.000000', '1999-01-01T00:00:0.000000'),   
     581                      'axis_1.1.1.3': [0.0, 355.0], 'axis_1.1.1.2': [-90.0, 90.0]}) 
     582                       
     583    print a.readVariableSubsetIntoMemory("file:/usr/local/test/dxs/testdata/csml1.xml", "pqn", 
     584                     {'axis_1.1.1.1':('1999-01-01T00:00:0.000000', '1999-01-01T00:00:0.000000'),   
     585                      'axis_1.1.1.3': [0.0, 35.0], 'axis_1.1.1.2': [40.0, 90.0]}) 
  • TI03-DataExtractor/trunk/pydxs/DatasetFormatDecider.py

    r794 r1138  
    5252             
    5353        datasetURI=str(datasetURI).split(":")[-1] 
     54         
    5455        if not os.path.isfile(datasetURI): 
    5556            # check if it is a class 
     
    6869 
    6970if __name__=="__main__": 
     71    print "CDMS file..." 
    7072    print DatasetFormatDecider("Test Data Group 3", "Test Dataset 3").datasetFormat 
     73    print "\nCSML file..." 
     74    print DatasetFormatDecider("Test Data Group 3", "Test Dataset 3").datasetFormat 
  • TI03-DataExtractor/trunk/pydxs/InputDatasetManager.py

    r794 r1138  
    5353        content=[["dxGroupShortName","REQUIRED"], 
    5454                 ["dxGroupLongName","REQUIRED"], 
    55                  ["dxGroupFileNamePrefix","none"], 
     55                 ["dxGroupFileNamePrefix","undefined"], 
    5656                 ["dxGroupAccessRestrictions",[["permittedRoles","all"], ["permittedUsers","all"]]], 
    57                  ["MetadataLinks",[["detailedMetadataLink", "none"],  
    58                                    ["discoveryMetadataLink", "none"], 
    59                                    ["usageMetadataLink", "none"], 
    60                                    ["documentationLink", "none"]]]] 
     57                 ["MetadataLinks",[["detailedMetadataLink", "undefined"],  
     58                                   ["discoveryMetadataLink", "undefined"], 
     59                                   ["usageMetadataLink", "undefined"], 
     60                                   ["documentationLink", "undefined"]]]] 
    6161         
    6262         
     
    9999        content=[["dxDatasetShortName","REQUIRED"], 
    100100                 ["dxDatasetLongName","REQUIRED"], 
    101                  ["dxDatasetFileNameSection","none"], 
     101                 ["dxDatasetFileNameSection","undefined"], 
    102102                 ["dxDatasetAccessRestrictions",[["permittedRoles","all"], ["permittedUsers","all"]]], 
    103                  ["MetadataLinks",[["detailedMetadataLink", "none"],  
    104                                    ["discoveryMetadataLink", "none"], 
     103                 ["MetadataLinks",[["detailedMetadataLink", "undefined"],  
     104                                   ["discoveryMetadataLink", "undefined"], 
    105105                                   ["usageMetadataLink", "REQUIRED"], 
    106                                    ["documentationLink", "none"]]]] 
     106                                   ["documentationLink", "undefined"]]]] 
    107107         
    108108        # Find starting node     
  • TI03-DataExtractor/trunk/pydxs/serverConfig.py

    r1109 r1138  
    108108# "/usr/local/dxs" is recommended but you can change it as  
    109109# you wish. 
    110 BASEDIR="/home/as56/abstractWebService/dxs" 
     110BASEDIR="/home/as56/abstractWebService/releases/dx/dxs" 
    111111 
    112112# OUTPUT_DIR: 
Note: See TracChangeset for help on using the changeset viewer.