private void TryCreate0250DefaultArgs(AbstractWarpDataset srcRaster, FY3_MERSI_PrjSettings prjSettings, ref SpatialReference dstSpatialRef) { if (prjSettings.SecondaryOrbitRaster == null && prjSettings.IsSolarZenith) { prjSettings.IsSolarZenith = false; //throw new Exception("无法获取相应1KM轨道数据文件,无法做太阳天顶角订正"); } if (dstSpatialRef == null) { dstSpatialRef = _srcSpatialRef; } if (string.IsNullOrWhiteSpace(prjSettings.OutFormat)) { prjSettings.OutFormat = "ENVI"; } if (dstSpatialRef.IsGeographic() == 1) { _srcImgResolution = 0.0025f; } else { _srcImgResolution = 250f; } if (prjSettings.OutResolutionX == 0 || prjSettings.OutResolutionY == 0) { if (dstSpatialRef.IsGeographic() == 1) { prjSettings.OutResolutionX = 0.0025F;//地理坐标系 prjSettings.OutResolutionY = 0.0025F; } else { prjSettings.OutResolutionX = 250F;//投影坐标系 prjSettings.OutResolutionY = 250F; } } if (prjSettings.OutBandNos == null || prjSettings.OutBandNos.Length == 0) { _prjBands = BandDefCollection.MERSI_0250_OrbitDefCollecges(); } else { List <PrjBand> bands = new List <PrjBand>(); PrjBand[] defbands = BandDefCollection.MERSI_0250_OrbitDefCollecges(); foreach (int bandNo in prjSettings.OutBandNos) { bands.Add(defbands[bandNo - 1]); } _prjBands = bands.ToArray(); } }
/// <summary> /// 根据波段序号获取波段信息 /// </summary> /// <param name="bandNos">从1开始的波段号</param> /// <returns></returns> private static PrjBand[] GetPrjBandsVIRR(int[] bandNos) { PrjBand[] prjBand = BandDefCollection.VIRR_1000_OrbitDefCollecges(); List <PrjBand> bands = new List <PrjBand>(); foreach (int bandNo in bandNos) { if (bandNo <= 0 || bandNo > prjBand.Length) { continue; } bands.Add(prjBand[bandNo - 1]); } return(bands.ToArray()); }
private void TryCreateDefaultArgs(AbstractWarpDataset srcRaster, FY3_MERSI_PrjSettings prjSettings, ref SpatialReference dstSpatialRef) { if (dstSpatialRef == null) { dstSpatialRef = _srcSpatialRef; } if (string.IsNullOrWhiteSpace(prjSettings.OutFormat)) { prjSettings.OutFormat = "LDF"; } if (dstSpatialRef.IsGeographic() == 1) { _srcImgResolution = 0.01F; } else { _srcImgResolution = 1000F; } if (prjSettings.OutResolutionX == 0 || prjSettings.OutResolutionY == 0) { if (dstSpatialRef.IsGeographic() == 1) { prjSettings.OutResolutionX = 0.01F; prjSettings.OutResolutionY = 0.01F; } else { prjSettings.OutResolutionX = 1000F; prjSettings.OutResolutionY = 1000F; } } if (prjSettings.OutBandNos == null || prjSettings.OutBandNos.Length == 0) { _prjBands = BandDefCollection.MERSI_1000_OrbitDefCollecges(); } else { List <PrjBand> bands = new List <PrjBand>(); PrjBand[] defbands = BandDefCollection.MERSI_1000_OrbitDefCollecges(); foreach (int bandNo in prjSettings.OutBandNos) { bands.Add(defbands[bandNo - 1]); } _prjBands = bands.ToArray(); } }
internal static void GetFY4ABandmapTable(AbstractWarpDataset hkmRaster, AbstractWarpDataset kmRaster, AbstractWarpDataset dkmRaster, AbstractWarpDataset fkmRaster, ref int[] bandNumbers, out int[] hkmBands, out int[] kmBands, out int[] dkmBands, out int[] fkmBands) { hkmBands = null; kmBands = null; dkmBands = null; fkmBands = null; List <AbstractWarpDataset> srcRasterList = new List <AbstractWarpDataset> { hkmRaster, kmRaster, dkmRaster, fkmRaster }; List <PrjBand[]> bandDefList = new List <PrjBand[]> { BandDefCollection.FY4_0500_OrbitDefCollecges(), BandDefCollection.FY4_1000_OrbitDefCollecges(), BandDefCollection.FY4_2000_OrbitDefCollecges(), BandDefCollection.FY4_4000_OrbitDefCollecges() }; if (srcRasterList.All(t => t == null)) { return; } int index = srcRasterList.FindLastIndex(t => t != null); PrjBand[] basePrjBand = bandDefList[index]; if (bandNumbers == null || bandNumbers.Length == 0) { bandNumbers = Enumerable.Range(1, basePrjBand.Length).ToArray(); } List <int> hkm = new List <int>(); List <int> km = new List <int>(); List <int> dkm = new List <int>(); List <int> fkm = new List <int>(); for (int i = 0; i < bandNumbers.Length; i++) { if (kmRaster != null) { if (bandNumbers[i] <= bandDefList[1].Length) { km.Add(bandNumbers[i]); //当前通道号为bandIndexs[i],目标的为i continue; } } if (dkmRaster != null) { if (bandNumbers[i] <= bandDefList[2].Length) { dkm.Add(bandNumbers[i]); //当前通道号为bandIndexs[i],目标的为i continue; } } if (fkmRaster != null) { if (bandNumbers[i] <= bandDefList[3].Length) { fkm.Add(bandNumbers[i]); } } } int hkmIndex = bandNumbers.ToList().FindIndex(t => t == 2); if (hkmRaster != null) { hkm.Add(hkmIndex); } hkmBands = hkm.Count == 0 ? null : hkm.ToArray(); kmBands = km.Count == 0 ? null : km.ToArray(); dkmBands = dkm.Count == 0 ? null : dkm.ToArray(); fkmBands = fkm.Count == 0 ? null : fkm.ToArray(); }
public static PrjBand[] GetDefaultBandTable(string satelite, string sensor, string resolution) { if (sensor == "MERSI" && satelite == "FY3D") { if (resolution == "0250M") { return(BandDefCollection.MERSI2_0250_OrbitDefCollecges()); } if (resolution == "1000M") { return(BandDefCollection.MERSI2_1000_OrbitDefCollecges()); } } if (sensor == "VIRR") { return(BandDefCollection.GetOrbitBandDefCollection("FY3A", "VIRR", 0.01f)); } else if (sensor == "MERSI" && resolution == "0250M") { return(BandDefCollection.GetOrbitBandDefCollection("FY3A", "MERSI", 0.0025f)); } else if (sensor == "MERSI" && resolution == "1000M") { return(BandDefCollection.GetOrbitBandDefCollection("FY3A", "MERSI", 0.01f)); } else if (satelite == "FY1D" && sensor == "AVHRR") { return(BandDefCollection.GetOrbitBandDefCollection("FY1D", "AVHRR", 0.04f)); } else if (satelite == "NOAA" || sensor == "AVHRR") { return(BandDefCollection.GetOrbitBandDefCollection("NOAA", "AVHRR", 0.01f)); } else if ((satelite == "EOS" || sensor == "MODIS") && resolution == "0250M") { return(BandDefCollection.GetOrbitBandDefCollection("EOS", "MODIS", 0.0025f)); } else if ((satelite == "EOS" || sensor == "MODIS") && resolution == "0500M") { return(BandDefCollection.GetOrbitBandDefCollection("EOS", "MODIS", 0.005f)); } else if (satelite == "EOS" || sensor == "MODIS") { return(BandDefCollection.GetOrbitBandDefCollection("EOS", "MODIS", 0.01f)); } else if (satelite == "FY2" || sensor == "VISSR") { return(BandDefCollection.GetOrbitBandDefCollection("FY2", "VISSR", 0.05f)); } else if (satelite == "FY4A" && sensor == "AGRI") { if (resolution == "0500M") { return(BandDefCollection.GetOrbitBandDefCollection("FY4A", "AGRI", 500f)); } else if (resolution == "1000M") { return(BandDefCollection.GetOrbitBandDefCollection("FY4A", "AGRI", 1000f)); } else if (resolution == "2000M") { return(BandDefCollection.GetOrbitBandDefCollection("FY4A", "AGRI", 2000f)); } else if (resolution == "4000M") { return(BandDefCollection.GetOrbitBandDefCollection("FY4A", "AGRI", 4000f)); } } else if (satelite == "FY2G") { return(BandDefCollection.GetOrbitBandDefCollection("FY2G", "VISSR", 5000f)); } return(null); }