Coverage Report

Created: 2025-12-31 08:30

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