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 : * 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 : PCIDSKToutinSegment::~PCIDSKToutinSegment() = default;
27 :
28 0 : CPCIDSKToutinModelSegment::CPCIDSKToutinModelSegment(PCIDSKFile *fileIn,
29 : int segmentIn,
30 0 : const char *segment_pointer) :
31 0 : CPCIDSKEphemerisSegment(fileIn, segmentIn, segment_pointer,false)
32 : {
33 0 : loaded_ = false;
34 0 : mbModified = false;
35 0 : mpoInfo = nullptr;
36 0 : Load();
37 0 : }
38 :
39 :
40 0 : CPCIDSKToutinModelSegment::~CPCIDSKToutinModelSegment()
41 : {
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 0 : SRITInfo_t CPCIDSKToutinModelSegment::GetInfo() const
50 : {
51 0 : if (!mpoInfo)
52 : {
53 0 : const_cast<CPCIDSKToutinModelSegment *>(this)->Load();
54 :
55 0 : if (!mpoInfo)
56 : {
57 0 : ThrowPCIDSKException("Unable to load toutin segment.");
58 0 : return SRITInfo_t();
59 : }
60 : }
61 :
62 0 : return (*mpoInfo);
63 : }
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 0 : void CPCIDSKToutinModelSegment::SetInfo(const SRITInfo_t& oInfo)
72 : {
73 0 : if(&oInfo == mpoInfo)
74 : {
75 0 : return ;
76 : }
77 0 : if(mpoInfo)
78 : {
79 0 : delete mpoInfo;
80 : }
81 :
82 0 : mpoInfo = new SRITInfo_t(oInfo);
83 0 : mbModified = true;
84 : }
85 :
86 : /**
87 : * Load the contents of the segment
88 : */
89 0 : void CPCIDSKToutinModelSegment::Load()
90 : {
91 : // Check if we've already loaded the segment into memory
92 0 : if (loaded_) {
93 0 : return;
94 : }
95 :
96 0 : seg_data.SetSize((int)data_size - 1024);
97 :
98 0 : ReadFromFile(seg_data.buffer, 0, data_size - 1024);
99 :
100 0 : if(seg_data.buffer_size == 0)
101 : {
102 0 : return;
103 : }
104 :
105 0 : SRITInfo_t* poInfo = BinaryToSRITInfo();
106 :
107 0 : mpoInfo = poInfo;
108 :
109 : // We've now loaded the structure up with data. Mark it as being loaded
110 : // properly.
111 0 : loaded_ = true;
112 : }
113 :
114 : /**
115 : * Write the segment on disk
116 : */
117 0 : void CPCIDSKToutinModelSegment::Write(void)
118 : {
119 : //We are not writing if nothing was loaded.
120 0 : if (!loaded_) {
121 0 : return;
122 : }
123 :
124 0 : SRITInfoToBinary(mpoInfo);
125 :
126 0 : WriteToFile(seg_data.buffer,0,seg_data.buffer_size);
127 :
128 0 : mbModified = false;
129 : }
130 :
131 : /**
132 : * Synchronize the segment, if it was modified then
133 : * write it into disk.
134 : */
135 0 : void CPCIDSKToutinModelSegment::Synchronize()
136 : {
137 0 : if(mbModified)
138 : {
139 0 : this->Write();
140 : }
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 0 : CPCIDSKToutinModelSegment::BinaryToSRITInfo()
154 : {
155 : int i,j,k,l;
156 : 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 : {
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 : }
173 :
174 0 : bVersion9 = false;
175 0 : int nVersion = seg_data.GetInt(8,1);
176 0 : if (nVersion == 9)
177 : {
178 0 : bVersion9 = true;
179 : }
180 :
181 : /* -------------------------------------------------------------------- */
182 : /* Allocate the SRITModel. */
183 : /* -------------------------------------------------------------------- */
184 0 : std::unique_ptr<SRITInfo_t> SRITModel( new 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 : {
190 0 : SRITModel->nDownSample = seg_data.GetInt(24,3);
191 : }
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 : {
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 : }
224 : else
225 : {
226 0 : SRITModel->delT = 0.0;
227 0 : SRITModel->delL = 0.0;
228 0 : SRITModel->delTau = 0.0;
229 : }
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 : {
253 0 : SRITModel->oProjectionInfo = seg_data.Get(2*512+255,256);
254 : }
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 : {
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 : }
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 : {
300 0 : return (SRITInfo_t*)ThrowPCIDSKExceptionPtr("Invalid Sensor : %s.",
301 0 : SRITModel->OrbitPtr->SatelliteSensor.c_str());
302 : }
303 0 : if( SRITModel->nModel == -999)
304 : {
305 0 : return (SRITInfo_t*)ThrowPCIDSKExceptionPtr("Invalid Model from sensor number: %d.",
306 0 : SRITModel->nSensor);
307 : }
308 :
309 : /* -------------------------------------------------------------------- */
310 : /* Get the attitude data for SPOT */
311 : /* -------------------------------------------------------------------- */
312 0 : if (SRITModel->OrbitPtr->AttitudeSeg != nullptr ||
313 0 : SRITModel->OrbitPtr->RadarSeg != nullptr)
314 : {
315 : AttitudeSeg_t *attitudeSeg
316 0 : = SRITModel->OrbitPtr->AttitudeSeg;
317 :
318 0 : if (SRITModel->OrbitPtr->Type == OrbAttitude &&
319 : attitudeSeg != nullptr)
320 : {
321 : int ndata;
322 :
323 0 : ndata = attitudeSeg->NumberOfLine;
324 :
325 0 : for (i=0; i<ndata; i++)
326 : {
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 : }
332 : }
333 : }
334 : else
335 : {
336 0 : SRITModel->Qdeltar.clear();
337 0 : SRITModel->Hdeltat.clear();
338 : }
339 :
340 0 : return SRITModel.release();
341 : }
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 0 : CPCIDSKToutinModelSegment::SRITInfoToBinary( SRITInfo_t *SRITModel )
358 :
359 : {
360 : int i,j,k,l;
361 : 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 : {
418 0 : dfminht = 1.e38;
419 0 : dfmaxht = -1.e38;
420 0 : for (i=0; i<SRITModel->nGCPCount; i++)
421 : {
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 : }
427 : }
428 : else
429 : {
430 0 : dfminht = SRITModel->dfGCPMinHt;
431 0 : dfmaxht = 0;
432 : }
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 : {
444 0 : if (SRITModel->OrbitPtr->Type == OrbAttitude &&
445 0 : SRITModel->OrbitPtr->AttitudeSeg != nullptr)
446 : {
447 0 : if (SRITModel->OrbitPtr->AttitudeSeg->NumberOfLine != 0)
448 0 : seg_data.Put("3",nPos+20,1);
449 : }
450 : }
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 : {
469 0 : seg_data.Put("ProjInfo: ",nPos+245,10);
470 0 : seg_data.Put(SRITModel->oProjectionInfo.c_str(),
471 : nPos+255,256);
472 : }
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 : {
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 : }
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 0 : int CPCIDSKToutinModelSegment::GetSensor( EphemerisSeg_t *OrbitPtr)
516 : {
517 : 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 : {
531 0 : nSensor = SAR;
532 0 : if (OrbitPtr->PixelRes == 6.25)
533 0 : nSensor = RSAT_FIN;
534 : }
535 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "LISS"))
536 : {
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 : }
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 : {
574 0 : nSensor = TM;
575 0 : if (OrbitPtr->PixelRes == 15)
576 0 : nSensor = ETM;
577 : }
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 : {
582 0 : nSensor = IKO_PAN;
583 0 : if (OrbitPtr->PixelRes == 4)
584 0 : nSensor = IKO_MULTI;
585 : }
586 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ORBVIEW"))
587 : {
588 0 : nSensor = ORBVIEW_PAN;
589 0 : if (OrbitPtr->PixelRes == 4)
590 0 : nSensor = ORBVIEW_MULTI;
591 : }
592 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "OV"))
593 : {
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 : }
611 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "QBIRD"))
612 : {
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 : }
626 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "WVIEW"))
627 : {
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 : }
639 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GEOEYE"))
640 : {
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 : }
650 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "FORMOSAT"))
651 : {
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 : }
665 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SPOT"))
666 : {
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 : }
704 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MERIS"))
705 : {
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 : }
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 : {
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 : }
726 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CBERS"))
727 : {
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 : }
761 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "CARTOSAT"))
762 : {
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 : }
768 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DMC"))
769 : {
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 : }
775 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALOS"))
776 : {
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 : }
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 : {
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 : }
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 : {
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 : }
824 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOSAT"))
825 : {
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 : }
835 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "HJ"))
836 : {
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 : }
846 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "RASAT"))
847 : {
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 : }
853 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PLEIADES"))
854 : {
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 : }
864 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TH01"))
865 : {
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 : }
873 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ZY"))
874 : {
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 : }
892 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GK2"))
893 : {
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 : }
899 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "MRC"))
900 : {
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 : }
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 : {
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 : }
933 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SJ9"))
934 : {
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 : }
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 : {
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 : }
963 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "ALSAT"))
964 : {
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 : }
974 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DUBAISAT"))
975 : {
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 : }
981 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "KAZEOSAT"))
982 : {
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 : }
994 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "DEIMOS"))
995 : {
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 : }
1005 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "TRIPLESAT"))
1006 : {
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 : }
1012 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "PER_"))
1013 : {
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 : }
1019 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "JL"))
1020 : {
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 : }
1026 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "SV"))
1027 : {
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 : }
1037 0 : else if (STARTS_WITH_CI(OrbitPtr->SatelliteSensor.c_str(), "GOKTURK1"))
1038 : {
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 : }
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 : else
1051 : {
1052 0 : return ThrowPCIDSKException(0, "Invalid Sensor %s",
1053 0 : OrbitPtr->SatelliteSensor.c_str());
1054 : }
1055 :
1056 0 : return (nSensor);
1057 : }
1058 : /**
1059 : * Get the model of a sensor
1060 : * @param nSensor the sensor
1061 : * @return the model
1062 : */
1063 0 : int CPCIDSKToutinModelSegment::GetModel( int nSensor )
1064 : {
1065 0 : int nModel = -999;
1066 :
1067 0 : switch (nSensor)
1068 : {
1069 0 : case PLA_1:
1070 : case PLA_2:
1071 : case PLA_3:
1072 : case PLA_4:
1073 : case MLA_1:
1074 : case MLA_2:
1075 : case MLA_3:
1076 : case MLA_4:
1077 : case SPOT1_PAN:
1078 : case SPOT1_MS:
1079 : case SPOT2_PAN:
1080 : case SPOT2_MS:
1081 : case SPOT3_PAN:
1082 : case SPOT3_MS:
1083 : case SPOT4_PAN:
1084 : case SPOT4_MS:
1085 : case NEW:
1086 0 : nModel = SRITModele;
1087 0 : break;
1088 :
1089 0 : case ASTER:
1090 : case CBERS_CCD:
1091 : case CBERS_IRM_80:
1092 : case CBERS_IRM_160:
1093 : case CBERS_WFI:
1094 : case IRS_1:
1095 : case LISS_AWF:
1096 : case LISS_1:
1097 : case LISS_2:
1098 : case LISS_3:
1099 : case LISS_L3:
1100 : case LISS_L4:
1101 : case LISS_P3:
1102 : case LISS_W3:
1103 : case LISS_M3:
1104 : case EOC:
1105 : case SPOT5_PAN_5:
1106 : case SPOT5_HRS:
1107 : case SPOT5_MULTI:
1108 : case MERIS_FR:
1109 : case MERIS_RR:
1110 : case MERIS_LR:
1111 : case MODIS_1000:
1112 : case MODIS_500:
1113 : case MODIS_250:
1114 : case ALOS_AVNIR_L1:
1115 : case ALOS_AVNIR_L2:
1116 : case RAPIDEYE_L1B:
1117 : case THEOS_PAN_L1:
1118 : case THEOS_MS_L1:
1119 : case GOSAT_500_L1:
1120 : case GOSAT_1500_L1:
1121 : case HJ_CCD_1A:
1122 : case RASAT_PAN:
1123 : case RASAT_MS:
1124 : case GK2_MS:
1125 : case GF1_WFV:
1126 : case YG8_1:
1127 : case DEIMOS1_MS_1R:
1128 : case MED_RES:
1129 : case CBERS4_PAN_1:
1130 : case CBERS4_MS_1:
1131 : case CBERS4_THM_1:
1132 : case SV1_PAN_L1:
1133 : case SV1_MS_L1:
1134 0 : nModel = SRITModele1A;
1135 0 : break;
1136 :
1137 0 : case MSS:
1138 : case TM:
1139 : case ETM:
1140 : case LISS_P3_L2:
1141 : case LISS_L3_L2:
1142 : case LISS_W3_L2:
1143 : case LISS_L4_L2:
1144 : case LISS_AWF_L2:
1145 : case CBERS_IRM_80_L2:
1146 : case CBERS_IRM_160_L2:
1147 : case CBERS_WFI_L2:
1148 : case CBERS_CCD_L2:
1149 : case CBERS_HRC_L2:
1150 : case DMC_1R:
1151 : case DMC_1T:
1152 : case ALOS_PRISM_L2:
1153 : case THEOS_PAN_L2:
1154 : case THEOS_MS_L2:
1155 : case GOSAT_500_L2:
1156 : case GOSAT_1500_L2:
1157 : case HJ_CCD_1B:
1158 : case PLEIADES_PAN_L2:
1159 : case PLEIADES_MS_L2:
1160 : case SSOT_PAN_L2:
1161 : case SSOT_MS_L2:
1162 : case ALSAT2_PAN_2A:
1163 : case ALSAT2_MS_2A:
1164 : case RESOURCESAT:
1165 : case CBERS4_PAN_2:
1166 : case CBERS4_MS_2:
1167 : case CBERS4_THM_2:
1168 : case SV1_PAN_L2:
1169 : case SV1_MS_L2:
1170 0 : nModel = SRITModele1B;
1171 0 : break;
1172 :
1173 0 : case SAR:
1174 : case RSAT_FIN:
1175 : case RSAT_STD:
1176 : case ERS_1:
1177 : case ERS_2:
1178 : case ASAR:
1179 : case QBIRD_PAN_STD:
1180 : case QBIRD_MULTI_STD:
1181 : case WVIEW_PAN_STD:
1182 : case WVIEW_MULTI_STD:
1183 : case GEOEYE_PAN_STD:
1184 : case GEOEYE_MULTI_STD:
1185 : case IKO_PAN:
1186 : case IKO_MULTI:
1187 : case CARTOSAT1_L2:
1188 : case PALSAR:
1189 : case FORMOSAT_PAN_L2:
1190 : case FORMOSAT_MULTIL2:
1191 : case TERRASAR:
1192 : case OV3_PAN_GEO:
1193 : case OV3_MULTI_GEO:
1194 : case OV5_PAN_GEO:
1195 : case OV5_MULTI_GEO:
1196 : case UAVSAR:
1197 : case HJ1C:
1198 0 : nModel = SRITModeleSAR;
1199 0 : break;
1200 :
1201 0 : case ORBVIEW_PAN:
1202 : case ORBVIEW_MULTI:
1203 : case QBIRD_PAN:
1204 : case QBIRD_MULTI:
1205 : case WVIEW_PAN:
1206 : case WVIEW_MULTI:
1207 : case GEOEYE_PAN:
1208 : case GEOEYE_MULTI:
1209 : case SPOT5_PAN_2_5:
1210 : case CARTOSAT1_L1:
1211 : case ALOS_PRISM_L1:
1212 : case KOMPSAT2_PAN:
1213 : case KOMPSAT2_MULTI:
1214 : case KOMPSAT3_PAN:
1215 : case KOMPSAT3_PSH:
1216 : case KOMPSAT3_MS:
1217 : case KOMPSAT3A_PAN:
1218 : case KOMPSAT3A_PSH:
1219 : case KOMPSAT3A_MS:
1220 : case CBERS_HRC:
1221 : case OV3_PAN_BASIC:
1222 : case OV3_MULTI_BASIC:
1223 : case OV5_PAN_BASIC:
1224 : case OV5_MULTI_BASIC:
1225 : case PLEIADES_PAN_L1:
1226 : case PLEIADES_MS_L1:
1227 : case SPOT6_PAN:
1228 : case SPOT6_MS:
1229 : case SPOT6_PSH:
1230 : case SPOT7_PAN:
1231 : case SPOT7_MS:
1232 : case SPOT7_PSH:
1233 : case TH01_DGP:
1234 : case TH01_GFB:
1235 : case TH01_SXZ:
1236 : case ZY1_02C_HRC:
1237 : case ZY1_02C_PMS_PAN:
1238 : case ZY1_02C_PMS_MS:
1239 : case ZY3_NAD:
1240 : case ZY3_FWD:
1241 : case ZY3_BWD:
1242 : case ZY3_MUX:
1243 : case ZY3_TLC:
1244 : case GK2_PAN:
1245 : case MRC_RED:
1246 : case MRC_GRN:
1247 : case MRC_BLU:
1248 : case MRC_NIR:
1249 : case GF1_PMS_PAN:
1250 : case GF1_PMS_MS:
1251 : case GF2_PMS_PAN:
1252 : case GF2_PMS_MS:
1253 : case GF4_PMS_MS:
1254 : case GF4_PMI_Thermal:
1255 : case GF6_PMS_PAN:
1256 : case GF6_PMS_MS:
1257 : case SJ9_PAN:
1258 : case SJ9_MUX:
1259 : case SJ9_PMS_PAN:
1260 : case SJ9_PMS_MS:
1261 : case YG2_1:
1262 : case YG14_1:
1263 : case SSOT_PAN_L1:
1264 : case SSOT_MS_L1:
1265 : case ALSAT2_PAN_1A:
1266 : case ALSAT2_MS_1A:
1267 : case DUBAISAT2_PAN:
1268 : case DUBAISAT2_MS:
1269 : case KAZEOSAT1_PAN_1A:
1270 : case KAZEOSAT1_MS_1A:
1271 : case KAZEOSAT1_PAN_2A:
1272 : case KAZEOSAT1_MS_2A:
1273 : case KAZEOSAT2_MS_1G:
1274 : case DEIMOS2_PAN_1B:
1275 : case DEIMOS2_MS_1B:
1276 : case DEIMOS2_PSH_1B:
1277 : case TRIPLESAT_PAN:
1278 : case TRIPLESAT_MS:
1279 : case PER_PAN_2A:
1280 : case PER_MS_2A:
1281 : case JL101A_PAN:
1282 : case JL101A_MS:
1283 : case HI_RES:
1284 : case FORMOSAT5_PAN:
1285 : case FORMOSAT5_MS:
1286 : case GOKTURK1_PAN:
1287 : case GOKTURK1_MS:
1288 0 : nModel = SRITModele1AHR;
1289 0 : break;
1290 :
1291 0 : case EROS:
1292 : case HRC:
1293 : case QBIRD_PAN_STH:
1294 : case QBIRD_MULTI_STH:
1295 : case FORMOSAT_PAN:
1296 : case FORMOSAT_MULTI:
1297 0 : nModel = SRITModeleEros;
1298 0 : break;
1299 :
1300 0 : default:
1301 0 : return ThrowPCIDSKException(0, "Invalid sensor type.");
1302 : break;
1303 : }
1304 :
1305 0 : return (nModel);
1306 : }
1307 :
|