==== //import/GDAL/frmts/pds/pdsdataset.cpp#5 (text) - //depot/GDAL/frmts/pds/pdsdataset.cpp#8 (text) ==== content 271,287c271,293 < dfXDim = (float) atof(value); < dfYDim = (float) atof(value) * -1; < < CPLString unit = GetKeywordUnit("IMAGE_MAP_PROJECTION.MAP_SCALE",2); //KM < //value = GetKeywordUnit("IMAGE_MAP_PROJECTION.MAP_SCALE",3); //PIXEL < if((EQUAL(unit,"M")) || (EQUAL(unit,"METER")) || (EQUAL(unit,"METERS"))) { < // do nothing < } < else if (EQUAL(unit,"CM")) { < // convert from cm to m < dfXDim = dfXDim / 100.0; < dfYDim = dfYDim / 100.0; < } else { < //defaults to convert km to m < dfXDim = dfXDim * 1000.0; < dfYDim = dfYDim * 1000.0; < } --- > if (EQUAL(value, "N/A") || EQUAL(value, "\"N/A\"")) { > dfXDim = 1.0; > dfYDim = -1.0; > } else { > dfXDim = (float) atof(value); > dfYDim = (float) atof(value) * -1; > > CPLString unit = GetKeywordUnit("IMAGE_MAP_PROJECTION.MAP_SCALE",2); //KM > //value = poDS->GetKeywordUnit("IMAGE_MAP_PROJECTION.MAP_SCALE",3); //PIXEL > if((EQUAL(unit,"M")) || (EQUAL(unit,"METER")) || (EQUAL(unit,"METERS")) || > (EQUAL(unit,"N/A"))) { > // do nothing > } > else if (EQUAL(unit,"CM")) { > // convert from cm to m > dfXDim = dfXDim / 100.0; > dfYDim = dfYDim / 100.0; > } else { > //defaults to convert km to m > dfXDim = dfXDim * 1000.0; > dfYDim = dfYDim * 1000.0; > } > } 579a586,588 > // ^IMAGE = ("BLAH.IMG",1) -- start at record 1 (1 based) > // ^IMAGE = ("BLAH.IMG") -- still start at record 1 (equiv of "BLAH.IMG") > // ^IMAGE = ("BLAH.IMG", 5 ) -- start at byte 5 (the fifth byte in the file) 592c601,602 < int nDetachedOffset = 0; --- > int nDetachedOffset=0; > int bDetachedOffsetBytes=FALSE; // use records by default 597,600c607,616 < nDetachedOffset = atoi(GetKeywordSub( osImageKeyword, 2 )); < } < < if( osQube[0] == '"' ) --- > nDetachedOffset = atoi(GetKeywordSub( osImageKeyword, 2 )) -1; // the spec states this is 1 based > if (strstr(GetKeywordSub( osImageKeyword, 2 ), "")!=NULL) > bDetachedOffsetBytes=TRUE; > > // this is done because GetKeywordSub doesn't keep quotes, which means the next test fails > CPLString osTPath = CPLGetPath(GetDescription()); > CPLString osFilename = osQube; > CleanString( osFilename ); > osTargetFile = CPLFormCIFilename( osTPath, osFilename, NULL ); > } else if( osQube[0] == '"' ) 612a629 > int nLinePrefixBytes=0; 670c687,689 < nBands = atoi(GetKeyword("IMAGE.BANDS","1")); --- > nBands = atoi(GetKeyword("IMAGE.BANDS","1")); > nLinePrefixBytes = atoi(GetKeyword("IMAGE.LINE_PREFIX_BYTES","")); > 685,687c704,709 < else if( nDetachedOffset > 0 ) < nSkipBytes = nDetachedOffset; < else --- > else if( nDetachedOffset > 0 ) { > if (bDetachedOffsetBytes) > nSkipBytes = nDetachedOffset; > else > nSkipBytes = nDetachedOffset * record_bytes; > } else 782c804 < nLineOffset = nPixelOffset * nCols; --- > nLineOffset = record_bytes;//nItemSize * nBands * nCols; 788c810 < nLineOffset = nPixelOffset * nCols; --- > nLineOffset = record_bytes;//nItemSize * nBands * nCols; 794c816 < nLineOffset = nItemSize * nBands * nCols; --- > nLineOffset = record_bytes;//nItemSize * nBands * nCols; 810c832 < nSkipBytes + nBandOffset * i, --- > nSkipBytes + nBandOffset * i+nLinePrefixBytes,