Commit 25f87ff834fb7b2d3ac63f601bfcaf57c4f9f489

Authored by Elena.Budnik
1 parent 0f7460c1

info for remote

php/RemoteDataCenter/CDAWEB.php
... ... @@ -6,7 +6,8 @@
6 6  
7 7 class CDAWEB extends RemoteDataCenterClientClass
8 8 {
9   -
  9 + //public $defaultFillValue = -1.e31;
  10 +
10 11 protected function dataset2dd($id)
11 12 {
12 13 return $id;
... ... @@ -14,7 +15,7 @@ class CDAWEB extends RemoteDataCenterClientClass
14 15  
15 16 public function getParamSize()
16 17 {
17   - $cmd = "ncinfo_remote ".RemoteData.$this->baseID."/".$this->infoFile." ".$this->ParamId;
  18 + $cmd = "ncinfo_remote ".RemoteData.$this->baseID."/".$this->infoFile." ".$this->ParamId." 0";
18 19 $res = shell_exec($cmd);
19 20  
20 21 return $res;
... ... @@ -28,6 +29,22 @@ class CDAWEB extends RemoteDataCenterClientClass
28 29 return $res;
29 30 }
30 31  
  32 + public function getParamUnits()
  33 + {
  34 + $cmd = "ncinfo_remote ".RemoteData.$this->baseID."/".$this->infoFile." ".$this->ParamId." 2";
  35 + $res = shell_exec($cmd);
  36 +
  37 + return $res;
  38 + }
  39 +
  40 + public function getParamFillValue()
  41 + {
  42 + $cmd = "ncinfo_remote ".RemoteData.$this->baseID."/".$this->infoFile." ".$this->ParamId." 3";
  43 + $res = shell_exec($cmd);
  44 +
  45 + return $res;
  46 + }
  47 +
31 48 public function setInfoFile()
32 49 {
33 50 $this->infoFile = strtolower($this->ViId).".nc";
... ...
php/RemoteDataCenter/RemoteDataCenterClientClass.php
... ... @@ -9,7 +9,7 @@ class RemoteDataCenterClientClass
9 9 public $baseDom = null, $dataCenter = null;
10 10 public $baseDomName;
11 11 public $baseID = null;
12   - public $ViId = null, $ParamId = null;
  12 + public $ViId = null, $ParamId = null, $defaultFillValue;
13 13 protected $client;
14 14 public $infoFile = null;
15 15  
... ...
php/RemoteDataCenter/RemoteParamManager.php
... ... @@ -61,17 +61,30 @@ class RemoteParamManager
61 61  
62 62 $this->center = new $baseId();
63 63 }
64   -
65   -/*
66   - <param xml:id="ace_r">
67   - <get>
68   - <vi name="ace:orb:all">
69   - <baseParam name="R"/>
70   - </vi></get>
71   - <process>$ace_orb_all_R/RADIUS_EARTH</process>
72   - <output/>
73   - </param>
74   -*/
  64 +
  65 +// <param xml:id="imf">
  66 +// <info>
  67 +// <name>imf</name>
  68 +// <short_name>b_gse</short_name>
  69 +// <components>bx,by,bz</components>
  70 +// <units>nT</units>
  71 +// <coordinates_system>GSE</coordinates_system>
  72 +// <tensor_order/>
  73 +// <si_conversion>1e-9&gt;T</si_conversion>
  74 +// <fill_value>-1.0E31</fill_value>
  75 +// <ucd>phys.magField</ucd>
  76 +// <dataset_id>ace-imf-all</dataset_id>
  77 +// <instrument_id>ACE_MAG</instrument_id>
  78 +// </info>
  79 +// <get>
  80 +// <vi name="ace:imf:all">
  81 +// <baseParam name="IMF"/>
  82 +// </vi>
  83 +// </get>
  84 +// <process/>
  85 +// <output/>
  86 +// </param>
  87 +
75 88 public function makeInternalParamXml()
76 89 {
77 90 if (!$this->center->ViId) return false;
... ... @@ -91,13 +104,44 @@ class RemoteParamManager
91 104 $xml->appendChild($paramNode);
92 105  
93 106 $paramNode->setAttribute("xml:id", $this->paramId);
94   - $getNode = $xml->createElement("get");
95   - $viNode = $xml->createElement("vi");
  107 +
  108 + $infoNode = $xml->createElement("info");
  109 + $infoNode->appendChild($xml->createElement("name",strtolower($this->center->ParamId)));
  110 + $infoNode->appendChild($xml->createElement("short_name",strtolower($this->center->ParamId)));
  111 +
  112 + $size = $this->center->getParamSize();
  113 + //TODO spectra components
  114 + if ($size > 1)
  115 + {
  116 + $components = strtolower($this->center->getParamComponents());
  117 + }
  118 + else {
  119 + $components = null;
  120 + }
  121 +
  122 + $fillValue = $this->center->getParamFillValue();
  123 + if (!$fillValue)
  124 + $fillValue = null;
  125 +
  126 + $infoNode->appendChild($xml->createElement("components",$components));
  127 + $infoNode->appendChild($xml->createElement("units",$this->center->getParamUnits()));
  128 + $infoNode->appendChild($xml->createElement("coordinates_system"));
  129 + $infoNode->appendChild($xml->createElement("tensor_order"));
  130 + $infoNode->appendChild($xml->createElement("si_conversion"));
  131 + $infoNode->appendChild($xml->createElement("fill_value", $fillValue));
  132 + $infoNode->appendChild($xml->createElement("ucd"));
  133 + $infoNode->appendChild($xml->createElement("dataset_id"));
  134 + $infoNode->appendChild($xml->createElement("instrument_id"));
  135 +
  136 + $getNode = $xml->createElement("get");
  137 + $viNode = $xml->createElement("vi");
96 138 $baseParamNode = $xml->createElement("baseParam");
97 139 $baseParamNode->setAttribute("name", $this->center->ParamId);
98 140 $viNode->setAttribute("name", strtolower(strtr($this->center->ViId,"_", ":")));
99 141 $viNode->appendChild($baseParamNode);
100   - $getNode->appendChild($viNode);
  142 + $getNode->appendChild($viNode);
  143 +
  144 + $paramNode->appendChild($infoNode);
101 145 $paramNode->appendChild($getNode);
102 146 $paramNode->appendChild($xml->createElement("process"));
103 147 $paramNode->appendChild($xml->createElement("output"));
... ... @@ -111,7 +155,7 @@ class RemoteParamManager
111 155  
112 156 protected function makeComponents($node, $size, $components)
113 157 {
114   - $compArray = explode(";",$components);
  158 + $compArray = explode(",",$components);
115 159  
116 160 for ($i = 0; $i < $size; $i++)
117 161 {
... ... @@ -158,7 +202,7 @@ class RemoteParamManager
158 202 $this->center->setInfoFile();
159 203  
160 204 if (!$this->makeInternalParamXml()) return false;
161   -
  205 +
162 206 if (($size = $this->center->getParamSize()) > 1)
163 207 {
164 208 // make components and args
... ...
php/src/ncinfo_remote.c
  1 +/*
  2 + * get parameter info from CDAWEB dataset nc file
  3 + * args : ncfile varId infoId
  4 + * infoId :
  5 + * 0 - dimension
  6 + * 1 - labels
  7 + * 2 - units
  8 + * 3 - fillvalue
  9 + */
  10 +
1 11 #include <stdio.h>
2 12 #include <stdlib.h>
3 13 #include <string.h>
... ... @@ -22,16 +32,23 @@ main(int argc, char **argv)
22 32 size_t start[] = {0, 0};
23 33 size_t count[] = {1, 0};
24 34 size_t size, length;
25   -
26   - if (argc <= 2) {
  35 + int infoId;
  36 + float number_attr;
  37 +
  38 + const char *info[2];
  39 + info[0] = "UNITS";
  40 + info[1] = "_FillValue";
  41 +
  42 + if (argc <= 3) {
27 43 printf("Incorrect number of arguments\n");
28 44 exit(1);
29 45 }
30   -
  46 +
  47 + infoId = atoi(argv[3]);
  48 +
31 49 stat = nc_open(argv[1],NC_WRITE|NC_SHARE,&ncID); check(stat);
32 50  
33 51 stat = nc_inq_varid(ncID, argv[2], &varID); check(stat);
34   -
35 52 stat = nc_inq_varndims(ncID, varID, &ndims); check(stat);
36 53  
37 54 stat = nc_inq_vardimid(ncID, varID, dimids); check(stat);
... ... @@ -40,39 +57,32 @@ main(int argc, char **argv)
40 57 if (ndims > 1)
41 58 for (i = 1; i < ndims; i++) {
42 59 stat = nc_inq_dimlen(ncID, dimids[i], &len); check(stat);
43   - if (argc == 3)
  60 + if (infoId == 0)
44 61 {
45 62 fprintf(stdout, "%d ", len);
46 63 }
47 64 }
48 65 else
49   - if (argc == 3)
  66 + if (infoId == 0)
50 67 {
51 68 fprintf(stdout,"%d ", len);
52 69 }
53 70  
54   - if (argc == 4)
  71 + if (infoId == 1)
55 72 {
56 73 size_t attlen = 0;
57   - stat = nc_inq_attlen(ncID, varID, "LABL_PTR_1", &attlen); check(stat);
58   - // stat = nc_inq_atttype(ncID, varID, "LABL_PTR_1", &xtype); check(stat);
  74 + stat = nc_inq_attlen(ncID, varID, "LABL_PTR_1", &attlen); check(stat);
59 75  
60 76 unsigned char *string_attr = (unsigned char *)malloc(attlen * sizeof(char*));
61 77 stat = nc_get_att(ncID, varID, "LABL_PTR_1", string_attr); check(stat);
62   -
63   - // printf("attribute = %s\n", string_attr);
  78 +
64 79 stat = nc_inq_varid(ncID, string_attr, &labelID); check(stat);
65   - // stat = nc_inq_vartype(ncID, labelID, &xtype); check(stat);
66   -
67   - // printf("%d \n", xtype);
68   -
69 80 stat = nc_inq_varndims(ncID, labelID, &ndims); check(stat);
70 81  
71 82 stat = nc_inq_vardimid(ncID, labelID, dimids); check(stat);
72 83  
73 84 for (i = 0; i < ndims; i++) {
74   - stat = nc_inq_dimlen(ncID, dimids[i], &len); check(stat);
75   - // printf("%d \n", len);
  85 + stat = nc_inq_dimlen(ncID, dimids[i], &len); check(stat);
76 86 if (i == 0) size = len;
77 87 if (i == 1) length = len;
78 88 }
... ... @@ -82,13 +92,32 @@ main(int argc, char **argv)
82 92 for (i = 0; i < size; i++)
83 93 {
84 94 stat = nc_get_vara(ncID, labelID, start, count, string_var); check(stat);
85   - fprintf(stdout, "%s;", string_var);
  95 + fprintf(stdout, "%s", string_var);
  96 + if (i < size -1) fprintf(stdout,",");
86 97 start[0]++;
87 98 }
88 99 free(string_attr);
89 100 free(string_var);
90 101 }
91 102  
  103 + if (infoId == 2)
  104 + {
  105 + size_t attlen = 0;
  106 + stat = nc_inq_attlen(ncID, varID, info[infoId-2], &attlen); check(stat);
  107 +
  108 + unsigned char *string_attr = (unsigned char *)malloc(attlen * sizeof(char*));
  109 + stat = nc_get_att(ncID, varID, info[infoId-2], string_attr); check(stat);
  110 + fprintf(stdout, "%s", string_attr);
  111 + free(string_attr);
  112 + }
  113 +
  114 + if (infoId == 3)
  115 + {
  116 + stat = nc_get_att(ncID, varID, info[infoId-2], &number_attr); check(stat);
  117 + fprintf(stdout, "%e", number_attr);
  118 +
  119 + }
  120 +
92 121 stat = nc_close(ncID);
93 122 exit(0);
94 123 }
... ...