Commit 1b0e06315b034208de6f14c271ab6ac033a9c142
1 parent
893d690d
Exists in
master
and in
9 other branches
unique name for obs
Showing
1 changed file
with
51 additions
and
34 deletions
Show diff stats
src/REMOTEDATA/CDAWEB.php
@@ -14,10 +14,10 @@ class CDAWEB extends RemoteDataCenterClass | @@ -14,10 +14,10 @@ class CDAWEB extends RemoteDataCenterClass | ||
14 | private $CDAWEB = array(), $masterCDF = array(); | 14 | private $CDAWEB = array(), $masterCDF = array(); |
15 | 15 | ||
16 | // https://cdaweb.gsfc.nasa.gov/WS/cdasr/1/dataviews/sp_phys/instrumentTypes | 16 | // https://cdaweb.gsfc.nasa.gov/WS/cdasr/1/dataviews/sp_phys/instrumentTypes |
17 | - /*private $validInstrumentTypes = [ "Activity%20Indices", "Electric%20Fields%20(space)","Gamma%20and%20X-Rays", | 17 | + private $validInstrumentTypes = [ "Activity%20Indices", "Electric%20Fields%20(space)","Gamma%20and%20X-Rays", |
18 | "Magnetic%20Fields%20(space)", "Particles%20(space)", "Plasma%20and%20Solar%20Wind", | 18 | "Magnetic%20Fields%20(space)", "Particles%20(space)", "Plasma%20and%20Solar%20Wind", |
19 | - "Radio%20and%20Plasma%20Waves%20(space)" ]; */ | ||
20 | - private $validInstrumentTypes = [ "Magnetic%20Fields%20(space)" ]; | 19 | + "Radio%20and%20Plasma%20Waves%20(space)" ]; |
20 | + // private $validInstrumentTypes = [ "Magnetic%20Fields%20(space)", "Radio%20and%20Plasma%20Waves%20(space)" ]; | ||
21 | 21 | ||
22 | // not used : $validInstrumentTypes = ["Ephemeris"]; | 22 | // not used : $validInstrumentTypes = ["Ephemeris"]; |
23 | 23 | ||
@@ -125,7 +125,7 @@ class CDAWEB extends RemoteDataCenterClass | @@ -125,7 +125,7 @@ class CDAWEB extends RemoteDataCenterClass | ||
125 | $obsIds[$obsId] = $insIds; | 125 | $obsIds[$obsId] = $insIds; |
126 | } | 126 | } |
127 | 127 | ||
128 | - $this->obsGroupsIds[$obsGroupId][$insType] = $obsIds; | 128 | + $this->obsGroupsIds[$insType][$obsGroupId] = $obsIds; |
129 | } | 129 | } |
130 | } | 130 | } |
131 | 131 | ||
@@ -330,7 +330,7 @@ class CDAWEB extends RemoteDataCenterClass | @@ -330,7 +330,7 @@ class CDAWEB extends RemoteDataCenterClass | ||
330 | $sampling = $this->getDatasetSpaseDescription($dsId); | 330 | $sampling = $this->getDatasetSpaseDescription($dsId); |
331 | $this->updateDDServerXml("GlobalStart",$startTime); | 331 | $this->updateDDServerXml("GlobalStart",$startTime); |
332 | $this->updateDDServerXml("GlobalStop",$endTime); | 332 | $this->updateDDServerXml("GlobalStop",$endTime); |
333 | - | 333 | + |
334 | // no general description - strange dataset | 334 | // no general description - strange dataset |
335 | if ($sampling == -1) | 335 | if ($sampling == -1) |
336 | return null; | 336 | return null; |
@@ -339,7 +339,7 @@ class CDAWEB extends RemoteDataCenterClass | @@ -339,7 +339,7 @@ class CDAWEB extends RemoteDataCenterClass | ||
339 | echo " !!! $dsId $sampling".PHP_EOL; | 339 | echo " !!! $dsId $sampling".PHP_EOL; |
340 | else | 340 | else |
341 | $this->updateDDServerXml("MinSampling",$sampling); | 341 | $this->updateDDServerXml("MinSampling",$sampling); |
342 | - | 342 | + |
343 | $dsNode->setAttribute('spaseUrl',$this->CDAWEB[$dsId]); | 343 | $dsNode->setAttribute('spaseUrl',$this->CDAWEB[$dsId]); |
344 | // $dsNode->setAttribute('masterCdf',$this->existsMasterCdf($dsId)); | 344 | // $dsNode->setAttribute('masterCdf',$this->existsMasterCdf($dsId)); |
345 | $dsNode->setAttribute("desc", "$label; $startTime - $endTime"); | 345 | $dsNode->setAttribute("desc", "$label; $startTime - $endTime"); |
@@ -462,7 +462,9 @@ class CDAWEB extends RemoteDataCenterClass | @@ -462,7 +462,9 @@ class CDAWEB extends RemoteDataCenterClass | ||
462 | $rootNode->appendChild($this->DDserverXml->createElement("DataSetID", $ds)); | 462 | $rootNode->appendChild($this->DDserverXml->createElement("DataSetID", $ds)); |
463 | $rootNode->appendChild($this->DDserverXml->createElement("GlobalStart")); | 463 | $rootNode->appendChild($this->DDserverXml->createElement("GlobalStart")); |
464 | $rootNode->appendChild($this->DDserverXml->createElement("GlobalStop")); | 464 | $rootNode->appendChild($this->DDserverXml->createElement("GlobalStop")); |
465 | - $rootNode->appendChild($this->DDserverXml->createElement("MinSampling")); | 465 | + $rootNode->appendChild($this->DDserverXml->createElement("MinSampling")); |
466 | + // fill value by default - if different - add into param description | ||
467 | + $rootNode->appendChild($this->DDserverXml->createElement("FillValue"), -1.0E31); | ||
466 | } | 468 | } |
467 | 469 | ||
468 | protected function updateDDServerXml($target, $value) | 470 | protected function updateDDServerXml($target, $value) |
@@ -607,11 +609,25 @@ class CDAWEB extends RemoteDataCenterClass | @@ -607,11 +609,25 @@ class CDAWEB extends RemoteDataCenterClass | ||
607 | $dataRoot->appendChild($this->dataCenter); | 609 | $dataRoot->appendChild($this->dataCenter); |
608 | 610 | ||
609 | $this->setDataCenterAttributes(); | 611 | $this->setDataCenterAttributes(); |
610 | - | ||
611 | - foreach ($this->obsGroupsIds as $groupId => $insTypes){ | ||
612 | - foreach ($insTypes as $insType => $obss){ | 612 | + $first = true; |
613 | + | ||
614 | + foreach ($this->obsGroupsIds as $insType => $groupIds){ | ||
615 | + // getElementByID doesn't work on newly created Document | ||
616 | + if (!$first) { | ||
617 | + $this->domAmda->loadXML($this->domAmda->saveXML()); | ||
618 | + $this->dataCenter = $this->domAmda->getElementById($this->baseID); | ||
619 | + } | ||
620 | + foreach ($groupIds as $groupId => $obss){ | ||
621 | + | ||
613 | $obsNodes = array(); | 622 | $obsNodes = array(); |
614 | - foreach ($obss as $obs => $inss){ | 623 | + |
624 | + foreach ($obss as $obs => $inss) | ||
625 | + { | ||
626 | + if (substr($obs,0,4) == "OMNI" && substr($groupId,0,4) != "OMNI"){ | ||
627 | + echo 'OMNI '.$obs.' '.$missionId.PHP_EOL; | ||
628 | + continue; | ||
629 | + } | ||
630 | + | ||
615 | $insNodes = array(); | 631 | $insNodes = array(); |
616 | // Create instrument nodes | 632 | // Create instrument nodes |
617 | foreach ($inss as $ins => $dss){ | 633 | foreach ($inss as $ins => $dss){ |
@@ -653,8 +669,12 @@ class CDAWEB extends RemoteDataCenterClass | @@ -653,8 +669,12 @@ class CDAWEB extends RemoteDataCenterClass | ||
653 | 669 | ||
654 | $obsId = $this->baseID.":".$this->param2dd($groupId).":".$this->param2dd($obsSpaseId); | 670 | $obsId = $this->baseID.":".$this->param2dd($groupId).":".$this->param2dd($obsSpaseId); |
655 | 671 | ||
656 | - if (!($obsNode = $this->domAmda->getElementById($obsId))){ | 672 | + if (!($obsNode = $this->domAmda->getElementById($obsId))){ |
657 | $obsNode = $this->createObservatoryNode($obsSpaseId, $groupId); | 673 | $obsNode = $this->createObservatoryNode($obsSpaseId, $groupId); |
674 | + | ||
675 | +// if (!$first){ | ||
676 | +// echo "NEW OBS ".$obsId.PHP_EOL; | ||
677 | +// } | ||
658 | $obsNodes[] = $obsNode; | 678 | $obsNodes[] = $obsNode; |
659 | } | 679 | } |
660 | 680 | ||
@@ -663,31 +683,28 @@ class CDAWEB extends RemoteDataCenterClass | @@ -663,31 +683,28 @@ class CDAWEB extends RemoteDataCenterClass | ||
663 | } | 683 | } |
664 | } | 684 | } |
665 | } // foreach ($obss as $obs => $inss) | 685 | } // foreach ($obss as $obs => $inss) |
666 | - } | ||
667 | - if ($obsNodes){ | ||
668 | - $missionId = $this->baseID.":".$this->param2dd($groupId); | ||
669 | - | ||
670 | - if (!($missionNode = $this->domAmda->getElementById($missionId))){ | ||
671 | - $missionNode = $this->createMissionNode($groupId); | ||
672 | - $this->dataCenter->appendChild($missionNode); | ||
673 | - } | ||
674 | 686 | ||
675 | - foreach ($obsNodes as $obsNode){ | ||
676 | - // observatory == mission | ||
677 | - if ($obsNode->getAttribute('name') == $missionNode->getAttribute('name')) { | ||
678 | - $insNodes = $obsNode->getElementsByTagName("instrument"); | ||
679 | - foreach ($insNodes as $insNode) | ||
680 | - $missionNode->appendChild($insNode); | 687 | + if ($obsNodes){ |
688 | + $missionId = $this->baseID.":".$this->param2dd($groupId); | ||
689 | + | ||
690 | + if (!($missionNode = $this->domAmda->getElementById($missionId))){ | ||
691 | + $missionNode = $this->createMissionNode($groupId); | ||
692 | + $this->dataCenter->appendChild($missionNode); | ||
681 | } | 693 | } |
682 | - else | ||
683 | - $missionNode->appendChild($obsNode); | 694 | + |
695 | + foreach ($obsNodes as $obsNode){ | ||
696 | + // observatory == mission | ||
697 | + if ($obsNode->getAttribute('name') == $missionNode->getAttribute('name')) { | ||
698 | + $insNodes = $obsNode->getElementsByTagName("instrument"); | ||
699 | + foreach ($insNodes as $insNode) | ||
700 | + $missionNode->appendChild($insNode); | ||
701 | + } | ||
702 | + else | ||
703 | + $missionNode->appendChild($obsNode); | ||
704 | + } | ||
684 | } | 705 | } |
685 | - } | ||
686 | - // getElemetByID doesn't work on newly created Document | ||
687 | - $this->domAmda->save('temp.xml'); | ||
688 | - $this->domAmda->load('temp.xml'); | ||
689 | - | ||
690 | - $this->dataCenter = $this->domAmda->getElementById($this->baseID); | 706 | + } |
707 | + $first = false; | ||
691 | } | 708 | } |
692 | } | 709 | } |
693 | 710 |