On 28 February 2012 16:06, Even Rouault <[email protected]>wrote:
>
> I've skimmed quickly through the driver code and if you are lucky, it is
> probably just a matter of changing a few lines (well, I can be wrong).
>
Even
I've produced a new patch for the satellite IDs based on the documentation.
(diff -c from the 1.9.0 source)
Andrew
*** l1bdataset.cpp.orig 2012-01-04 07:03:28.000000000 +0000
--- l1bdataset.cpp 2012-03-06 15:03:52.241101854 +0000
***************
*** 47,52 ****
--- 47,53 ----
enum { // Spacecrafts:
TIROSN, // TIROS-N
+ // NOAA are given a letter before launch and a number after launch
NOAA6, // NOAA-6(A)
NOAAB, // NOAA-B
NOAA7, // NOAA-7(C)
***************
*** 61,67 ****
NOAA16, // NOAA-16(L)
NOAA17, // NOAA-17(M)
NOAA18, // NOAA-18(N)
! METOP2 // METOP-2(A)
};
enum { // Product types
--- 62,72 ----
NOAA16, // NOAA-16(L)
NOAA17, // NOAA-17(M)
NOAA18, // NOAA-18(N)
! NOAA19, // NOAA-19(N')
! // MetOp are given a number before launch and a letter after launch
! METOP2, // METOP-A(2)
! METOP1, // METOP-B(1)
! METOP3, // METOP-C(3)
};
enum { // Product types
***************
*** 1009,1014 ****
--- 1014,1020 ----
eProcCenter = UNKNOWN_CENTER;
// Determine the spacecraft name
+ // See http://www.ncdc.noaa.gov/oa/pod-guide/ncdc/docs/klm/html/c8/sec83132-2.htm
int iWord = CPL_MSBWORD16( *(GUInt16 *)
(abyRecHeader + L1B_NOAA15_HDR_REC_ID_OFF) );
switch ( iWord )
***************
*** 1025,1041 ****
case 7:
eSpacecraftID = NOAA18;
break;
! /* FIXME: find appropriate samples and test these two cases:
! * case 8:
! eSpacecraftID = NOAA-N';
break;
case 11:
! eSpacecraftID = METOP-1;
! break;*/
case 12:
- case 14: // METOP simulator (code used in AAPP format)
eSpacecraftID = METOP2;
break;
default:
#ifdef DEBUG
CPLDebug( "L1B", "Unknown spacecraft ID \"%d\".", iWord );
--- 1031,1052 ----
case 7:
eSpacecraftID = NOAA18;
break;
! case 8:
! eSpacecraftID = NOAA19;
break;
case 11:
! eSpacecraftID = METOP1;
! break;
case 12:
eSpacecraftID = METOP2;
break;
+ // METOP3 is not documented yet
+ case 13:
+ eSpacecraftID = METOP3;
+ break;
+ case 14:
+ eSpacecraftID = METOP3;
+ break;
default:
#ifdef DEBUG
CPLDebug( "L1B", "Unknown spacecraft ID \"%d\".", iWord );
***************
*** 1155,1162 ****
case NOAA18:
pszText = "NOAA-18(N)";
break;
! case METOP2:
! pszText = "METOP-2(A)";
break;
default:
pszText = "Unknown";
--- 1166,1182 ----
case NOAA18:
pszText = "NOAA-18(N)";
break;
! case NOAA19:
! pszText = "NOAA-19(N')";
! break;
! case METOP2:
! pszText = "METOP-A(2)";
! break;
! case METOP1:
! pszText = "METOP-B(1)";
! break;
! case METOP3:
! pszText = "METOP-C(3)";
break;
default:
pszText = "Unknown";
***************
*** 1734,1740 ****
poDS->SetBand( iBand, new L1BRasterBand( poDS, iBand ));
// Channels descriptions
! if ( poDS->eSpacecraftID >= NOAA6 && poDS->eSpacecraftID <= METOP2 )
{
if ( !(i & 0x01) && poDS->iChannelsMask & 0x01 )
{
--- 1754,1760 ----
poDS->SetBand( iBand, new L1BRasterBand( poDS, iBand ));
// Channels descriptions
! if ( poDS->eSpacecraftID >= NOAA6 && poDS->eSpacecraftID <= METOP3 )
{
if ( !(i & 0x01) && poDS->iChannelsMask & 0x01 )
{
***************
*** 1751,1757 ****
if ( !(i & 0x04) && poDS->iChannelsMask & 0x04 )
{
if ( poDS->eSpacecraftID >= NOAA15
! && poDS->eSpacecraftID <= METOP2 )
if ( poDS->iInstrumentStatus & 0x0400 )
poDS->GetRasterBand(iBand)->SetDescription( apszBandDesc[7] );
else
--- 1771,1777 ----
if ( !(i & 0x04) && poDS->iChannelsMask & 0x04 )
{
if ( poDS->eSpacecraftID >= NOAA15
! && poDS->eSpacecraftID <= METOP3 )
if ( poDS->iInstrumentStatus & 0x0400 )
poDS->GetRasterBand(iBand)->SetDescription( apszBandDesc[7] );
else
_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev