예제 #1
0
        private void button9_Click(object sender, EventArgs e)
        {
            string ndviFileName = @"E:\工程项目(台式服务器)\SMART\【控制】UI框架(新整理)\SMART\bin\Release\TEMP\BAG_NDVI_NULL_NULL_NULL_20120731133048_20120801133048_.dat";
            IRasterDataProvider      ndviDataProvider = GeoDataDriver.Open(ndviFileName) as IRasterDataProvider;
            MemoryRasterDataProvider dataProvider     = ndviDataProvider as MemoryRasterDataProvider;
            NDVISetValue             setValue1        = (dataProvider).GetExtHeader <NDVISetValue>();
            //double minNDVI = setValue1.MinNDVI;
            //double maxNDVI = setValue1.MaxNDVI;
            //double dst = maxNDVI - minNDVI;
            double minNDVI = 0.17;
            double maxNDVI = 0.81;
            double dst     = maxNDVI - minNDVI;
            IPixelFeatureMapper <float> memResult = new MemPixelFeatureMapper <float>("BPCD", 1000, new Size(ndviDataProvider.Width, ndviDataProvider.Height), ndviDataProvider.CoordEnvelope, ndviDataProvider.SpatialRef);
            ArgumentProvider            ap        = new ArgumentProvider(ndviDataProvider, null);
            RasterPixelsVisitor <float> visitor   = new RasterPixelsVisitor <float>(ap);

            visitor.VisitPixel(new int[] { 1 }, (index, values) =>
            {
                if (values[0] == -9999f)
                {
                    memResult.Put(index, -9999);
                }
                else if (dst == 0)
                {
                    memResult.Put(index, -9999);
                }
                else
                {
                    memResult.Put(index, (float)((values[0] - minNDVI) / dst));
                }
            });
            RasterIdentify            id      = new RasterIdentify(ndviFileName);
            IInterestedRaster <float> iirNDVI = new InterestedRaster <float>(id, new Size(dataProvider.Width, dataProvider.Height), dataProvider.CoordEnvelope.Clone());

            iirNDVI.Put(memResult);
            iirNDVI.Dispose();
            ndviDataProvider.Dispose();
            dataProvider.Dispose();
        }
예제 #2
0
        private void button6_Click(object sender, EventArgs e)
        {
            string fname = @"E:\数据文件\BAG_NDVITemp_NUL_NUL_NUL_20120619163044_20120620163044.dat";
            IRasterDataProvider dataProvider = GeoDataDriver.Open(fname) as IRasterDataProvider;
            //非蓝藻区域赋-9999
            NDVISetValue setValue1 = (dataProvider as MemoryRasterDataProvider).GetExtHeader <NDVISetValue>();
            double       min       = setValue1.MinNDVI;
            double       max       = setValue1.MaxNDVI;
            IPixelFeatureMapper <float> ndvifinal = new MemPixelFeatureMapper <float>("NDVI", 1000, new Size(dataProvider.Width, dataProvider.Height), dataProvider.CoordEnvelope, dataProvider.SpatialRef);
            RasterIdentify idNDVI = new RasterIdentify();

            idNDVI.ThemeIdentify      = "CMA";
            idNDVI.ProductIdentify    = "BAG";
            idNDVI.SubProductIdentify = "NDVI";
            idNDVI.OrbitDateTime      = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0, 0));
            idNDVI.GenerateDateTime   = DateTime.Now;
            InterestedRaster <float> iirNDVI = new InterestedRaster <float>(idNDVI, new Size(dataProvider.Width, dataProvider.Height), dataProvider.CoordEnvelope.Clone(), dataProvider.SpatialRef, 8);

            iirNDVI.Put(-9999);
            //IEnumerable<int> ids = (indexProvider as IPixelIndexMapper).Indexes;
            ArgumentProvider            ap      = new ArgumentProvider(dataProvider, null);
            RasterPixelsVisitor <float> visitor = new RasterPixelsVisitor <float>(ap);

            #region
            ExtractProductIdentify prdIdentify = new ExtractProductIdentify();
            prdIdentify.ThemeIdentify      = "CMA";
            prdIdentify.ProductIdentify    = "BAG";
            prdIdentify.SubProductIdentify = "DBLV";
            ExtractAlgorithmIdentify algIdentify = new ExtractAlgorithmIdentify();
            algIdentify.Satellite  = "EOST";
            algIdentify.Sensor     = "MODIS";
            algIdentify.Resolution = null;//not use

            //IArgumentProviderFactory fac = MifEnvironment.ActiveArgumentProviderFactory;
            ThemeDef           themeDef = MonitoringThemeFactory.GetThemeDefByIdentify("CMA");
            IArgumentProvider  prd      = MonitoringThemeFactory.GetArgumentProvider(prdIdentify, algIdentify);
            ProductDef         bag      = themeDef.GetProductDefByIdentify("BAG");
            IMonitoringProduct prbag    = new MonitoringProductBag();

            SubProductDef productDef = bag.GetSubProductDefByIdentify("DBLV");
            AlgorithmDef  alg        = productDef.GetAlgorithmDefByIdentify("BAGExtract");

            IMonitoringSubProduct product = new SubProductBinaryBag(productDef);
            //prd.SetArg("BAGExtract", alg);
            prd.DataProvider = GetRasterDataProvider();
            prd.AOI          = GetAOI(prd.DataProvider);
            //IExtractResult result = (product as SubProductBinaryBag).Make(prd,null, null);
            //idxs = (result as IPixelIndexMapper).Indexes.ToArray();
            //#endregion
            //visitor.VisitPixel(new int[] { 1 }, (index, values) =>
            //    {
            //        foreach (int item in idxs)
            //        {
            //            if (item == index)
            //            {
            //                ndvifinal.Put(index, values[0]);
            //                break;
            //            }
            //        }
            //    });
            //iirNDVI.SetExtHeader(setValue1);
            //iirNDVI.Put(ndvifinal);
            //iirNDVI.Dispose();
            #endregion
        }