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