LCOV - code coverage report
Current view: top level - frmts/pcidsk/sdk/segment - cpcidsktoutinmodel.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 0 702 0.0 %
Date: 2024-04-27 14:28:19 Functions: 0 14 0.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Purpose:  Implementation of the CPCIDSKToutinModelSegment class.
       4             :  *
       5             :  ******************************************************************************
       6             :  * Copyright (c) 2009
       7             :  * PCI Geomatics, 90 Allstate Parkway, Markham, Ontario, Canada.
       8             :  *
       9             :  * Permission is hereby granted, free of charge, to any person obtaining a
      10             :  * copy of this software and associated documentation files (the "Software"),
      11             :  * to deal in the Software without restriction, including without limitation
      12             :  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      13             :  * and/or sell copies of the Software, and to permit persons to whom the
      14             :  * Software is furnished to do so, subject to the following conditions:
      15             :  *
      16             :  * The above copyright notice and this permission notice shall be included
      17             :  * in all copies or substantial portions of the Software.
      18             :  *
      19             :  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
      20             :  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      21             :  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
      22             :  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      23             :  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
      24             :  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
      25             :  * DEALINGS IN THE SOFTWARE.
      26             :  ****************************************************************************/
      27             : 
      28             : #include "segment/cpcidsksegment.h"
      29             : #include "core/pcidsk_utils.h"
      30             : #include "segment/cpcidsktoutinmodel.h"
      31             : #include "pcidsk_exception.h"
      32             : #include "core/pcidsk_utils.h"
      33             : 
      34             : #include <vector>
      35             : #include <string>
      36             : #include <cassert>
      37             : #include <cstring>
      38             : #include <memory>
      39             : 
      40             : using namespace PCIDSK;
      41             : 
      42           0 : CPCIDSKToutinModelSegment::CPCIDSKToutinModelSegment(PCIDSKFile *fileIn,
      43             :                                                    int segmentIn,
      44           0 :                                                    const char *segment_pointer) :
      45           0 :     CPCIDSKEphemerisSegment(fileIn, segmentIn, segment_pointer,false)
      46             : {
      47           0 :     loaded_ = false;
      48           0 :     mbModified = false;
      49           0 :     mpoInfo = nullptr;
      50           0 :     Load();
      51           0 : }
      52             : 
      53             : 
      54           0 : CPCIDSKToutinModelSegment::~CPCIDSKToutinModelSegment()
      55             : {
      56           0 :     delete mpoInfo;
      57           0 : }
      58             : 
      59             : /**
      60             :  * Get the SRITInfo_t structure from read from the segment.
      61             :  * @return the Toutin information structure.
      62             :  */
      63           0 : SRITInfo_t CPCIDSKToutinModelSegment::GetInfo() const
      64             : {
      65           0 :     if (!mpoInfo)
      66             :     {
      67           0 :         const_cast<CPCIDSKToutinModelSegment *>(this)->Load();
      68             : 
      69           0 :         if (!mpoInfo)
      70             :         {
      71           0 :             ThrowPCIDSKException("Unable to load toutin segment.");
      72           0 :             return SRITInfo_t();
      73             :         }
      74             :     }
      75             : 
      76           0 :     return (*mpoInfo);
      77             : }
      78             : 
      79             : /**
      80             :  * Set the toutin information in the segment. The segment will be tag
      81             :  * as modified and will be synchronize on disk with the next call to
      82             :  * the function synchronize.
      83             :  * @param oInfo the toutin information.
      84             :  */
      85           0 : void CPCIDSKToutinModelSegment::SetInfo(const SRITInfo_t& oInfo)
      86             : {
      87           0 :     if(&oInfo == mpoInfo)
      88             :     {
      89           0 :         return ;
      90             :     }
      91           0 :     if(mpoInfo)
      92             :     {
      93           0 :         delete mpoInfo;
      94             :     }
      95             : 
      96           0 :     mpoInfo = new SRITInfo_t(oInfo);
      97           0 :     mbModified = true;
      98             : }
      99             : 
     100             : /**
     101             :  * Load the contents of the segment
     102             :  */
     103           0 : void CPCIDSKToutinModelSegment::Load()
     104             : {
     105             :     // Check if we've already loaded the segment into memory
     106           0 :     if (loaded_) {
     107           0 :         return;
     108             :     }
     109             : 
     110           0 :     seg_data.SetSize((int)data_size - 1024);
     111             : 
     112           0 :     ReadFromFile(seg_data.buffer, 0, data_size - 1024);
     113             : 
     114           0 :     if(seg_data.buffer_size == 0)
     115             :     {
     116           0 :         return;
     117             :     }
     118             : 
     119           0 :     SRITInfo_t* poInfo = BinaryToSRITInfo();
     120             : 
     121           0 :     mpoInfo = poInfo;
     122             : 
     123             :     // We've now loaded the structure up with data. Mark it as being loaded
     124             :     // properly.
     125           0 :     loaded_ = true;
     126             : }
     127             : 
     128             : /**
     129             :  * Write the segment on disk
     130             :  */
     131           0 : void CPCIDSKToutinModelSegment::Write(void)
     132             : {
     133             :     //We are not writing if nothing was loaded.
     134           0 :     if (!loaded_) {
     135           0 :         return;
     136             :     }
     137             : 
     138           0 :     SRITInfoToBinary(mpoInfo);
     139             : 
     140           0 :     WriteToFile(seg_data.buffer,0,seg_data.buffer_size);
     141             : 
     142           0 :     mbModified = false;
     143             : }
     144             : 
     145             : /**
     146             :  * Synchronize the segment, if it was modified then
     147             :  * write it into disk.
     148             :  */
     149           0 : void CPCIDSKToutinModelSegment::Synchronize()
     150             : {
     151           0 :     if(mbModified)
     152             :     {
     153           0 :         this->Write();
     154             :     }
     155           0 : }
     156             : 
     157             : /************************************************************************/
     158             : /*                           BinaryToSRITInfo()                         */
     159             : /************************************************************************/
     160             : /**
     161             :   * Translate a block of binary data into a SRIT segment. the caller is
     162             :   * responsible to free the returned memory with delete.
     163             :   *
     164             :   * @return Rational Satellite Model structure.
     165             :   */
     166             : SRITInfo_t *
     167           0 : CPCIDSKToutinModelSegment::BinaryToSRITInfo()
     168             : {
     169             :     int             i,j,k,l;
     170             :     bool            bVersion9;
     171             : 
     172             : /* -------------------------------------------------------------------- */
     173             : /*      Read the header block                                           */
     174             : /* -------------------------------------------------------------------- */
     175             :     // We test the name of the binary segment before starting to read
     176             :     // the buffer.
     177           0 :     if (!STARTS_WITH(seg_data.buffer, "MODEL   "))
     178             :     {
     179           0 :         seg_data.Put("MODEL   ",0,8);
     180           0 :         return nullptr;
     181             :         // Something has gone terribly wrong!
     182             :         /*throw PCIDSKException("A segment that was previously "
     183             :             "identified as an RFMODEL "
     184             :             "segment does not contain the appropriate data. Found: [%s]",
     185             :             std::string(seg_data.buffer, 8).c_str());*/
     186             :     }
     187             : 
     188           0 :     bVersion9 = false;
     189           0 :     int nVersion = seg_data.GetInt(8,1);
     190           0 :     if (nVersion == 9)
     191             :     {
     192           0 :         bVersion9 = true;
     193             :     }
     194             : 
     195             : /* -------------------------------------------------------------------- */
     196             : /*      Allocate the SRITModel.                                         */
     197             : /* -------------------------------------------------------------------- */
     198           0 :     std::unique_ptr<SRITInfo_t> SRITModel( new SRITInfo_t());
     199             : 
     200           0 :     SRITModel->GCPMeanHtFlag = 0;
     201           0 :     SRITModel->nDownSample = 1;
     202           0 :     if(STARTS_WITH(seg_data.Get(22,2) , "DS"))
     203             :     {
     204           0 :         SRITModel->nDownSample = seg_data.GetInt(24,3);
     205             :     }
     206             : 
     207             : /* -------------------------------------------------------------------- */
     208             : /*      Read the Block 1                                                */
     209             : /* -------------------------------------------------------------------- */
     210             : 
     211           0 :     SRITModel->N0x2        = seg_data.GetDouble(512,22);
     212           0 :     SRITModel->aa          = seg_data.GetDouble(512+22,22);
     213           0 :     SRITModel->SmALPHA     = seg_data.GetDouble(512+44,22);
     214           0 :     SRITModel->bb          = seg_data.GetDouble(512+66,22);
     215           0 :     SRITModel->C0          = seg_data.GetDouble(512+88,22);
     216           0 :     SRITModel->cc          = seg_data.GetDouble(512+110,22);
     217           0 :     SRITModel->COS_KHI     = seg_data.GetDouble(512+132,22);
     218           0 :     SRITModel->DELTA_GAMMA = seg_data.GetDouble(512+154,22);
     219           0 :     SRITModel->GAMMA       = seg_data.GetDouble(512+176,22);
     220           0 :     SRITModel->K_1         = seg_data.GetDouble(512+198,22);
     221           0 :     SRITModel->L0          = seg_data.GetDouble(512+220,22);
     222           0 :     SRITModel->P           = seg_data.GetDouble(512+242,22);
     223           0 :     SRITModel->Q           = seg_data.GetDouble(512+264,22);
     224           0 :     SRITModel->TAU         = seg_data.GetDouble(512+286,22);
     225           0 :     SRITModel->THETA       = seg_data.GetDouble(512+308,22);
     226           0 :     SRITModel->THETA_SEC   = seg_data.GetDouble(512+330,22);
     227           0 :     SRITModel->X0          = seg_data.GetDouble(512+352,22);
     228           0 :     SRITModel->Y0          = seg_data.GetDouble(512+374,22);
     229           0 :     SRITModel->delh        = seg_data.GetDouble(512+396,22);
     230           0 :     SRITModel->COEF_Y2     = seg_data.GetDouble(512+418,22);
     231             : 
     232           0 :     if (bVersion9)
     233             :     {
     234           0 :         SRITModel->delT        = seg_data.GetDouble(512+440,22);
     235           0 :         SRITModel->delL        = seg_data.GetDouble(512+462,22);
     236           0 :         SRITModel->delTau      = seg_data.GetDouble(512+484,22);
     237             :     }
     238             :     else
     239             :     {
     240           0 :         SRITModel->delT   = 0.0;
     241           0 :         SRITModel->delL   = 0.0;
     242           0 :         SRITModel->delTau = 0.0;
     243             :     }
     244             : 
     245             : /* -------------------------------------------------------------------- */
     246             : /*      Read the GCP information in Block 2                             */
     247             : /* -------------------------------------------------------------------- */
     248             : 
     249           0 :     SRITModel->nGCPCount       = seg_data.GetInt(2*512,10);
     250           0 :     if (SRITModel->nGCPCount > 256) SRITModel->nGCPCount = 256;
     251           0 :     SRITModel->nEphemerisSegNo = seg_data.GetInt(2*512+10,10);
     252           0 :     SRITModel->nAttitudeFlag   = seg_data.GetInt(2*512+20,10);
     253           0 :     SRITModel->GCPUnit = seg_data.Get(2*512+30,16);
     254             : 
     255           0 :     SRITModel->dfGCPMeanHt = seg_data.GetDouble(2*512+50,22);
     256           0 :     SRITModel->dfGCPMinHt  = seg_data.GetDouble(2*512+72,22);
     257           0 :     SRITModel->dfGCPMaxHt  = seg_data.GetDouble(2*512+94,22);
     258             : 
     259             : /* -------------------------------------------------------------------- */
     260             : /*      Initialize a simple GeoTransform.                               */
     261             : /* -------------------------------------------------------------------- */
     262             : 
     263           0 :     SRITModel->utmunit = seg_data.Get(2*512+225,16);
     264             : 
     265           0 :     if (std::strcmp(seg_data.Get(2*512+245,8),"ProjInfo")==0)
     266             :     {
     267           0 :         SRITModel->oProjectionInfo = seg_data.Get(2*512+255,256);
     268             :     }
     269             : 
     270             : /* -------------------------------------------------------------------- */
     271             : /*      Read the GCPs                                                   */
     272             : /* -------------------------------------------------------------------- */
     273           0 :     l = 0;
     274           0 :     k = 4;
     275           0 :     for (j=0; j<SRITModel->nGCPCount; j++)
     276             :     {
     277           0 :         SRITModel->nGCPIds[j] =
     278           0 :             seg_data.GetInt((k-1)*512+10*l,5);
     279           0 :         SRITModel->nPixel[j]  =
     280           0 :             seg_data.GetInt((k-1)*512+10*(l+1),5);
     281           0 :         SRITModel->nLine[j]   =
     282           0 :             seg_data.GetInt((k-1)*512+10*(l+1)+5,5);
     283           0 :         SRITModel->dfElev[j]  =
     284           0 :             seg_data.GetInt((k-1)*512+10*(l+2),10);
     285           0 :         l+=3;
     286             : 
     287           0 :         if (l<50)
     288           0 :             continue;
     289             : 
     290           0 :         k++;
     291           0 :         l = 0;
     292             :     }
     293             : 
     294             : /* -------------------------------------------------------------------- */
     295             : /*      Call BinaryToEphemeris to get the orbital data                  */
     296             : /* -------------------------------------------------------------------- */
     297           0 :     SRITModel->OrbitPtr =
     298           0 :         BinaryToEphemeris( 512*21 );
     299             : 
     300             : /* -------------------------------------------------------------------- */
     301             : /*      Pass the sensor back to SRITModel                               */
     302             : /* -------------------------------------------------------------------- */
     303           0 :     SRITModel->Sensor = SRITModel->OrbitPtr->SatelliteSensor;
     304             : 
     305             : /* -------------------------------------------------------------------- */
     306             : /*      Assign nSensor value                                            */
     307             : /* -------------------------------------------------------------------- */
     308             : 
     309           0 :     SRITModel->nSensor = GetSensor (SRITModel->OrbitPtr);
     310           0 :     SRITModel->nModel  = GetModel (SRITModel->nSensor);
     311             : 
     312           0 :     if( SRITModel->nSensor == -999)
     313             :     {
     314           0 :         return (SRITInfo_t*)ThrowPCIDSKExceptionPtr("Invalid Sensor : %s.",
     315           0 :                               SRITModel->OrbitPtr->SatelliteSensor.c_str());
     316             :     }
     317           0 :     if( SRITModel->nModel == -999)
     318             :     {
     319           0 :         return (SRITInfo_t*)ThrowPCIDSKExceptionPtr("Invalid Model from sensor number: %d.",
     320           0 :                               SRITModel->nSensor);
     321             :     }
     322             : 
     323             : /* -------------------------------------------------------------------- */
     324             : /*      Get the attitude data for SPOT                                  */
     325             : /* -------------------------------------------------------------------- */
     326           0 :     if (SRITModel->OrbitPtr->AttitudeSeg != nullptr ||
     327           0 :         SRITModel->OrbitPtr->RadarSeg != nullptr)
     328             :     {
     329             :         AttitudeSeg_t *attitudeSeg
     330           0 :             = SRITModel->OrbitPtr->AttitudeSeg;
     331             : 
     332           0 :         if (SRITModel->OrbitPtr->Type == OrbAttitude &&
     333             :             attitudeSeg != nullptr)
     334             :         {
     335             :             int  ndata;
     336             : 
     337           0 :             ndata = attitudeSeg->NumberOfLine;
     338             : 
     339           0 :             for (i=0; i<ndata; i++)
     340             :             {
     341           0 :                 SRITModel->Hdeltat.push_back(
     342           0 :                     attitudeSeg->Line[i].ChangeInAttitude);
     343           0 :                 SRITModel->Qdeltar.push_back(
     344           0 :                     attitudeSeg->Line[i].ChangeEarthSatelliteDist);
     345             :             }
     346             :         }
     347             :     }
     348             :     else
     349             :     {
     350           0 :         SRITModel->Qdeltar.clear();
     351           0 :         SRITModel->Hdeltat.clear();
     352             :     }
     353             : 
     354           0 :     return SRITModel.release();
     355             : }
     356             : 
     357             : /************************************************************************/
     358             : /*                           SRITInfoToBinary()                         */
     359             : /************************************************************************/
     360             : /**
     361             :   * Translate a SRITInfo_t into binary data.
     362             :   * Translate a SRITInfo_t into the corresponding block of
     363             :   * binary data.  This function is expected to be used by
     364             :   * translators such as iisopen.c (VISTA) so that our satellite
     365             :   * models can be converted into some opaque serialized form.
     366             :   * Translate a Rpc Model into the corresponding block of binary data.
     367             :   *
     368             :   * @param  SRITModel        Satellite Model structure.
     369             :   */
     370             : void
     371           0 : CPCIDSKToutinModelSegment::SRITInfoToBinary( SRITInfo_t *SRITModel )
     372             : 
     373             : {
     374             :     int         i,j,k,l;
     375             :     double      dfminht,dfmaxht,dfmeanht;
     376           0 :     int         nPos = 0;
     377             : 
     378             : /* -------------------------------------------------------------------- */
     379             : /*      Create the data array.                                          */
     380             : /* -------------------------------------------------------------------- */
     381           0 :     seg_data.SetSize(512 * 21);
     382             : 
     383             :     //clean the buffer
     384           0 :     memset( seg_data.buffer , ' ', 512 * 21 );
     385             : 
     386             : /* -------------------------------------------------------------------- */
     387             : /*      Initialize the header.                                          */
     388             : /* -------------------------------------------------------------------- */
     389           0 :     nPos = 512*0;
     390           0 :     seg_data.Put("MODEL   9.0",0,nPos+11);
     391             : 
     392           0 :     seg_data.Put("DS",nPos+22,2);
     393           0 :     seg_data.Put(SRITModel->nDownSample,nPos+24,3);
     394             : 
     395             : /* -------------------------------------------------------------------- */
     396             : /*      Write the model results to second segment                       */
     397             : /* -------------------------------------------------------------------- */
     398           0 :     nPos = 512*1;
     399             : 
     400           0 :     seg_data.Put(SRITModel->N0x2,nPos,22,"%22.14f");
     401           0 :     seg_data.Put(SRITModel->aa,nPos+22,22,"%22.14f");
     402           0 :     seg_data.Put(SRITModel->SmALPHA,nPos+22*2,22,"%22.14f");
     403           0 :     seg_data.Put(SRITModel->bb,nPos+22*3,22,"%22.14f");
     404           0 :     seg_data.Put(SRITModel->C0,nPos+22*4,22,"%22.14f");
     405           0 :     seg_data.Put(SRITModel->cc,nPos+22*5,22,"%22.14f");
     406           0 :     seg_data.Put(SRITModel->COS_KHI,nPos+22*6,22,"%22.14f");
     407           0 :     seg_data.Put(SRITModel->DELTA_GAMMA,nPos+22*7,22,"%22.14f");
     408           0 :     seg_data.Put(SRITModel->GAMMA,nPos+22*8,22,"%22.14f");
     409           0 :     seg_data.Put(SRITModel->K_1,nPos+22*9,22,"%22.14f");
     410           0 :     seg_data.Put(SRITModel->L0,nPos+22*10,22,"%22.14f");
     411           0 :     seg_data.Put(SRITModel->P,nPos+22*11,22,"%22.14f");
     412           0 :     seg_data.Put(SRITModel->Q,nPos+22*12,22,"%22.14f");
     413           0 :     seg_data.Put(SRITModel->TAU,nPos+22*13,22,"%22.14f");
     414           0 :     seg_data.Put(SRITModel->THETA,nPos+22*14,22,"%22.14f");
     415           0 :     seg_data.Put(SRITModel->THETA_SEC,nPos+22*15,22,"%22.14f");
     416           0 :     seg_data.Put(SRITModel->X0,nPos+22*16,22,"%22.14f");
     417           0 :     seg_data.Put(SRITModel->Y0,nPos+22*17,22,"%22.14f");
     418           0 :     seg_data.Put(SRITModel->delh,nPos+22*18,22,"%22.14f");
     419           0 :     seg_data.Put(SRITModel->COEF_Y2,nPos+22*19,22,"%22.14f");
     420           0 :     seg_data.Put(SRITModel->delT,nPos+22*20,22,"%22.14f");
     421           0 :     seg_data.Put(SRITModel->delL,nPos+22*21,22,"%22.14f");
     422           0 :     seg_data.Put(SRITModel->delTau,nPos+22*22,22,"%22.14f");
     423             : 
     424             : /* -------------------------------------------------------------------- */
     425             : /*      Find the min and max height                                     */
     426             : /* -------------------------------------------------------------------- */
     427           0 :     nPos = 2*512;
     428             : 
     429           0 :     if (SRITModel->nGCPCount > 256) SRITModel->nGCPCount = 256;
     430           0 :     if (SRITModel->nGCPCount != 0)
     431             :     {
     432           0 :         dfminht = 1.e38;
     433           0 :         dfmaxht = -1.e38;
     434           0 :         for (i=0; i<SRITModel->nGCPCount; i++)
     435             :         {
     436           0 :             if (SRITModel->dfElev[i] > dfmaxht)
     437           0 :                 dfmaxht = SRITModel->dfElev[i];
     438           0 :             if (SRITModel->dfElev[i] < dfminht)
     439           0 :                 dfminht = SRITModel->dfElev[i];
     440             :         }
     441             :     }
     442             :     else
     443             :     {
     444           0 :         dfminht = SRITModel->dfGCPMinHt;
     445           0 :         dfmaxht = 0;
     446             :     }
     447             : 
     448           0 :     dfmeanht = (dfminht + dfmaxht)/2.;
     449             : 
     450           0 :     seg_data.Put(SRITModel->nGCPCount,nPos,10);
     451           0 :     seg_data.Put("2",nPos+10,1);
     452           0 :     seg_data.Put("0",nPos+20,1);
     453             : 
     454           0 :     if (SRITModel->OrbitPtr->AttitudeSeg != nullptr ||
     455           0 :         SRITModel->OrbitPtr->RadarSeg != nullptr ||
     456           0 :         SRITModel->OrbitPtr->AvhrrSeg != nullptr )
     457             :     {
     458           0 :         if (SRITModel->OrbitPtr->Type == OrbAttitude &&
     459           0 :             SRITModel->OrbitPtr->AttitudeSeg != nullptr)
     460             :         {
     461           0 :             if (SRITModel->OrbitPtr->AttitudeSeg->NumberOfLine != 0)
     462           0 :                 seg_data.Put("3",nPos+20,1);
     463             :         }
     464             :     }
     465             : 
     466           0 :     seg_data.Put(SRITModel->GCPUnit.c_str(),nPos+30,16);
     467           0 :     seg_data.Put("M",nPos+49,1);
     468             : 
     469           0 :     seg_data.Put(dfmeanht,nPos+50,22,"%22.14f");
     470           0 :     seg_data.Put(dfminht,nPos+72,22,"%22.14f");
     471           0 :     seg_data.Put(dfmaxht,nPos+94,22,"%22.14f");
     472             : 
     473           0 :     seg_data.Put("NEWGCP",nPos+116,6);
     474             : 
     475             : /* -------------------------------------------------------------------- */
     476             : /*      Write the projection parameter if necessary                     */
     477             : /* -------------------------------------------------------------------- */
     478             : 
     479           0 :     seg_data.Put(SRITModel->utmunit.c_str(),nPos+225,16);
     480             : 
     481           0 :     if(!SRITModel->oProjectionInfo.empty())
     482             :     {
     483           0 :         seg_data.Put("ProjInfo: ",nPos+245,10);
     484           0 :         seg_data.Put(SRITModel->oProjectionInfo.c_str(),
     485             :                              nPos+255,256);
     486             :     }
     487             : 
     488             : /* -------------------------------------------------------------------- */
     489             : /*      Write the GCP to third segment                                  */
     490             : /* -------------------------------------------------------------------- */
     491           0 :     nPos = 3*512;
     492             : 
     493           0 :     l = 0;
     494           0 :     k = 3;
     495           0 :     if (SRITModel->nGCPCount > 256) SRITModel->nGCPCount = 256;
     496           0 :     for (j=0; j<SRITModel->nGCPCount; j++)
     497             :     {
     498           0 :         if (j > 255)
     499           0 :             break;
     500             : 
     501           0 :         seg_data.Put(SRITModel->nGCPIds[j],nPos+10*l,5);
     502           0 :         seg_data.Put((int)(SRITModel->nPixel[j]+0.5),
     503           0 :                              nPos+10*(l+1),5);
     504           0 :         seg_data.Put((int)(SRITModel->nLine[j]+0.5),
     505           0 :                              nPos+10*(l+1)+5,5);
     506           0 :         seg_data.Put((int)SRITModel->dfElev[j],nPos+10*(l+2),10);
     507             : 
     508           0 :         l+=3;
     509             : 
     510           0 :         if (l<50)
     511           0 :             continue;
     512             : 
     513           0 :         k++;
     514           0 :         nPos = 512*k;
     515           0 :         l = 0;
     516             :     }
     517             : 
     518             : /* -------------------------------------------------------------------- */
     519             : /*      Add the serialized form of the EphemerisSeg_t.                  */
     520             : /* -------------------------------------------------------------------- */
     521           0 :     EphemerisToBinary( SRITModel->OrbitPtr , 512*21 );
     522           0 : }
     523             : 
     524             : /**
     525             :  * Get the sensor enum from the orbit segment.
     526             :  * @param OrbitPtr the orbit segment
     527             :  * @return the sensor type.
     528             :  */
     529           0 : int  CPCIDSKToutinModelSegment::GetSensor( EphemerisSeg_t *OrbitPtr)
     530             : {
     531             :     int  nSensor;
     532             : 
     533           0 :     nSensor = -999;
     534             : 
     535           0 :     if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "AVHRR"))
     536           0 :         nSensor = AVHRR;
     537           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PLA"))
     538           0 :         nSensor = PLA_1;
     539           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MLA"))
     540           0 :         nSensor = MLA_1;
     541           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ASTER"))
     542           0 :         nSensor = ASTER;
     543           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SAR"))
     544             :     {
     545           0 :         nSensor = SAR;
     546           0 :         if (OrbitPtr->PixelRes == 6.25)
     547           0 :             nSensor = RSAT_FIN;
     548             :     }
     549           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS"))
     550             :     {
     551           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-1"))
     552           0 :             nSensor = LISS_1;
     553           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-2"))
     554           0 :             nSensor = LISS_2;
     555           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-3"))
     556           0 :             nSensor = LISS_3;
     557           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-L3-L2"))
     558           0 :             nSensor = LISS_L3_L2;
     559           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-L3"))
     560           0 :             nSensor = LISS_L3;
     561           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-L4-L2"))
     562           0 :             nSensor = LISS_L4_L2;
     563           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-L4"))
     564           0 :             nSensor = LISS_L4;
     565           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-P3-L2"))
     566           0 :             nSensor = LISS_P3_L2;
     567           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-P3"))
     568           0 :             nSensor = LISS_P3;
     569           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-W3-L2"))
     570           0 :             nSensor = LISS_W3_L2;
     571           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-W3"))
     572           0 :             nSensor = LISS_W3;
     573           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-M3"))
     574           0 :             nSensor = LISS_M3;
     575           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-AWF-L2"))
     576           0 :             nSensor = LISS_AWF_L2;
     577           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS-AWF"))
     578           0 :             nSensor = LISS_AWF;
     579             :     }
     580           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "EOC"))
     581           0 :         nSensor = EOC;
     582           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "IRS"))
     583           0 :         nSensor = IRS_1;
     584           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MSS"))
     585           0 :         nSensor = MSS;
     586           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TM"))
     587             :     {
     588           0 :         nSensor = TM;
     589           0 :         if (OrbitPtr->PixelRes == 15)
     590           0 :             nSensor = ETM;
     591             :     }
     592           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ETM"))
     593           0 :         nSensor = ETM;
     594           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "IKO"))
     595             :     {
     596           0 :         nSensor = IKO_PAN;
     597           0 :         if (OrbitPtr->PixelRes == 4)
     598           0 :             nSensor = IKO_MULTI;
     599             :     }
     600           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ORBVIEW"))
     601             :     {
     602           0 :         nSensor = ORBVIEW_PAN;
     603           0 :         if (OrbitPtr->PixelRes == 4)
     604           0 :             nSensor = ORBVIEW_MULTI;
     605             :     }
     606           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV"))
     607             :     {
     608           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV3_PAN_BASIC"))
     609           0 :             nSensor = OV3_PAN_BASIC;
     610           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV3_PAN_GEO"))
     611           0 :             nSensor = OV3_PAN_GEO;
     612           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV3_MULTI_BASIC"))
     613           0 :             nSensor = OV3_MULTI_BASIC;
     614           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV3_MULTI_GEO"))
     615           0 :             nSensor = OV3_MULTI_GEO;
     616           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV5_PAN_BASIC"))
     617           0 :             nSensor = OV5_PAN_BASIC;
     618           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV5_PAN_GEO"))
     619           0 :             nSensor = OV5_PAN_GEO;
     620           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV5_MULTI_BASIC"))
     621           0 :             nSensor = OV5_MULTI_BASIC;
     622           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV5_MULTI_GEO"))
     623           0 :             nSensor = OV5_MULTI_GEO;
     624             :     }
     625           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD"))
     626             :     {
     627           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD_PAN_STD"))
     628           0 :             nSensor = QBIRD_PAN_STD; // this checking must go first
     629           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD_PAN_STH"))
     630           0 :             nSensor = QBIRD_PAN_STH;
     631           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD_PAN"))
     632           0 :             nSensor = QBIRD_PAN;
     633           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD_MULTI_STD"))
     634           0 :             nSensor = QBIRD_MULTI_STD; // this checking must go first
     635           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD_MULTI_STH"))
     636           0 :             nSensor = QBIRD_MULTI_STH;
     637           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD_MULTI"))
     638           0 :             nSensor = QBIRD_MULTI;
     639             :     }
     640           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW"))
     641             :     {
     642           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW1_PAN_STD") ||
     643           0 :             STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW_PAN_STD"))
     644           0 :             nSensor = WVIEW_PAN_STD; // this checking must go first
     645           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW1_PAN") ||
     646           0 :             STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW_PAN"))
     647           0 :             nSensor = WVIEW_PAN;
     648           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW_MULTI_STD"))
     649           0 :             nSensor = WVIEW_MULTI_STD;
     650           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW_MULTI"))
     651           0 :             nSensor = WVIEW_MULTI;
     652             :     }
     653           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GEOEYE"))
     654             :     {
     655           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GEOEYE_PAN_STD"))
     656           0 :             nSensor = GEOEYE_PAN_STD; // this checking must go first
     657           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GEOEYE_PAN"))
     658           0 :             nSensor = GEOEYE_PAN;
     659           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GEOEYE_MULTI_STD"))
     660           0 :             nSensor = GEOEYE_MULTI_STD; // this checking must go first
     661           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GEOEYE_MULTI"))
     662           0 :             nSensor = GEOEYE_MULTI;
     663             :     }
     664           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT"))
     665             :     {
     666           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT_PAN_L2"))
     667           0 :             nSensor = FORMOSAT_PAN_L2;
     668           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT_MULTIL2"))
     669           0 :             nSensor = FORMOSAT_MULTIL2;
     670           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT_PAN"))
     671           0 :             nSensor = FORMOSAT_PAN;
     672           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT_MULTI"))
     673           0 :             nSensor = FORMOSAT_MULTI;
     674           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT5_PAN"))
     675           0 :             nSensor = FORMOSAT5_PAN;
     676           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT5_MS"))
     677           0 :             nSensor = FORMOSAT5_MS;
     678             :     }
     679           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT"))
     680             :     {
     681           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT5_PAN_2_5"))
     682           0 :             nSensor = SPOT5_PAN_2_5;
     683           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT5_PAN_5"))
     684           0 :             nSensor = SPOT5_PAN_5;
     685           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT5_HRS"))
     686           0 :             nSensor = SPOT5_HRS;
     687           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT5_MULTI"))
     688           0 :             nSensor = SPOT5_MULTI;
     689           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT1_PAN"))
     690           0 :             nSensor = SPOT1_PAN;
     691           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT1_MS"))
     692           0 :             nSensor = SPOT1_MS;
     693           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT2_PAN"))
     694           0 :             nSensor = SPOT2_PAN;
     695           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT2_MS"))
     696           0 :             nSensor = SPOT2_MS;
     697           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT3_PAN"))
     698           0 :             nSensor = SPOT3_PAN;
     699           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT3_MS"))
     700           0 :             nSensor = SPOT3_MS;
     701           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT4_PAN"))
     702           0 :             nSensor = SPOT4_PAN;
     703           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT4_MS"))
     704           0 :             nSensor = SPOT4_MS;
     705           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT6_PAN"))
     706           0 :             nSensor = SPOT6_PAN;
     707           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT6_MS"))
     708           0 :             nSensor = SPOT6_MS;
     709           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT6_PSH"))
     710           0 :             nSensor = SPOT6_PSH;
     711           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT7_PAN"))
     712           0 :             nSensor = SPOT7_PAN;
     713           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT7_MS"))
     714           0 :             nSensor = SPOT7_MS;
     715           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT7_PSH"))
     716           0 :             nSensor = SPOT7_PSH;
     717             :     }
     718           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MERIS"))
     719             :     {
     720           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MERIS_FR"))
     721           0 :            nSensor = MERIS_FR;
     722           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MERIS_RR"))
     723           0 :            nSensor = MERIS_RR;
     724           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MERIS_LR"))
     725           0 :            nSensor = MERIS_LR;
     726             :     }
     727           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ASAR"))
     728           0 :         nSensor = ASAR;
     729           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "EROS"))
     730           0 :         nSensor = EROS;
     731           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MODIS"))
     732             :     {
     733           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MODIS_1000"))
     734           0 :            nSensor = MODIS_1000;
     735           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MODIS_500"))
     736           0 :            nSensor = MODIS_500;
     737           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MODIS_250"))
     738           0 :            nSensor = MODIS_250;
     739             :     }
     740           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS"))
     741             :     {
     742           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_HRC_L2"))
     743           0 :            nSensor = CBERS_HRC_L2;
     744           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_HRC"))
     745           0 :            nSensor = CBERS_HRC;
     746           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_CCD_L2"))
     747           0 :            nSensor = CBERS_CCD_L2;
     748           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_CCD"))
     749           0 :            nSensor = CBERS_CCD;
     750           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_IRM_80_L2"))
     751           0 :            nSensor = CBERS_IRM_80_L2;
     752           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_IRM_80"))
     753           0 :            nSensor = CBERS_IRM_80;
     754           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_IRM_160_L2"))
     755           0 :            nSensor = CBERS_IRM_160_L2;
     756           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_IRM_160"))
     757           0 :            nSensor = CBERS_IRM_160;
     758           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_WFI_L2"))
     759           0 :            nSensor = CBERS_WFI_L2;
     760           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS_WFI"))
     761           0 :            nSensor = CBERS_WFI;
     762           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS4_PAN_1"))
     763           0 :            nSensor = CBERS4_PAN_1;
     764           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS4_MS_1"))
     765           0 :            nSensor = CBERS4_MS_1;
     766           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS4_PAN_2"))
     767           0 :            nSensor = CBERS4_PAN_2;
     768           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS4_MS_2"))
     769           0 :            nSensor = CBERS4_MS_2;
     770           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS4_THM_1"))
     771           0 :            nSensor = CBERS4_THM_1;
     772           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS4_THM_2"))
     773           0 :            nSensor = CBERS4_THM_2;
     774             :     }
     775           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CARTOSAT"))
     776             :     {
     777           0 :        if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CARTOSAT1_L1"))
     778           0 :            nSensor = CARTOSAT1_L1;
     779           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CARTOSAT1_L2"))
     780           0 :            nSensor = CARTOSAT1_L2;
     781             :     }
     782           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DMC"))
     783             :     {
     784           0 :        if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DMC_1R"))
     785           0 :            nSensor = DMC_1R;
     786           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DMC_1T"))
     787           0 :            nSensor = DMC_1T;
     788             :     }
     789           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALOS"))
     790             :     {
     791           0 :        if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALOS_PRISM_L1"))
     792           0 :            nSensor = ALOS_PRISM_L1;
     793           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALOS_PRISM_L2"))
     794           0 :            nSensor = ALOS_PRISM_L2;
     795           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALOS_AVNIR_L1"))
     796           0 :            nSensor = ALOS_AVNIR_L1;
     797           0 :        else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALOS_AVNIR_L2"))
     798           0 :            nSensor = ALOS_AVNIR_L2;
     799             :     }
     800           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PALSAR"))
     801           0 :         nSensor = PALSAR;
     802           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT"))
     803             :     {
     804           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT2_PAN"))
     805           0 :             nSensor = KOMPSAT2_PAN;
     806           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT2_MULTI"))
     807           0 :             nSensor = KOMPSAT2_MULTI;
     808           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT3_PAN"))
     809           0 :             nSensor = KOMPSAT3_PAN;
     810           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT3_PSH"))
     811           0 :             nSensor = KOMPSAT3_PSH;
     812           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT3_MS"))
     813           0 :             nSensor = KOMPSAT3_MS;
     814           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT3A_PAN"))
     815           0 :             nSensor = KOMPSAT3A_PAN;
     816           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT3A_PSH"))
     817           0 :             nSensor = KOMPSAT3A_PSH;
     818           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KOMPSAT3A_MS"))
     819           0 :             nSensor = KOMPSAT3A_MS;
     820             :     }
     821           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TERRASAR"))
     822           0 :         nSensor = TERRASAR;
     823           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "RAPIDEYE"))
     824           0 :         nSensor = RAPIDEYE_L1B;
     825           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "RESOURCESAT"))
     826           0 :         nSensor = RESOURCESAT;
     827           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "THEOS"))
     828             :     {
     829           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "THEOS_PAN_L1"))
     830           0 :             nSensor = THEOS_PAN_L1;
     831           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "THEOS_PAN_L2"))
     832           0 :             nSensor = THEOS_PAN_L2;
     833           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "THEOS_MS_L1"))
     834           0 :             nSensor = THEOS_MS_L1;
     835           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "THEOS_MS_L2"))
     836           0 :             nSensor = THEOS_MS_L2;
     837             :     }
     838           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOSAT"))
     839             :     {
     840           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOSAT_500_L1"))
     841           0 :             nSensor = GOSAT_500_L1;
     842           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOSAT_500_L2"))
     843           0 :             nSensor = GOSAT_500_L2;
     844           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOSAT_1500_L1"))
     845           0 :             nSensor = GOSAT_1500_L1;
     846           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOSAT_1500_L2"))
     847           0 :             nSensor = GOSAT_1500_L2;
     848             :     }
     849           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HJ"))
     850             :     {
     851           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HJ_CCD_1A") ||
     852           0 :              STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HJ1A"))
     853           0 :             nSensor = HJ_CCD_1A;
     854           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HJ_CC" /* "HJ_CCD_1B" */) ||
     855           0 :              STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HJ1B"))
     856           0 :             nSensor = HJ_CCD_1B;
     857           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HJ1C"))
     858           0 :             nSensor = HJ1C;
     859             :     }
     860           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "RASAT"))
     861             :     {
     862           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "RASAT_PAN"))
     863           0 :             nSensor = RASAT_PAN;
     864           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "RASAT_MS"))
     865           0 :             nSensor = RASAT_MS;
     866             :     }
     867           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PLEIADES"))
     868             :     {
     869           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PLEIADES_PAN_L1"))
     870           0 :             nSensor = PLEIADES_PAN_L1;
     871           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PLEIADES_MS_L1"))
     872           0 :             nSensor = PLEIADES_MS_L1;
     873           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PLEIADES_PAN_L2"))
     874           0 :             nSensor = PLEIADES_PAN_L2;
     875           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PLEIADES_MS_L2"))
     876           0 :             nSensor = PLEIADES_MS_L2;
     877             :     }
     878           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TH01"))
     879             :     {
     880           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TH01_DGP"))
     881           0 :             nSensor = TH01_DGP;
     882           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TH01_GFB"))
     883           0 :             nSensor = TH01_GFB;
     884           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TH01_SXZ"))
     885           0 :             nSensor = TH01_SXZ;
     886             :     }
     887           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY"))
     888             :     {
     889           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY3_NAD"))
     890           0 :             nSensor = ZY3_NAD;
     891           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY3_FWD"))
     892           0 :             nSensor = ZY3_FWD;
     893           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY3_BWD"))
     894           0 :             nSensor = ZY3_BWD;
     895           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY3_MUX"))
     896           0 :             nSensor = ZY3_MUX;
     897           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY3_TLC"))
     898           0 :             nSensor = ZY3_TLC;
     899           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY1_02C_HRC"))
     900           0 :             nSensor = ZY1_02C_HRC;
     901           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY1_02C_PMS_PAN"))
     902           0 :             nSensor = ZY1_02C_PMS_PAN;
     903           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY1_02C_PMS_MS"))
     904           0 :             nSensor = ZY1_02C_PMS_MS;
     905             :     }
     906           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GK2"))
     907             :     {
     908           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GK2_PAN"))
     909           0 :             nSensor = GK2_PAN;
     910           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GK2_MS"))
     911           0 :             nSensor = GK2_MS;
     912             :     }
     913           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MRC"))
     914             :     {
     915           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MRC_RED"))
     916           0 :             nSensor = MRC_RED;
     917           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MRC_GRN"))
     918           0 :             nSensor = MRC_GRN;
     919           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MRC_BLU"))
     920           0 :             nSensor = MRC_BLU;
     921           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MRC_NIR"))
     922           0 :             nSensor = MRC_NIR;
     923             :     }
     924           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HRC"))
     925           0 :         nSensor = HRC;
     926           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF"))
     927             :     {
     928           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF1_PMS_PAN"))
     929           0 :             nSensor = GF1_PMS_PAN;
     930           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF2_PMS_PAN"))
     931           0 :             nSensor = GF2_PMS_PAN;
     932           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF1_PMS_MS"))
     933           0 :             nSensor = GF1_PMS_MS;
     934           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF1_WFV"))
     935           0 :             nSensor = GF1_WFV;
     936           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF2_PMS_MS"))
     937           0 :             nSensor = GF2_PMS_MS;
     938           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF4_PMS_MS"))
     939           0 :             nSensor = GF4_PMS_MS;
     940           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF4_PMI_Thermal"))
     941           0 :             nSensor = GF4_PMI_Thermal;
     942           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF6_PMS_PAN"))
     943           0 :             nSensor = GF6_PMS_PAN;
     944           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GF6_PMS_MS"))
     945           0 :             nSensor = GF6_PMS_MS;
     946             :     }
     947           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SJ9"))
     948             :     {
     949           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SJ9_PAN"))
     950           0 :             nSensor = SJ9_PAN;
     951           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SJ9_MUX"))
     952           0 :             nSensor = SJ9_MUX;
     953           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SJ9_PMS_PAN"))
     954           0 :             nSensor = SJ9_PMS_PAN;
     955           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SJ9_PMS_MS"))
     956           0 :             nSensor = SJ9_PMS_MS;
     957             :     }
     958           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "YG2_1"))
     959           0 :         nSensor = YG2_1;
     960           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "YG8_1"))
     961           0 :         nSensor = YG8_1;
     962           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "YG14_1"))
     963           0 :         nSensor = YG14_1;
     964           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "UAVSAR"))
     965           0 :         nSensor = UAVSAR;
     966           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SSOT"))
     967             :     {
     968           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SSOT_PAN_L1"))
     969           0 :             nSensor = SSOT_PAN_L1;
     970           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SSOT_MS_L1"))
     971           0 :             nSensor = SSOT_MS_L1;
     972           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SSOT_PAN_L2"))
     973           0 :             nSensor = SSOT_PAN_L2;
     974           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SSOT_MS_L2"))
     975           0 :             nSensor = SSOT_MS_L2;
     976             :     }
     977           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALSAT"))
     978             :     {
     979           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALSAT2_PAN_1A"))
     980           0 :             nSensor = ALSAT2_PAN_1A;
     981           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALSAT2_MS_1A"))
     982           0 :             nSensor = ALSAT2_MS_1A;
     983           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALSAT2_PAN_2A"))
     984           0 :             nSensor = ALSAT2_PAN_2A;
     985           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALSAT2_MS_2A"))
     986           0 :             nSensor = ALSAT2_MS_2A;
     987             :     }
     988           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DUBAISAT"))
     989             :     {
     990           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DUBAISAT2_PAN"))
     991           0 :             nSensor = DUBAISAT2_PAN;
     992           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DUBAISAT2_MS"))
     993           0 :             nSensor = DUBAISAT2_MS;
     994             :     }
     995           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KAZEOSAT"))
     996             :     {
     997           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KAZEOSAT1_PAN_1A"))
     998           0 :             nSensor = KAZEOSAT1_PAN_1A;
     999           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KAZEOSAT1_MS_1A"))
    1000           0 :             nSensor = KAZEOSAT1_MS_1A;
    1001           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KAZEOSAT1_PAN_2A"))
    1002           0 :             nSensor = KAZEOSAT1_PAN_2A;
    1003           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KAZEOSAT1_MS_2A"))
    1004           0 :             nSensor = KAZEOSAT1_MS_2A;
    1005           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KAZEOSAT2_MS_1G"))
    1006           0 :             nSensor = KAZEOSAT2_MS_1G;
    1007             :     }
    1008           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DEIMOS"))
    1009             :     {
    1010           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DEIMOS1_MS_1R"))
    1011           0 :             nSensor = DEIMOS1_MS_1R;
    1012           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DEIMOS2_PAN_1B"))
    1013           0 :             nSensor = DEIMOS2_PAN_1B;
    1014           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DEIMOS2_MS_1B"))
    1015           0 :             nSensor = DEIMOS2_MS_1B;
    1016           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DEIMOS2_PSH_1B"))
    1017           0 :             nSensor = DEIMOS2_PSH_1B;
    1018             :     }
    1019           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TRIPLESAT"))
    1020             :     {
    1021           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TRIPLESAT_PAN"))
    1022           0 :             nSensor = TRIPLESAT_PAN;
    1023           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TRIPLESAT_MS"))
    1024           0 :             nSensor = TRIPLESAT_MS;
    1025             :     }
    1026           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PER_"))
    1027             :     {
    1028           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PER_PAN_2A"))
    1029           0 :             nSensor = PER_PAN_2A;
    1030           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PER_MS_2A"))
    1031           0 :             nSensor = PER_MS_2A;
    1032             :     }
    1033           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "JL"))
    1034             :     {
    1035           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "JL101A_PAN"))
    1036           0 :             nSensor = JL101A_PAN;
    1037           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "JL101A_MS"))
    1038           0 :             nSensor = JL101A_MS;
    1039             :     }
    1040           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SV"))
    1041             :     {
    1042           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SV1_PAN_L1"))
    1043           0 :             nSensor = SV1_PAN_L1;
    1044           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SV1_MS_L1"))
    1045           0 :             nSensor = SV1_MS_L1;
    1046           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SV1_PAN_L2"))
    1047           0 :             nSensor = SV1_PAN_L2;
    1048           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SV1_MS_L2"))
    1049           0 :             nSensor = SV1_MS_L2;
    1050             :     }
    1051           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOKTURK1"))
    1052             :     {
    1053           0 :         if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "Gokturk1_PAN"))
    1054           0 :             nSensor = GOKTURK1_PAN;
    1055           0 :         else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "Gokturk1_MS"))
    1056           0 :             nSensor = GOKTURK1_MS;
    1057             :     }
    1058           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HI_RES"))
    1059           0 :         nSensor = HI_RES;
    1060           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MED_RES"))
    1061           0 :         nSensor = MED_RES;
    1062           0 :     else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "NEW"))
    1063           0 :         nSensor = NEW;
    1064             :     else
    1065             :     {
    1066           0 :         return ThrowPCIDSKException(0, "Invalid Sensor %s",
    1067           0 :             OrbitPtr->SatelliteSensor.c_str());
    1068             :     }
    1069             : 
    1070           0 :     return (nSensor);
    1071             : }
    1072             : /**
    1073             :  * Get the model of a sensor
    1074             :  * @param nSensor the sensor
    1075             :  * @return the model
    1076             :  */
    1077           0 : int CPCIDSKToutinModelSegment::GetModel( int nSensor )
    1078             : {
    1079           0 :     int nModel = -999;
    1080             : 
    1081           0 :     switch (nSensor)
    1082             :     {
    1083           0 :     case PLA_1:
    1084             :     case PLA_2:
    1085             :     case PLA_3:
    1086             :     case PLA_4:
    1087             :     case MLA_1:
    1088             :     case MLA_2:
    1089             :     case MLA_3:
    1090             :     case MLA_4:
    1091             :     case SPOT1_PAN:
    1092             :     case SPOT1_MS:
    1093             :     case SPOT2_PAN:
    1094             :     case SPOT2_MS:
    1095             :     case SPOT3_PAN:
    1096             :     case SPOT3_MS:
    1097             :     case SPOT4_PAN:
    1098             :     case SPOT4_MS:
    1099             :     case NEW:
    1100           0 :         nModel = SRITModele;
    1101           0 :         break;
    1102             : 
    1103           0 :     case ASTER:
    1104             :     case CBERS_CCD:
    1105             :     case CBERS_IRM_80:
    1106             :     case CBERS_IRM_160:
    1107             :     case CBERS_WFI:
    1108             :     case IRS_1:
    1109             :     case LISS_AWF:
    1110             :     case LISS_1:
    1111             :     case LISS_2:
    1112             :     case LISS_3:
    1113             :     case LISS_L3:
    1114             :     case LISS_L4:
    1115             :     case LISS_P3:
    1116             :     case LISS_W3:
    1117             :     case LISS_M3:
    1118             :     case EOC:
    1119             :     case SPOT5_PAN_5:
    1120             :     case SPOT5_HRS:
    1121             :     case SPOT5_MULTI:
    1122             :     case MERIS_FR:
    1123             :     case MERIS_RR:
    1124             :     case MERIS_LR:
    1125             :     case MODIS_1000:
    1126             :     case MODIS_500:
    1127             :     case MODIS_250:
    1128             :     case ALOS_AVNIR_L1:
    1129             :     case ALOS_AVNIR_L2:
    1130             :     case RAPIDEYE_L1B:
    1131             :     case THEOS_PAN_L1:
    1132             :     case THEOS_MS_L1:
    1133             :     case GOSAT_500_L1:
    1134             :     case GOSAT_1500_L1:
    1135             :     case HJ_CCD_1A:
    1136             :     case RASAT_PAN:
    1137             :     case RASAT_MS:
    1138             :     case GK2_MS:
    1139             :     case GF1_WFV:
    1140             :     case YG8_1:
    1141             :     case DEIMOS1_MS_1R:
    1142             :     case MED_RES:
    1143             :     case CBERS4_PAN_1:
    1144             :     case CBERS4_MS_1:
    1145             :     case CBERS4_THM_1:
    1146             :     case SV1_PAN_L1:
    1147             :     case SV1_MS_L1:
    1148           0 :         nModel = SRITModele1A;
    1149           0 :         break;
    1150             : 
    1151           0 :     case MSS:
    1152             :     case TM:
    1153             :     case ETM:
    1154             :     case LISS_P3_L2:
    1155             :     case LISS_L3_L2:
    1156             :     case LISS_W3_L2:
    1157             :     case LISS_L4_L2:
    1158             :     case LISS_AWF_L2:
    1159             :     case CBERS_IRM_80_L2:
    1160             :     case CBERS_IRM_160_L2:
    1161             :     case CBERS_WFI_L2:
    1162             :     case CBERS_CCD_L2:
    1163             :     case CBERS_HRC_L2:
    1164             :     case DMC_1R:
    1165             :     case DMC_1T:
    1166             :     case ALOS_PRISM_L2:
    1167             :     case THEOS_PAN_L2:
    1168             :     case THEOS_MS_L2:
    1169             :     case GOSAT_500_L2:
    1170             :     case GOSAT_1500_L2:
    1171             :     case HJ_CCD_1B:
    1172             :     case PLEIADES_PAN_L2:
    1173             :     case PLEIADES_MS_L2:
    1174             :     case SSOT_PAN_L2:
    1175             :     case SSOT_MS_L2:
    1176             :     case ALSAT2_PAN_2A:
    1177             :     case ALSAT2_MS_2A:
    1178             :     case RESOURCESAT:
    1179             :     case CBERS4_PAN_2:
    1180             :     case CBERS4_MS_2:
    1181             :     case CBERS4_THM_2:
    1182             :     case SV1_PAN_L2:
    1183             :     case SV1_MS_L2:
    1184           0 :         nModel = SRITModele1B;
    1185           0 :         break;
    1186             : 
    1187           0 :     case SAR:
    1188             :     case RSAT_FIN:
    1189             :     case RSAT_STD:
    1190             :     case ERS_1:
    1191             :     case ERS_2:
    1192             :     case ASAR:
    1193             :     case QBIRD_PAN_STD:
    1194             :     case QBIRD_MULTI_STD:
    1195             :     case WVIEW_PAN_STD:
    1196             :     case WVIEW_MULTI_STD:
    1197             :     case GEOEYE_PAN_STD:
    1198             :     case GEOEYE_MULTI_STD:
    1199             :     case IKO_PAN:
    1200             :     case IKO_MULTI:
    1201             :     case CARTOSAT1_L2:
    1202             :     case PALSAR:
    1203             :     case FORMOSAT_PAN_L2:
    1204             :     case FORMOSAT_MULTIL2:
    1205             :     case TERRASAR:
    1206             :     case OV3_PAN_GEO:
    1207             :     case OV3_MULTI_GEO:
    1208             :     case OV5_PAN_GEO:
    1209             :     case OV5_MULTI_GEO:
    1210             :     case UAVSAR:
    1211             :     case HJ1C:
    1212           0 :         nModel = SRITModeleSAR;
    1213           0 :         break;
    1214             : 
    1215           0 :     case ORBVIEW_PAN:
    1216             :     case ORBVIEW_MULTI:
    1217             :     case QBIRD_PAN:
    1218             :     case QBIRD_MULTI:
    1219             :     case WVIEW_PAN:
    1220             :     case WVIEW_MULTI:
    1221             :     case GEOEYE_PAN:
    1222             :     case GEOEYE_MULTI:
    1223             :     case SPOT5_PAN_2_5:
    1224             :     case CARTOSAT1_L1:
    1225             :     case ALOS_PRISM_L1:
    1226             :     case KOMPSAT2_PAN:
    1227             :     case KOMPSAT2_MULTI:
    1228             :     case KOMPSAT3_PAN:
    1229             :     case KOMPSAT3_PSH:
    1230             :     case KOMPSAT3_MS:
    1231             :     case KOMPSAT3A_PAN:
    1232             :     case KOMPSAT3A_PSH:
    1233             :     case KOMPSAT3A_MS:
    1234             :     case CBERS_HRC:
    1235             :     case OV3_PAN_BASIC:
    1236             :     case OV3_MULTI_BASIC:
    1237             :     case OV5_PAN_BASIC:
    1238             :     case OV5_MULTI_BASIC:
    1239             :     case PLEIADES_PAN_L1:
    1240             :     case PLEIADES_MS_L1:
    1241             :     case SPOT6_PAN:
    1242             :     case SPOT6_MS:
    1243             :     case SPOT6_PSH:
    1244             :     case SPOT7_PAN:
    1245             :     case SPOT7_MS:
    1246             :     case SPOT7_PSH:
    1247             :     case TH01_DGP:
    1248             :     case TH01_GFB:
    1249             :     case TH01_SXZ:
    1250             :     case ZY1_02C_HRC:
    1251             :     case ZY1_02C_PMS_PAN:
    1252             :     case ZY1_02C_PMS_MS:
    1253             :     case ZY3_NAD:
    1254             :     case ZY3_FWD:
    1255             :     case ZY3_BWD:
    1256             :     case ZY3_MUX:
    1257             :     case ZY3_TLC:
    1258             :     case GK2_PAN:
    1259             :     case MRC_RED:
    1260             :     case MRC_GRN:
    1261             :     case MRC_BLU:
    1262             :     case MRC_NIR:
    1263             :     case GF1_PMS_PAN:
    1264             :     case GF1_PMS_MS:
    1265             :     case GF2_PMS_PAN:
    1266             :     case GF2_PMS_MS:
    1267             :     case GF4_PMS_MS:
    1268             :     case GF4_PMI_Thermal:
    1269             :     case GF6_PMS_PAN:
    1270             :     case GF6_PMS_MS:
    1271             :     case SJ9_PAN:
    1272             :     case SJ9_MUX:
    1273             :     case SJ9_PMS_PAN:
    1274             :     case SJ9_PMS_MS:
    1275             :     case YG2_1:
    1276             :     case YG14_1:
    1277             :     case SSOT_PAN_L1:
    1278             :     case SSOT_MS_L1:
    1279             :     case ALSAT2_PAN_1A:
    1280             :     case ALSAT2_MS_1A:
    1281             :     case DUBAISAT2_PAN:
    1282             :     case DUBAISAT2_MS:
    1283             :     case KAZEOSAT1_PAN_1A:
    1284             :     case KAZEOSAT1_MS_1A:
    1285             :     case KAZEOSAT1_PAN_2A:
    1286             :     case KAZEOSAT1_MS_2A:
    1287             :     case KAZEOSAT2_MS_1G:
    1288             :     case DEIMOS2_PAN_1B:
    1289             :     case DEIMOS2_MS_1B:
    1290             :     case DEIMOS2_PSH_1B:
    1291             :     case TRIPLESAT_PAN:
    1292             :     case TRIPLESAT_MS:
    1293             :     case PER_PAN_2A:
    1294             :     case PER_MS_2A:
    1295             :     case JL101A_PAN:
    1296             :     case JL101A_MS:
    1297             :     case HI_RES:
    1298             :     case FORMOSAT5_PAN:
    1299             :     case FORMOSAT5_MS:
    1300             :     case GOKTURK1_PAN:
    1301             :     case GOKTURK1_MS:
    1302           0 :         nModel = SRITModele1AHR;
    1303           0 :         break;
    1304             : 
    1305           0 :     case EROS:
    1306             :     case HRC:
    1307             :     case QBIRD_PAN_STH:
    1308             :     case QBIRD_MULTI_STH:
    1309             :     case FORMOSAT_PAN:
    1310             :     case FORMOSAT_MULTI:
    1311           0 :         nModel = SRITModeleEros;
    1312           0 :         break;
    1313             : 
    1314           0 :     default:
    1315           0 :         return ThrowPCIDSKException(0, "Invalid sensor type.");
    1316             :         break;
    1317             :     }
    1318             : 
    1319           0 :     return (nModel);
    1320             : }
    1321             : 

Generated by: LCOV version 1.14