Commit 1b0e06315b034208de6f14c271ab6ac033a9c142

Authored by Elena.Budnik
1 parent 893d690d

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