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