Commit f223812ea6c9e9df15f0ebf9823381b958849342
1 parent
f417c762
Exists in
master
and in
112 other branches
make orbits in km
Showing
1 changed file
with
120 additions
and
0 deletions
Show diff stats
... | ... | @@ -0,0 +1,120 @@ |
1 | +<?php | |
2 | +/* | |
3 | +* Executable to make dynamically internal ephemeris params in km | |
4 | +* | |
5 | +*/ | |
6 | + $scale = array('AU'=>'ASTRONOMICAL_UNIT','Rme'=>'RADIUS_MERCURY','Rv'=>'RADIUS_VENUS','Re'=>'RADIUS_EARTH','Rma'=>'RADIUS_MARS','Rm'=>'RADIUS_MARS', | |
7 | + 'Rj'=>'RADIUS_JUPITER','Rs'=>'RADIUS_SATURN','Ru'=>'RADIUS_URANUS','Rn' =>'RADIUS_NEPTUNE', | |
8 | + 'Rga'=>'RADIUS_GANYMEDE','Rg'=>'RADIUS_GANYMEDE'); | |
9 | + | |
10 | + $AMDA_IHM = getenv('AMDA_IHM'); | |
11 | + | |
12 | + if (!isset($AMDA_IHM)) | |
13 | + require_once __DIR__."/config.php"; | |
14 | + else | |
15 | + require_once $AMDA_IHM."/php/config.php"; | |
16 | + | |
17 | + if (!defined('orbitsXml')) | |
18 | + exit("orbitsXml is not defined in config.php".PHP_EOL); | |
19 | + | |
20 | + if (!file_exists(orbitsXml)) | |
21 | + exit("No orbitsXml file".PHP_EOL); | |
22 | + | |
23 | + $amdaParamDir = DATAPATH."newKernelDDBase"; | |
24 | + | |
25 | + $dom = new DomDocument("1.0"); | |
26 | + $dom->load(orbitsXml); | |
27 | + | |
28 | + $orbits = $dom->getElementsByTagName("orbites"); | |
29 | + | |
30 | + $domKm = new DomDocument("1.0"); | |
31 | + $domKm->formatOutput = TRUE; | |
32 | + $domKm->preserveWhiteSpace = FALSE; | |
33 | + | |
34 | + $rootKm = $domKm->createElement('orbitesList'); | |
35 | + $domKm->appendChild($rootKm); | |
36 | + | |
37 | + Header('Content-type: text/xml'); | |
38 | + | |
39 | + foreach ($orbits as $orbit) | |
40 | + { | |
41 | + $id = $orbit->getAttribute('xml:id'); | |
42 | + $units = $orbit->getAttribute('units'); | |
43 | + | |
44 | + if ($units != 'km') // add orbital parameter in km | |
45 | + { | |
46 | + $param_file = $amdaParamDir."/".$id.".xml"; | |
47 | + if (file_exists($param_file)) | |
48 | + { | |
49 | + $paramXml = simplexml_load_file($param_file); | |
50 | + $process = $paramXml->process; | |
51 | + | |
52 | + if ($process == "") | |
53 | + { | |
54 | + $newProcess = '$'.$paramXml->get->vi['name'].'*'.$scale[$units]; | |
55 | + } | |
56 | + else if (strpos($process, '/RADIUS') > 0) | |
57 | + { | |
58 | + $newProcess = substr($process,0,strpos($process, '/RADIUS')); | |
59 | + if ($newProcess == '$'.$paramXml->get->vi['name']) $newProcess = ''; | |
60 | + } | |
61 | + else | |
62 | + { | |
63 | + $newProcess = $process."/".$scale[$units]; | |
64 | + } | |
65 | + | |
66 | + $newId = $id."_km"; | |
67 | + $new_param_file = $amdaParamDir."/".$newId.".xml"; | |
68 | + $newXML = new SimpleXMLElement("<param></param>"); | |
69 | + $newXML->addAttribute('xml:id', $newId); | |
70 | + $newInfo = $newXML->addChild('info'); | |
71 | + $newInfo->addChild('name', $paramXml->info->name); | |
72 | + $newInfo->addChild('short_name', $paramXml->info->name); | |
73 | + $newInfo->addChild('components', $paramXml->info->components); | |
74 | + $newInfo->addChild('units', 'km'); | |
75 | + $newInfo->addChild('coordinates_system', $paramXml->info->coordinates_system); | |
76 | + $newInfo->addChild('tensor_order', $paramXml->info->tensor_order); | |
77 | + $newInfo->addChild('si_conversion', 1.e3); | |
78 | + //TODO scale fill value | |
79 | + $newInfo->addChild('fill_value', $paramXml->info->fill_value); | |
80 | + $newInfo->addChild('ucd', $paramXml->info->ucd); | |
81 | + $newInfo->addChild('dataset_id', $paramXml->info->dataset_id); | |
82 | + $newGet = $newXML->addChild('get'); | |
83 | + $newVi = $newXML->addChild('vi'); | |
84 | + $newVi->addAttribute('name', $paramXml->get->vi['name']); | |
85 | + $newParam = $newVi->addChild('baseParam'); | |
86 | + $newParam->addAttribute('name', $paramXml->get->vi->baseParam['name']); | |
87 | + $newXML->addChild('process',$newProcess); | |
88 | + $newXML->addChild('output'); | |
89 | + $newXML->asXML($new_param_file); | |
90 | + | |
91 | + $newOrbit = $domKm->createElement('orbite'); | |
92 | + $newOrbit->setAttribute('xml:id', $newId); | |
93 | + $newOrbit->setAttribute('coordinates_system', $paramXml->info->coordinates_system); | |
94 | + $newOrbit->setAttribute('units','km'); | |
95 | + $newOrbit->setAttribute('mission', $orbit->getAttribute('mission')); | |
96 | + if ($orbit->hasAttribute('missionGroup')) | |
97 | + $newOrbit->setAttribute('missionGroup', $orbit->getAttribute('missionGroup')); | |
98 | + $newOrbit->setAttribute('dataset', $orbit->getAttribute('dataset')); | |
99 | + $newOrbit->setAttribute('target', $orbit->getAttribute('target')); | |
100 | + $rootKm->appendChild($newOrbit); | |
101 | + } | |
102 | + } | |
103 | + } | |
104 | + | |
105 | + $domKm->save(LocalData.'OrbitsInternal.xml'); | |
106 | + | |
107 | + if (file_exists(LocalData.'OrbitsAll.xml')) | |
108 | + unlink(LocalData.'OrbitsAll.xml'); | |
109 | + | |
110 | + // Merge internal orbits and open orbits | |
111 | + $orbitsInternal = $rootKm->getElementsByTagName('orbite'); | |
112 | + foreach ($orbitsInternal as $orbitInternal) | |
113 | + { | |
114 | + $dom->documentElement->appendChild($dom->importNode($orbitInternal)); | |
115 | + } | |
116 | + | |
117 | + $dom->save(LocalData.'OrbitsAll.xml'); | |
118 | +?> | |
119 | + | |
120 | + | |
0 | 121 | \ No newline at end of file |
... | ... |