Changeset 13373
- Timestamp:
- 12/18/07 19:56:43 (7 months ago)
- Files:
-
- trunk/gdal/frmts/rs2/rs2dataset.cpp (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/gdal/frmts/rs2/rs2dataset.cpp
r13367 r13373 209 209 GDT_UInt16, 210 210 1, NULL, 2, nBlockXSize * 2, 0 ); 211 else if ( eDataType == GDT_Byte ) 212 /* Ticket #2104: Support for ScanSAR products */ 213 return 214 poBandFile->RasterIO( GF_Read, 215 nBlockXOff * nBlockXSize, 216 nBlockYOff * nBlockYSize, 217 nBlockXSize, nRequestYSize, 218 pImage, nBlockXSize, nRequestYSize, 219 GDT_Byte, 220 1, NULL, 1, nBlockXSize, 0 ); 211 221 else 212 222 { … … 246 256 247 257 /************************************************************************/ 248 /* ReadLUT() */258 /* ReadLUT() */ 249 259 /************************************************************************/ 250 260 /* Read the provided LUT in to m_ndTable */ … … 274 284 275 285 /************************************************************************/ 276 /* RS2CalibRasterBand() */286 /* RS2CalibRasterBand() */ 277 287 /************************************************************************/ 278 288 … … 308 318 309 319 /************************************************************************/ 310 /* ~RS2CalibRasterBand()*/320 /* ~RS2CalibRasterBand() */ 311 321 /************************************************************************/ 312 322 … … 323 333 324 334 /************************************************************************/ 325 /* IReadBlock() */335 /* IReadBlock() */ 326 336 /************************************************************************/ 327 337 … … 330 340 { 331 341 CPLErr eErr; 332 GInt16 *pnImageTmp;333 342 int nRequestYSize; 334 343 … … 350 359 351 360 if (this->m_eType == GDT_CInt16) { 361 GInt16 *pnImageTmp; 352 362 /* read in complex values */ 353 363 pnImageTmp = (GInt16 *)CPLMalloc(2 * nBlockXSize * nBlockYSize * … … 394 404 } 395 405 } 396 } 397 else { 406 CPLFree(pnImageTmp); 407 } 408 else if (this->m_eType == GDT_Int16) { 409 GInt16 *pnImageTmp; 398 410 /* read in detected values */ 399 411 pnImageTmp = (GInt16 *)CPLMalloc(nBlockXSize * nBlockYSize * … … 417 429 } 418 430 } 419 } 420 free(pnImageTmp); 431 CPLFree(pnImageTmp); 432 } /* Ticket #2104: Support for ScanSAR products */ 433 else if (this->m_eType == GDT_Byte) { 434 GByte *pnImageTmp; 435 pnImageTmp = (GByte *)CPLMalloc(nBlockXSize * nBlockYSize * 436 GDALGetDataTypeSize( GDT_Byte ) / 8); 437 eErr = m_poBandDataset->RasterIO( GF_Read, 438 nBlockXOff * nBlockXSize, 439 nBlockYOff * nBlockYSize, 440 nBlockXSize, nRequestYSize, 441 pnImageTmp, nBlockXSize, nRequestYSize, 442 GDT_Byte, 443 1, NULL, 1, 1, 0); 444 445 /* iterate over detected values */ 446 for (int i = 0; i < nBlockYSize; i++) { 447 for (int j = 0; j < nBlockXSize; j++) { 448 int nPixOff = (i * nBlockYSize) + j; 449 450 ((float *)pImage)[nPixOff] = ((pnImageTmp[nPixOff] * 451 pnImageTmp[nPixOff]) + 452 this->m_nfOffset)/m_nfTable[nBlockXOff + j]; 453 } 454 } 455 } 456 else { 457 CPLAssert( FALSE ); 458 return CE_Failure; 459 } 421 460 return eErr; 422 461 } … … 425 464 /************************************************************************/ 426 465 /* ==================================================================== */ 427 /* RS2Dataset*/466 /* RS2Dataset */ 428 467 /* ==================================================================== */ 429 468 /************************************************************************/ … … 679 718 sBuf.Printf("RADARSAT_2_CALIB:GAMMA:%s", pszFilename); 680 719 papszSubdatasets = CSLSetNameValue( papszSubdatasets, 681 "SUBDATASET_ 1_NAME", sBuf );720 "SUBDATASET_4_NAME", sBuf ); 682 721 papszSubdatasets = CSLSetNameValue( papszSubdatasets, 683 "SUBDATASET_ 1_DESC", "Gamma calibrated" );722 "SUBDATASET_4_DESC", "Gamma calibrated" ); 684 723 } 685 724 continue; … … 746 785 747 786 if (papszSubdatasets != NULL) { 787 papszSubdatasets = CSLSetNameValue( papszSubdatasets, 788 "SUBDATASET_1_NAME", pszFilename ); 789 papszSubdatasets = CSLSetNameValue( papszSubdatasets, 790 "SUBDATASET_1_DESC", "Uncalibrated digital numbers" ); 791 748 792 poDS->GDALMajorObject::SetMetadata( papszSubdatasets, "SUBDATASETS" ); 749 793 CSLDestroy( papszSubdatasets ); … … 759 803 poDS->SetMetadataItem( "MATRIX_REPRESENTATION", "SCATTERING" ); 760 804 } 805 806 /* -------------------------------------------------------------------- */ 807 /* Collect a few useful metadata items */ 808 /* -------------------------------------------------------------------- */ 809 810 761 811 762 812 /* -------------------------------------------------------------------- */
