public void Read(string filename) { using (FileStream stream = new FileStream(filename, FileMode.Open)) { using (BinaryReader br = new BinaryReader(stream)) { byte[] awxLevel1HeaderBytes = br.ReadBytes(40); L1Header = new AWXLevel1Header(); L1Header.Read(new MemoryStream(awxLevel1HeaderBytes)); switch (L1Header.ProductType) { case 1: L2Header = new AWXLevel2HeaderImageGeostationary(); break; case 2: L2Header = new AWXLevel2HeaderImagePolarOrbit(); break; default: L2Header = new AWXLevel2HeaderImagePolarOrbit(); break; } byte[] awxLevel2HeaderBytes = br.ReadBytes(L1Header.Level2HeaderLength); L2Header.Read(new MemoryStream(awxLevel2HeaderBytes)); switch (L1Header.ProductType) { case 1: AWXLevel2HeaderImage L2HeaderImageGeostationary = L2Header as AWXLevel2HeaderImage; if (L2HeaderImageGeostationary.ToningTableDataBlockLength + L2HeaderImageGeostationary.CalibrationDataBlockLength + L2HeaderImageGeostationary.LocationDataBlockLength > 0) { L2HeaderEx = new AWXLevel2HeaderExImage( L2HeaderImageGeostationary.ToningTableDataBlockLength, L2HeaderImageGeostationary.CalibrationDataBlockLength, L2HeaderImageGeostationary.LocationDataBlockLength, new CalibrationDataBlockGeostationary()); L2HeaderEx.Read(stream); } break; case 2: AWXLevel2HeaderImage L2HeaderImagePolarOrbit = L2Header as AWXLevel2HeaderImage; if (L2HeaderImagePolarOrbit.ToningTableDataBlockLength + L2HeaderImagePolarOrbit.CalibrationDataBlockLength + L2HeaderImagePolarOrbit.LocationDataBlockLength > 0) { L2HeaderEx = new AWXLevel2HeaderExImage( L2HeaderImagePolarOrbit.ToningTableDataBlockLength, L2HeaderImagePolarOrbit.CalibrationDataBlockLength, L2HeaderImagePolarOrbit.LocationDataBlockLength, new CalibrationDataBlockGeostationary()); L2HeaderEx.Read(stream); } break; } } } }
private int CheckBands(AWXLevel1Header l1Hdr, AWXLevel2HeaderImage l2HeaderImage, out string [] bandNames) { int bandNO = 1; bandNames = null; int ChN = l2HeaderImage.ChannelNumber; if (l1Hdr.ProductType == 1) { bandNO = 1; bandNames = new string[1]; switch (ChN) { case 1: bandNames[0] = "红外通道(10.3-11.3)"; break; case 2: bandNames[0] = "水汽通道 (6.3-7.6)"; break; case 3: bandNames[0] = "红外分裂窗通道 (11.5-12.5)"; break; case 4: bandNames[0] = "可见光通道 (0.5-0.9)"; break; case 5: bandNames[0] = "中红外通道(3.5-4.0)"; break; default: bandNames[0] = "备用"; break; } } else if (l1Hdr.ProductType == 2) { if (ChN == 0) { AWXLevel2HeaderImagePolarOrbit l2HIP = l2HeaderImage as AWXLevel2HeaderImagePolarOrbit; bandNO = 3; bandNames = new string[3] { "band" + l2HIP.RChannelNumber, "band" + l2HIP.GChannelNumber, "band" + l2HIP.BChannelNumber }; } else { bandNames = new string[1]; if (ChN > 0 && ChN <= 5) { bandNO = 1; bandNames[0] = string.Format("band {0}", ChN); } else if (ChN >= 101 && ChN <= 119) { bandNO = 1; bandNames[0] = "TOVS HIRS通道"; } else if (ChN >= 201 && ChN <= 204) { bandNO = 1; bandNames[0] = "TOVS MSU通道"; } else { bandNO = 1; bandNames[0] = "备用"; } } } return(bandNO); }