Beispiel #1
0
        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();
                }
            }
        }
Beispiel #2
0
        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();
        }