Commit 400672496068037ee3d5b358ffc5bfd550be86cb
1 parent
7e8a899e
Exists in
master
and in
32 other branches
Update EPN/TAP granules generation
Showing
1 changed file
with
85 additions
and
8 deletions
Show diff stats
update_amda/makeEPNTAPGranules.php
@@ -2,6 +2,8 @@ | @@ -2,6 +2,8 @@ | ||
2 | 2 | ||
3 | //error_reporting(E_ERROR); | 3 | //error_reporting(E_ERROR); |
4 | 4 | ||
5 | +date_default_timezone_set("UTC"); | ||
6 | + | ||
5 | $localparams_tree = getenv('LocalData')."/LocalParams.xml"; | 7 | $localparams_tree = getenv('LocalData')."/LocalParams.xml"; |
6 | $output_file = getenv('EPNTAPData')."/amda-granules.csv"; | 8 | $output_file = getenv('EPNTAPData')."/amda-granules.csv"; |
7 | $ddservice_wsdl = getenv('DD_WSDL'); | 9 | $ddservice_wsdl = getenv('DD_WSDL'); |
@@ -54,7 +56,7 @@ $mapping = array( | @@ -54,7 +56,7 @@ $mapping = array( | ||
54 | 'modification_date' => '@@modification_date@@', | 56 | 'modification_date' => '@@modification_date@@', |
55 | 'release_date' => '@@release_date@@', | 57 | 'release_date' => '@@release_date@@', |
56 | 'service_title' => 'AMDADB', | 58 | 'service_title' => 'AMDADB', |
57 | - 'access_url' => '@@amda_rest_api_entry_point@@getGranule.php?obs_id=@@dataset_id@@&start=@@granule_start_time_timestamp@@&stop=@@granule_stop_time_timestamp@@&format=CDF', | 59 | + 'access_url' => '@@amda_rest_api_entry_point@@getGranule.php?obs_id=@@dataset_id@@&start=@@granule_start_time_timestamp@@&stop=@@granule_stop_time_timestamp@@', |
58 | 'access_format' => 'application/x-cdf-istp', | 60 | 'access_format' => 'application/x-cdf-istp', |
59 | 'target_region' => '@@target_region@@', | 61 | 'target_region' => '@@target_region@@', |
60 | 'publisher' => 'CDPP', | 62 | 'publisher' => 'CDPP', |
@@ -94,14 +96,61 @@ function parseProcessingLevel($info) { | @@ -94,14 +96,61 @@ function parseProcessingLevel($info) { | ||
94 | return '3'; | 96 | return '3'; |
95 | } | 97 | } |
96 | 98 | ||
97 | -function spaseToEpnTapMeasurementType($measurement_type) { | ||
98 | - return $measurement_type; | 99 | +function getEpnTapMeasurementType($measurement_type, $UCDs) { |
100 | + $generic_ucd = ''; | ||
101 | + switch ($measurement_type) { | ||
102 | + case 'ThermalPlasma': | ||
103 | + $generic_ucd = 'phys.flux'; | ||
104 | + break; | ||
105 | + case 'IonComposition': | ||
106 | + case 'NeutralGas': | ||
107 | + $generic_ucd = 'phys.composition'; | ||
108 | + break; | ||
109 | + case 'EnergeticParticles': | ||
110 | + $generic_ucd = 'phys.particle'; | ||
111 | + break; | ||
112 | + case 'Waves': | ||
113 | + case 'Waves.Passive': | ||
114 | + $generic_ucd = 'em.pw'; | ||
115 | + break; | ||
116 | + case 'Ephemeris': | ||
117 | + $generic_ucd = 'pos.ephem'; | ||
118 | + break; | ||
119 | + case 'ElectricField': | ||
120 | + $generic_ucd = 'phys.electField'; | ||
121 | + break; | ||
122 | + case 'MagneticField': | ||
123 | + $generic_ucd = 'phys.magField'; | ||
124 | + break; | ||
125 | + case 'Spectrum': | ||
126 | + $generic_ucd = 'spect'; | ||
127 | + break; | ||
128 | + case 'InstrumentStatus': | ||
129 | + $generic_ucd = 'instr'; | ||
130 | + break; | ||
131 | + case 'Irradiance': | ||
132 | + $generic_ucd = 'phot.flux'; | ||
133 | + break; | ||
134 | + case 'Radiance': | ||
135 | + $generic_ucd = 'phot.radiance'; | ||
136 | + break; | ||
137 | + default: | ||
138 | + echo "[WARNING] UCD - Unknown measurement type: ".$measurement_type.PHP_EOL; | ||
139 | + break; | ||
140 | + } | ||
141 | + if (!empty($generic_ucd) && !in_array($generic_ucd, $UCDs)) | ||
142 | + array_unshift($UCDs, $generic_ucd); | ||
143 | + return implode(';', $UCDs); | ||
99 | } | 144 | } |
100 | 145 | ||
101 | function timestampToJulianDay($timestamp) { | 146 | function timestampToJulianDay($timestamp) { |
102 | return intval($timestamp) / 86400 + 2440587.5; | 147 | return intval($timestamp) / 86400 + 2440587.5; |
103 | } | 148 | } |
104 | 149 | ||
150 | +function timestampToISO($timestamp) { | ||
151 | + return date("Y-m-d\TH:i:s\Z", $timestamp); | ||
152 | +} | ||
153 | + | ||
105 | function getTargetClass($spaseRegion) { | 154 | function getTargetClass($spaseRegion) { |
106 | $parts = explode(".", $spaseRegion); | 155 | $parts = explode(".", $spaseRegion); |
107 | if (count($parts) < 1) { | 156 | if (count($parts) < 1) { |
@@ -143,6 +192,7 @@ function getTargetName($targetClass, $spaseRegion, $missionName, $dataset_id) { | @@ -143,6 +192,7 @@ function getTargetName($targetClass, $spaseRegion, $missionName, $dataset_id) { | ||
143 | } | 192 | } |
144 | switch ($targetClass) { | 193 | switch ($targetClass) { |
145 | case "planet": | 194 | case "planet": |
195 | + case "satellite": | ||
146 | if ((count($parts) > 1) && !in_array($parts[1], array("Magnetosheath", "Magnetosphere", "NearSurface", "Surface"))) { | 196 | if ((count($parts) > 1) && !in_array($parts[1], array("Magnetosheath", "Magnetosphere", "NearSurface", "Surface"))) { |
147 | return $parts[1]; | 197 | return $parts[1]; |
148 | } | 198 | } |
@@ -232,6 +282,8 @@ foreach ($dataset_nodes as $dataset_node) { | @@ -232,6 +282,8 @@ foreach ($dataset_nodes as $dataset_node) { | ||
232 | $dataset_place_holders = array(); | 282 | $dataset_place_holders = array(); |
233 | //Dataset id | 283 | //Dataset id |
234 | $datasetId = $dataset_node->getAttribute("xml:id"); | 284 | $datasetId = $dataset_node->getAttribute("xml:id"); |
285 | + //if ($datasetId != 'psp-het-1hr') | ||
286 | + // continue; | ||
235 | if (empty($datasetId)) { | 287 | if (empty($datasetId)) { |
236 | echo "[WARNING] Cannot retrieve dataset id".PHP_EOL; | 288 | echo "[WARNING] Cannot retrieve dataset id".PHP_EOL; |
237 | continue; | 289 | continue; |
@@ -255,11 +307,27 @@ foreach ($dataset_nodes as $dataset_node) { | @@ -255,11 +307,27 @@ foreach ($dataset_nodes as $dataset_node) { | ||
255 | continue; | 307 | continue; |
256 | } | 308 | } |
257 | 309 | ||
310 | + $UCDs = array(); | ||
311 | + $parameter_nodes = $dataset_node->getElementsByTagName("parameter"); | ||
312 | + foreach ($parameter_nodes as $parameter_node) { | ||
313 | + $ucd = trim($parameter_node->getAttribute('ucd')); | ||
314 | + if (empty($ucd)) | ||
315 | + continue; | ||
316 | + $ucd_list = explode(';', $ucd); | ||
317 | + foreach ($ucd_list as $u) { | ||
318 | + $u = trim($u); | ||
319 | + if (empty($u)) | ||
320 | + continue; | ||
321 | + if (!in_array($u, $UCDs)) | ||
322 | + $UCDs[] = $u; | ||
323 | + } | ||
324 | + } | ||
325 | + | ||
258 | $dataset_place_holders['min_sampling'] = parseSampling($dataset_node->getAttribute("sampling")); | 326 | $dataset_place_holders['min_sampling'] = parseSampling($dataset_node->getAttribute("sampling")); |
259 | $dataset_place_holders['max_sampling'] = parseSampling($dataset_node->getAttribute("maxSampling")); | 327 | $dataset_place_holders['max_sampling'] = parseSampling($dataset_node->getAttribute("maxSampling")); |
260 | $dataset_place_holders['spase_resource_id'] = $dataset_node->getAttribute("spaseId"); | 328 | $dataset_place_holders['spase_resource_id'] = $dataset_node->getAttribute("spaseId"); |
261 | $dataset_place_holders['spase_measurement_type'] = $dataset_node->getAttribute("measurement_type"); | 329 | $dataset_place_holders['spase_measurement_type'] = $dataset_node->getAttribute("measurement_type"); |
262 | - $dataset_place_holders['measurement_type'] = spaseToEpnTapMeasurementType($dataset_place_holders['spase_measurement_type']); | 330 | + $dataset_place_holders['measurement_type'] = getEpnTapMeasurementType($dataset_place_holders['spase_measurement_type'], $UCDs); |
263 | $dataset_place_holders['processing_level'] = parseProcessingLevel($dataset_node->getAttribute("xml:id")); | 331 | $dataset_place_holders['processing_level'] = parseProcessingLevel($dataset_node->getAttribute("xml:id")); |
264 | $target = $dataset_node->getAttribute("target"); | 332 | $target = $dataset_node->getAttribute("target"); |
265 | 333 | ||
@@ -315,8 +383,11 @@ foreach ($dataset_nodes as $dataset_node) { | @@ -315,8 +383,11 @@ foreach ($dataset_nodes as $dataset_node) { | ||
315 | if (!empty($observatory_node)) { | 383 | if (!empty($observatory_node)) { |
316 | $mission_name = $observatory_node->getAttribute('name'); | 384 | $mission_name = $observatory_node->getAttribute('name'); |
317 | } | 385 | } |
318 | - $dataset_place_holders['mission_name'] = $mission_name; | ||
319 | - $dataset_place_holders['instrument_name'] = $instrument_name; | 386 | + $dataset_place_holders['mission_name'] = utf8_encode($mission_name); |
387 | + $dataset_place_holders['instrument_name'] = preg_replace('/[^:\/\(\) \w-]/', ' ', $instrument_name); | ||
388 | + if ($dataset_place_holders['instrument_name'] != $instrument_name) { | ||
389 | + echo "=================> ".$dataset_place_holders['instrument_name'].PHP_EOL; | ||
390 | + } | ||
320 | if (!empty($dataset_group_node)) { | 391 | if (!empty($dataset_group_node)) { |
321 | if ($dataset_place_holders['processing_level'] == 'L2') { | 392 | if ($dataset_place_holders['processing_level'] == 'L2') { |
322 | $dataset_place_holders['processing_level'] = parseProcessingLevel($dataset_group_node->getAttribute("xml:id")); | 393 | $dataset_place_holders['processing_level'] = parseProcessingLevel($dataset_group_node->getAttribute("xml:id")); |
@@ -324,7 +395,13 @@ foreach ($dataset_nodes as $dataset_node) { | @@ -324,7 +395,13 @@ foreach ($dataset_nodes as $dataset_node) { | ||
324 | } | 395 | } |
325 | 396 | ||
326 | try { | 397 | try { |
327 | - $vi = str_replace("-","_",$datasetId); | 398 | + $prior_id = trim($dataset_node->getAttribute('PriorID')); |
399 | + if (!empty($prior_id)) { | ||
400 | + $vi = str_replace("-","_",$prior_id); | ||
401 | + } | ||
402 | + else { | ||
403 | + $vi = str_replace("-","_",$datasetId); | ||
404 | + } | ||
328 | $res = $client->getGranules($vi); | 405 | $res = $client->getGranules($vi); |
329 | } | 406 | } |
330 | catch (SoapFault $exception) { | 407 | catch (SoapFault $exception) { |
@@ -347,7 +424,7 @@ foreach ($dataset_nodes as $dataset_node) { | @@ -347,7 +424,7 @@ foreach ($dataset_nodes as $dataset_node) { | ||
347 | $granule_place_holders['granule_index'] = str_replace(".nc", "", $granule_info[2]); | 424 | $granule_place_holders['granule_index'] = str_replace(".nc", "", $granule_info[2]); |
348 | $granule_place_holders['granule_start_time'] = timestampToJulianDay($granule_info[0]); | 425 | $granule_place_holders['granule_start_time'] = timestampToJulianDay($granule_info[0]); |
349 | $granule_place_holders['granule_stop_time'] = timestampToJulianDay($granule_info[1]); | 426 | $granule_place_holders['granule_stop_time'] = timestampToJulianDay($granule_info[1]); |
350 | - $granule_place_holders['modification_date'] = timestampToJulianDay($granule_info[3]); | 427 | + $granule_place_holders['modification_date'] = timestampToISO($granule_info[3]); |
351 | $granule_place_holders['granule_start_time_timestamp'] = $granule_info[0]; | 428 | $granule_place_holders['granule_start_time_timestamp'] = $granule_info[0]; |
352 | $granule_place_holders['granule_stop_time_timestamp'] = $granule_info[1]; | 429 | $granule_place_holders['granule_stop_time_timestamp'] = $granule_info[1]; |
353 | $granule_place_holders['creation_date'] = $granule_place_holders['modification_date']; | 430 | $granule_place_holders['creation_date'] = $granule_place_holders['modification_date']; |