private void WriteAboutFile(string dstFilename) { //写出dat文件的相关信息 IRasterDataProvider rd = GeoDataDriver.Open(dstFilename) as IRasterDataProvider; try { if (rd != null) { MemoryRasterDataProvider mrd = rd as MemoryRasterDataProvider; if (mrd == null) { return; } HdrFile hdr = mrd.ToHdrFile(); if (hdr != null) { string hdrfile = Path.Combine(Path.GetDirectoryName(dstFilename), Path.GetFileNameWithoutExtension(dstFilename) + ".hdr"); HdrFile.SaveTo(hdrfile, hdr); } } } finally { if (rd != null) { rd.Dispose(); } } }
private void button8_Click(object sender, EventArgs e) { string ndviFileName = @"E:\工程项目(台式服务器)\SMART\【控制】UI框架(新整理)\SMART\bin\Release\TEMP\BAG_NDVI_NULL_NULL_NULL_20120731101801_20120801101801_.dat"; ndviFileName = @"E:\工程项目(台式服务器)\SMART\【控制】UI框架(新整理)\SMART\bin\Release\Workspace\BAG\2012-08-01\栅格产品\BAG_DBLV_EOST_MODIS_NULL_20120505024500.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(); }