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(); }
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 }