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();
     }
 }
示例#2
0
        /// <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();
     }
 }
示例#4
0
        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();
        }
示例#5
0
 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);
 }