Exemplo n.º 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();
                }
            }
        }
Exemplo n.º 2
0
        //以下为一些辅助帮助类
        public static IRasterDataProvider CreateRaster(string outFileName, CoordEnvelope env, float resolutionX, float resolutionY, int bandCount,
                                                       IRasterDataProvider referProvider)
        {
            //int bandCount = referProvider.BandCount;
            //CoordEnvelope outEnv = referProvider.CoordEnvelope;
            //float resX = referProvider.ResolutionX;
            //float resY = referProvider.ResolutionY;
            int width  = (int)(Math.Round(env.Width / resolutionX));
            int height = (int)(Math.Round(env.Height / resolutionY));

            Project.ISpatialReference spatialRef = referProvider.SpatialRef;
            enumDataType  datatype = referProvider.DataType;
            List <string> options  = new List <string>();

            options.Add("INTERLEAVE=BSQ");
            options.Add("VERSION=LDF");
            options.Add("WITHHDR=TRUE");
            options.Add("SPATIALREF=" + spatialRef.ToProj4String());
            options.Add("MAPINFO={" + 1 + "," + 1 + "}:{" + env.MinX + "," + env.MaxY + "}:{" + resolutionX + "," + resolutionY + "}"); //=env.ToMapInfoString(new Size(width, height));
            string hdrfile = HdrFile.GetHdrFileName(referProvider.fileName);

            if (!string.IsNullOrWhiteSpace(hdrfile) && File.Exists(hdrfile))
            {
                HdrFile hdr = HdrFile.LoadFrom(hdrfile);
                if (hdr != null && hdr.BandNames != null)
                {
                    options.Add("BANDNAMES=" + string.Join(",", hdr.BandNames));
                }
            }
            CheckAndCreateDir(Path.GetDirectoryName(outFileName));
            IRasterDataDriver  raster    = RasterDataDriver.GetDriverByName("LDF") as IRasterDataDriver;
            RasterDataProvider outRaster = raster.Create(outFileName, width, height, bandCount, datatype, options.ToArray()) as RasterDataProvider;

            return(outRaster);
        }
Exemplo n.º 3
0
 public void Update(CoordEnvelope coordEnvelope)
 {
     _isNeedUpdateHeader = false;
     if (coordEnvelope != null)
     {
         _coordEnvelope = coordEnvelope.Clone();
         _header.MinX   = (float)_coordEnvelope.MinX;
         _header.MaxX   = (float)_coordEnvelope.MaxX;
         _header.MinY   = (float)_coordEnvelope.MinY;
         _header.MaxY   = (float)_coordEnvelope.MaxY;
         if (_access == MemoryMappedFileAccess.ReadWrite)
         {
             //MemoryRasterHeader header = GetExtHeader<MemoryRasterHeader>();
             SetExtHeader <MemoryRasterHeader>(_header);
             string hdr = HdrFile.GetHdrFileName(_fileName);
             if (File.Exists(hdr))
             {
                 File.Delete(hdr);
             }
         }
         else
         {
             _isNeedUpdateHeader = true;
         }
     }
 }
Exemplo n.º 4
0
        public static IRasterDataProvider CreateRaster(string outFileName, IRasterDataProvider referProvider, string fname)
        {
            int width  = referProvider.Width;
            int height = referProvider.Height;

            Project.ISpatialReference spatialRef = referProvider.SpatialRef;
            enumDataType  datatype = referProvider.DataType;
            List <string> options  = new List <string>();

            options.Add("INTERLEAVE=BSQ");
            options.Add("VERSION=LDF");
            options.Add("WITHHDR=TRUE");
            options.Add("SPATIALREF=" + spatialRef.ToProj4String());
            options.Add("MAPINFO={" + 1 + "," + 1 + "}:{" + referProvider.CoordEnvelope.MinX + "," + referProvider.CoordEnvelope.MaxY + "}:{" + referProvider.ResolutionX + "," + referProvider.ResolutionY + "}"); //=env.ToMapInfoString(new Size(width, height));
            string hdrfile = HdrFile.GetHdrFileName(Path.ChangeExtension(fname, ".hdr"));

            if (!string.IsNullOrWhiteSpace(hdrfile) && File.Exists(hdrfile))
            {
                HdrFile hdr = HdrFile.LoadFrom(hdrfile);
                if (hdr != null && hdr.BandNames != null)
                {
                    options.Add("BANDNAMES=" + string.Join(",", hdr.BandNames));
                }
            }
            if (!Directory.Exists(Path.GetDirectoryName(outFileName)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(outFileName));
            }
            IRasterDataDriver  raster    = RasterDataDriver.GetDriverByName("LDF") as IRasterDataDriver;
            RasterDataProvider outRaster = raster.Create(outFileName, width, height, 1, datatype, options.ToArray()) as RasterDataProvider;

            return(outRaster);
        }
Exemplo n.º 5
0
        //适用于打开文件的情况
        public MvgDataProvider(string fileName, IGeoDataDriver dataDriver, bool isReadOnly)
            : base(fileName, dataDriver)
        {
            _driver   = dataDriver;
            _fileName = fileName;
            string hdrfile = HdrFile.GetHdrFileName(_fileName);

            if (File.Exists(hdrfile))
            {
                _filelist = new string[] { _fileName, hdrfile }
            }
            ;
            else
            {
                _filelist = new string[] { _fileName }
            };
            _header = new MvgHeader(fileName);
            FillProviderAttributes();
            _fsStream = new FileStream(_fileName, FileMode.Open, isReadOnly ? FileAccess.Read : FileAccess.ReadWrite);
            if (!isReadOnly)
            {
                _binaryWriter = new BinaryWriter(_fsStream);
            }
            _binaryReader = new BinaryReader(_fsStream);
            LoadBands();
        }
Exemplo n.º 6
0
 /// <summary>
 /// 调用GDAL前生成.hdr文件
 /// </summary>
 protected override void CallGDALBefore()
 {
     base.CallGDALBefore();
     _d1bdHeader = SetFileHeader.Set1BDHeader(fileName);
     //generate hdr file
     using (FileStream fs = new FileStream(fileName, FileMode.Open))
     {
         long len = fs.Length;
         _factOfLine       = (int)(len / _sizeOfLine - 1);
         this._hdr         = new HdrFile();
         _hdr.Lines        = _factOfLine;
         _hdr.BandNames    = TryGetBandNames();
         _hdr.Bands        = _hdr.BandNames.Count();
         _hdr.Samples      = _samples;
         _hdr.HeaderOffset = _offset;
         if (_d1bdHeader.IsBigEndian)
         {
             _hdr.ByteOrder = enumHdrByteOder.Network_IEEE;
         }
         else
         {
             _hdr.ByteOrder = enumHdrByteOder.Host_intel;
         }
         _hdr.MajorFrameOffsets[0] = _maxFrameOffset;
         _hdr.MajorFrameOffsets[1] = _minFrameOffset;
         string fname = HdrFile.GetHdrFileName(this._fileName);
         _hdr.SaveTo(fname);
     }
 }
Exemplo n.º 7
0
        /*
         *  VALUECOUNT = 2         //default:0
         *  VALUES = "{0,1}"       //
         *  VALUENAMES             //
         *  SPATIALREF=Proj4                  //default:wgs-84
         *  MAPINFO={X,Y}:{Col,Row}:{ResolutionX,ResolutionY} //default:null
         *  WITHHDR=[TRUE|FALSE]      //default:true
         */
        public override IRasterDataProvider Create(string fileName, int xSize, int ySize, int bandCount, enumDataType dataType, params object[] options)
        {
            ISpatialReference spatialRef;
            MvgHeader         mvgHeader;
            HdrMapInfo        mapInfo = null;
            bool  isWithHdr           = true;
            Int16 valueCount          = 0;

            Int16[]  values     = null;
            string[] valueNames = null;
            using (FileStream fileStream = new FileStream(fileName, FileMode.Create))
            {
                ParserMvgHeaderParams(options, out spatialRef, out mapInfo, out isWithHdr, out valueCount, out values, out valueNames);
                mvgHeader = CreateMvgHeader(xSize, ySize, spatialRef, mapInfo, valueCount, values, valueNames);
                int headerSize = mvgHeader.HeaderSize;
                int fileLength = mvgHeader.HeaderSize + xSize * ySize * bandCount * DataTypeHelper.SizeOf(enumDataType.Int16);
                fileStream.SetLength(fileLength);
                fileStream.Write(mvgHeader.ToBytes(), 0, headerSize);
            }
            if (isWithHdr)
            {
                mvgHeader.ToHdrFile().SaveTo(HdrFile.GetHdrFileName(fileName));
            }
            IGeoDataProvider provider = BuildDataProviderByArgs(fileName, enumDataProviderAccess.Update, mvgHeader);

            return(provider as IRasterDataProvider);
        }
 public override void Write(HdrFile hdr, RasterIdentify id)
 {
     base.Write(hdr, id);
     BytesPerPixel   = GetBytesPerPixel(hdr.DataType);
     BeginTimeYear   = (short)id.OrbitDateTime.Year;
     BeginTimeMonth  = (short)id.OrbitDateTime.Month;
     BeginTimeDay    = (short)id.OrbitDateTime.Day;
     BeginTimeHour   = (short)id.OrbitDateTime.Hour;
     BeginTimeMinute = (short)id.OrbitDateTime.Minute;
     EndTimeYear     = (short)id.OrbitDateTime.Year;
     EndTimeMonth    = (short)id.OrbitDateTime.Month;
     EndTimeDay      = (short)id.OrbitDateTime.Day;
     EndTimeHour     = (short)id.OrbitDateTime.Hour;
     EndTimeMinute   = (short)id.OrbitDateTime.Minute;
     if (hdr.BandNums.Length == 3)
     {
         ChannelNumber  = 0;
         RChannelNumber = (short)hdr.BandNums[0];
         GChannelNumber = (short)hdr.BandNums[1];
         BChannelNumber = (short)hdr.BandNums[2];
     }
     else if (hdr.BandNums.Length == 1)
     {
         ChannelNumber = 6;
     }
 }
Exemplo n.º 9
0
        public HdrFile ToHdrFile()
        {
            HdrFile hdrContent = _header.ToHdrFile();

            hdrContent.HdrProjectionInfo = GetHdrProjectionInfo();
            hdrContent.MapInfo           = GetHdrMapInfo();
            return(hdrContent);
        }
 public override void Write(HdrFile hdr)
 {
     base.Write(hdr);
     Level2HeaderLength          = 88;
     PaddingLength               = (short)(hdr.Samples - Level1HeaderLength - Level2HeaderLength);
     FileHeaderOccupyRecordCount = 1;
     ProductType = 2;
 }
Exemplo n.º 11
0
        public void CreateEmptyLdfFile()
        {
            Assert.That(_newFileName != null);
            IGeoDataDriver driver = GeoDataDriver.GetDriverByName("LDF");

            Assert.NotNull(driver);
            ILdfDriver drv = driver as ILdfDriver;

            Assert.NotNull(drv);
            int            width      = 2048;
            int            height     = 3390;
            int            bandCount  = 10;
            enumDataType   dataType   = enumDataType.UInt16;
            enumInterleave interleave = enumInterleave.BSQ;
            string         version    = "LDF";
            //string proj4 = "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137";
            string           mapInfo = "{1,1}:{110,35}:{0.01,0.01}";
            bool             withHdr = true;
            ILdfDataProvider prd     = drv.Create(_newFileName, width, height, bandCount, dataType,
                                                  "INTERLEAVE=" + interleave.ToString(),
                                                  "VERSION=" + version,
                                                  //"SPATIALREF=" + proj4,
                                                  "MAPINFO=" + mapInfo, "WITHHDR=" + withHdr.ToString()) as ILdfDataProvider;

            Assert.NotNull(prd);
            Assert.That(prd.Width == width && prd.Height == height);
            Assert.That(prd.BandCount == bandCount);
            Assert.That(prd.DataType == dataType);
            ILdfHeader header = prd.Header;

            Assert.NotNull(header);
            HdrFile hdr = header.ToHdrFile();

            PrintHdrInfo(hdr);
            Ldf1Header ldfheader = header as Ldf1Header;

            Assert.NotNull(ldfheader);
            Assert.That(ldfheader._width == width && ldfheader._height == height);
            Assert.That(ldfheader.DataType == dataType);
            Assert.NotNull(prd.SpatialRef);
            for (int i = 0; i < bandCount; i++)
            {
                IRasterBand band = prd.GetRasterBand(i + 1);
                Assert.NotNull(band);
                Assert.That(band.Width == width && band.Height == height);
                Assert.That(band.DataType == dataType);
            }
            prd.Dispose();
            drv.Dispose();
            Assert.True(File.Exists(_newFileName));
            FileInfo fInfo = new FileInfo(_newFileName);

            Assert.True(width * height * bandCount * 2 + header.HeaderSize == fInfo.Length);
            ISpatialReference spatialRef = prd.SpatialRef;

            Assert.NotNull(spatialRef);
            Console.Out.WriteLine(spatialRef.ToString());
        }
Exemplo n.º 12
0
        private void CreatHdrFileByLdfFile(string ldfFileName)
        {
            string hdrFileName = HdrFile.GetHdrFileName(ldfFileName);

            if (!File.Exists(hdrFileName))
            {
                CreatHdrFile(HdrFile.GetHdrFileName(ldfFileName));
            }
        }
Exemplo n.º 13
0
        public void ParseFromFile(string infile)
        {
            string  outfile = Path.Combine(Path.GetDirectoryName(infile), Path.GetFileNameWithoutExtension(infile) + "_COPY.hdr");
            HdrFile hdr     = HdrFile.LoadFrom(infile);

            Assert.NotNull(hdr);
            hdr.SaveTo(outfile);
            Console.Write(File.ReadAllText(outfile));
            //FileAssert.AreEqual(infile, outfile);
        }
Exemplo n.º 14
0
        private void WritePolarAWX(string hdr, string dat, RasterIdentify id)
        {
            HdrFile hdrObj = HdrFile.LoadFrom(hdr);

            L1Header = new AWXLevel1HeaderImagePolarOrbit();
            L1Header.Write(hdrObj);
            L2Header = new AWXLevel2HeaderImagePolarOrbit();
            if (hdrObj.MapInfo.Name == "Geographic Lat/Lon")
            {
                L2Header.ProjectMode = 4;
            }
            using (IRasterDataProvider dataprd = GeoDataDriver.Open(dat) as IRasterDataProvider)
            {
                if (dataprd != null && dataprd.BandCount != 0)
                {
                    L2Header.GeographicalScopeNorthLatitude = (short)(dataprd.CoordEnvelope.MaxY * 100);
                    L2Header.GeographicalScopeSouthLatitude = (short)(dataprd.CoordEnvelope.MinY * 100);
                    L2Header.GeographicalScopeWestLongitude = (short)(dataprd.CoordEnvelope.MinX * 100);
                    L2Header.GeographicalScopeEastLongitude = (short)(dataprd.CoordEnvelope.MaxX * 100);

                    L2Header.ProjectCenterLatitude       = (short)((L2Header.GeographicalScopeNorthLatitude + L2Header.GeographicalScopeSouthLatitude) / 2);
                    L2Header.ProjectCenterLongitude      = (short)((L2Header.GeographicalScopeEastLongitude + L2Header.GeographicalScopeWestLongitude) / 2);
                    L2Header.ProjectHorizontalResolution = (short)(dataprd.ResolutionX * 100 * 100);
                    L2Header.ProjectVerticalResolution   = (short)(dataprd.ResolutionY * 100 * 100);
                }
            }
            L2Header.Write(hdrObj, id);
            Padding = new byte[L1Header.RecordLength - L1Header.Level1HeaderLength - L1Header.Level2HeaderLength];
            L1Header.WriteFile(hdr);
            L2Header.WriteFile(hdr);
            using (FileStream stream = new FileStream(Path.ChangeExtension(hdr, "AWX"), FileMode.Append))
            {
                using (BinaryWriter bw = new BinaryWriter(stream))
                {
                    bw.Write(Padding);
                }
            }
            using (FileStream stream = new FileStream(dat, FileMode.Open))
            {
                stream.Seek(hdrObj.HeaderOffset, SeekOrigin.Begin);
                using (BinaryReader br = new BinaryReader(stream))
                {
                    byte[] awxProductBytes = br.ReadBytes(Convert.ToInt32(stream.Length - stream.Position));
                    Product = new AWXProduct();
                    Product.Read(new MemoryStream(awxProductBytes));
                }
            }
            using (FileStream stream = new FileStream(Path.ChangeExtension(hdr, "AWX"), FileMode.Append))
            {
                using (BinaryWriter bw = new BinaryWriter(stream))
                {
                    bw.Write(Product.Data);
                }
            }
        }
Exemplo n.º 15
0
        public HdrFile ToHdrFile()
        {
            HdrFile hdr = new HdrFile();

            hdr.Bands        = BandCount;
            hdr.Samples      = Width;
            hdr.Lines        = Height;
            hdr.DataType     = HdrFile.DataTypeToIntValue(DataTypeHelper.Enum2DataType((enumDataType)DataType));
            hdr.HeaderOffset = Marshal.SizeOf(typeof(MemoryRasterHeader)) + ExtendHeaderLength;
            return(hdr);
        }
Exemplo n.º 16
0
 public virtual void Write(HdrFile hdr)
 {
     Sat96Filename      = new string(new char[12] {
         '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c'
     });                                                                                                   //
     Endian             = (hdr.ByteOrder == enumHdrByteOder.Host_intel) ? (short)0 : (short)1;
     Level1HeaderLength = 40;
     Format             = new string(new char[8] {
         'S', 'A', 'T', '2', '0', '0', '4', '\0'
     });                                                                       //
 }
Exemplo n.º 17
0
        private Core.DrawEngine.CoordEnvelope CoordEnvelopeFromHdr(HdrFile hdrFile)
        {
            double w = hdrFile.Samples * hdrFile.MapInfo.XYResolution.Longitude;
            double h = hdrFile.Lines * hdrFile.MapInfo.XYResolution.Latitude;

            double minX = hdrFile.MapInfo.BaseMapCoordinateXY.Longitude - (hdrFile.MapInfo.BaseRowColNumber.X - 1) * hdrFile.MapInfo.XYResolution.Longitude;
            double maxX = w + minX;
            double maxY = hdrFile.MapInfo.BaseMapCoordinateXY.Latitude + (hdrFile.MapInfo.BaseRowColNumber.Y - 1) * hdrFile.MapInfo.XYResolution.Latitude;
            double minY = maxY - h;

            return(new Core.DrawEngine.CoordEnvelope(minX, maxX, minY, maxY));
        }
Exemplo n.º 18
0
        protected override void CallGDALBefore()
        {
            base.CallGDALBefore();
            AWXFile awxFile = new AWXFile();

            awxFile.Read(fileName);
            if (awxFile.L1Header.ProductType == 1 || awxFile.L1Header.ProductType == 2)
            {
                AWXLevel2HeaderImage l2HI = awxFile.L2Header as AWXLevel2HeaderImage;
                HdrFile hdr = new HdrFile();
                hdr.DataType = 0;
                if (l2HI.Reserve != 0)
                {
                    hdr.DataType = l2HI.Reserve;
                }
                if (awxFile.L1Header.ProductType == 2)
                {
                    AWXLevel2HeaderImagePolarOrbit l2HIP = awxFile.L2Header as AWXLevel2HeaderImagePolarOrbit;
                    if (hdr.DataType == 0)
                    {
                        if (l2HIP.BytesPerPixel == 2)
                        {
                            hdr.DataType = 2;
                        }
                        else
                        {
                            hdr.DataType = 1;
                        }
                    }
                }
                else
                {
                    l2HI = awxFile.L2Header as AWXLevel2HeaderImageGeostationary;
                    //if(hdr.DataType==0)
                    hdr.DataType = 1;
                }
                hdr.Lines = l2HI.ImageHeight;
                string[] bandNames;
                hdr.Bands        = CheckBands(awxFile.L1Header, l2HI, out bandNames);//需根据静止或极轨数据进行区分;
                hdr.BandNames    = bandNames;
                hdr.Samples      = l2HI.ImageWidth;
                hdr.HeaderOffset = awxFile.L1Header.RecordLength;
                hdr.Intertleave  = enumInterleave.BSQ;
                hdr.ByteOrder    = (awxFile.L1Header.Endian == 0) ? enumHdrByteOder.Host_intel : enumHdrByteOder.Network_IEEE;
                //TryCreateSpatialRefByHeader(l2HI);
                //hdr.HdrProjectionInfo = GetHdrProjectionInfo();
                hdr.MapInfo = GetHdrMapInfo(l2HI);
                //hdr.GeoPoints = GetHdrGeoPoints(l2HI);
                hdr.SaveTo(Path.ChangeExtension(fileName, "hdr"));
            }
        }
Exemplo n.º 19
0
        public void OpenFile()
        {
            IGeoDataDriver      drv = GeoDataDriver.GetDriverByName("MVG");
            IRasterDataProvider prd = drv.Open(_fileName, enumDataProviderAccess.ReadOnly) as IRasterDataProvider;

            Assert.IsNotNull(prd);
            MvgHeader header = (prd as IMvgDataProvider).Header as MvgHeader;

            Assert.IsNotNull(header);
            Console.WriteLine("header.Width=" + header.Width);
            Console.WriteLine("header.Height=" + header.Height);
            HdrFile hdr = header.ToHdrFile();

            PrintHdrInfo(hdr);
        }
Exemplo n.º 20
0
        /// <summary>
        /// 调用GDAL前生成.hdr文件
        /// </summary>
        protected override void CallGDALBefore()
        {
            base.CallGDALBefore();
            string[] filenames = null;
            _infoDic = HJXML.ReadXMLFile(fileName, out filenames, out _existBands, out _lines, out _sample);
            //generate hdr file
            this._hdr         = new HdrFile();
            _hdr.Lines        = _lines;
            _hdr.BandNames    = TryGetBandNames();
            _hdr.Bands        = _existBands.Count;
            _hdr.Samples      = _sample;
            _hdr.HeaderOffset = 0;
            string fname = HdrFile.GetHdrFileName(this._fileName);

            _hdr.SaveTo(fname);
        }
Exemplo n.º 21
0
 private void TryUpdateHeader()
 {
     using (FileStream fs = new FileStream(_fileName, FileMode.Open, FileAccess.Write))
     {
         SetExtHeader <MemoryRasterHeader>(fs, _header);
         string hdr = HdrFile.GetHdrFileName(_fileName);
         if (File.Exists(hdr))
         {
             //HdrFile hdrfile = HdrFile.LoadFrom(hdr);
             //hdrfile.MapInfo.BaseMapCoordinateXY = new HdrGeoPointCoord(_header.MinX, _header.MaxY);
             //hdrfile.MapInfo.BaseRowColNumber = new Point(1, 1);
             //hdrfile.SaveTo(hdr);
             File.Delete(hdr);
         }
     }
 }
Exemplo n.º 22
0
        public HdrFile ToHdrFile()
        {
            HdrFile hdr = new HdrFile();

            hdr.Samples           = _width;
            hdr.Lines             = _height;
            hdr.DataType          = HdrFile.DataTypeToIntValue(typeof(Int16));
            hdr.Intertleave       = enumInterleave.BSQ;
            hdr.Bands             = 1;
            hdr.HeaderOffset      = HeaderSize;
            hdr.ByteOrder         = enumHdrByteOder.Host_intel;
            hdr.HdrProjectionInfo = GetHdrProjectionInfo();
            hdr.MapInfo           = GetHdrMapInfo();
            hdr.GeoPoints         = null;
            return(hdr);
        }
Exemplo n.º 23
0
 private void PrintHdrInfo(HdrFile hdr)
 {
     Console.WriteLine("Hdr File:");
     Console.WriteLine(hdr.Samples.ToString());
     Console.WriteLine(hdr.Lines.ToString());
     Console.WriteLine(hdr.Bands.ToString());
     Console.WriteLine(hdr.Intertleave.ToString());
     Console.WriteLine(hdr.DataType.ToString());
     Console.WriteLine(hdr.ByteOrder.ToString());
     Console.WriteLine(hdr.HeaderOffset.ToString());
     Console.WriteLine("////");
     hdr.SaveTo(HdrFile.GetHdrFileName(_newFileName));
     Console.WriteLine("LOAD HDR FILE:");
     Console.Write(File.ReadAllText(HdrFile.GetHdrFileName(_newFileName)));
     Console.WriteLine("////END LOAD HDR FILE");
 }
Exemplo n.º 24
0
        public override IRasterDataProvider Create(string fileName, int xSize, int ySize, int bandCount, enumDataType dataType, params object[] options)
        {
            ISpatialReference spatialRef;
            CoordEnvelope     coordEnvelope;
            bool       isWithHdr;
            int        extHeaderSize = 0;
            HdrMapInfo mapInfo;

            ParseOptions(xSize, ySize, options, out spatialRef, out coordEnvelope, out mapInfo, out isWithHdr, out extHeaderSize);
            MemoryRasterHeader h = GetHeader(spatialRef, coordEnvelope);

            h.BandCount          = bandCount;
            h.DataType           = (int)dataType;
            h.Width              = xSize;
            h.Height             = ySize;
            h.ExtendHeaderLength = extHeaderSize;
            byte[] headerBytes = new byte[1024];
            using (FileStream fs = new FileStream(fileName, FileMode.Create))
            {
                int      headerSize = Marshal.SizeOf(typeof(MemoryRasterHeader));
                byte[]   buffer     = new byte[headerSize];
                GCHandle handle     = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                Marshal.StructureToPtr((object)h, handle.AddrOfPinnedObject(), true);
                handle.Free();
                fs.SetLength(headerSize + extHeaderSize + (long)xSize * (long)ySize * (long)bandCount * (long)DataTypeHelper.SizeOf(dataType));
                fs.Write(buffer, 0, buffer.Length);
                fs.Seek(0, SeekOrigin.Begin);
                fs.Read(headerBytes, 0, (int)Math.Min(headerBytes.Length, fs.Length));
            }

            HdrFile hdrFile = h.ToHdrFile();

            if (spatialRef != null)
            {
                hdrFile.HdrProjectionInfo = GetHdrProjectionInfo(spatialRef);
            }
            if (mapInfo != null)
            {
                hdrFile.MapInfo = mapInfo;
            }

            hdrFile.SaveTo(HdrFile.GetHdrFileName(fileName));
            IGeoDataProvider provider = BuildDataProvider(fileName, headerBytes, enumDataProviderAccess.Update, options);

            return(provider as IRasterDataProvider);
        }
Exemplo n.º 25
0
        public unsafe LandRasterDictionaryTemplate(string rasterFile, string codeFile)
        {
            using (IRasterDataProvider prd = GeoDataDriver.Open(rasterFile) as IRasterDataProvider)
            {
                _pixelValues = new byte[prd.Width * prd.Height];
                fixed(byte *buffer = _pixelValues)
                {
                    IntPtr ptr = new IntPtr(buffer);

                    prd.GetRasterBand(1).Read(0, 0, prd.Width, prd.Height, ptr, enumDataType.Byte, prd.Width, prd.Height);
                }

                _hdrInfo    = HdrFile.LoadFrom(HdrFile.GetHdrFileName(rasterFile));
                _pixelNames = ParsePixelNames(codeFile);
                ExtractFieldsFromHdr();
            }
        }
Exemplo n.º 26
0
        private void CreatHdrFile(string fileName)
        {
            HdrFile hdr;
            string  fname = HdrFile.GetHdrFileName(fileName);

            if (File.Exists(fname))
            {
                return;
            }
            else
            {
                hdr = _header.ToHdrFile();
                if (hdr != null)
                {
                    hdr.SaveTo(fname);
                }
            }
        }
Exemplo n.º 27
0
        public override void Delete(string fileName)
        {
            string hdrFile = HdrFile.GetHdrFileName(fileName);

            string[] files = null;
            if (File.Exists(hdrFile))
            {
                files = new string[] { fileName, hdrFile }
            }
            ;
            else
            {
                files = new string[] { fileName }
            };
            foreach (string f in files)
            {
                File.Delete(f);
            }
        }
Exemplo n.º 28
0
        private void AddOverView(string pngfilename)
        {
            if (!File.Exists(pngfilename))
            {
                return;
            }
            string hdrfilename = pngfilename.Replace(".overview.png", ".hdr");

            if (!File.Exists(hdrfilename))
            {
                return;
            }
            HdrFile hdrFile = HdrFile.LoadFrom(hdrfilename);

            Core.DrawEngine.CoordEnvelope env = CoordEnvelopeFromHdr(hdrFile);
            Bitmap bmp = LoadImage(pngfilename);

            _simpleMapControl.AddImageLayer(pngfilename, bmp, env, true);
            _simpleMapControl.Render();
        }
Exemplo n.º 29
0
        public MemoryRasterDataProvider(string mmfName, string fname, enumDataProviderAccess access, IGeoDataDriver driver)
            : base(fname, driver)
        {
            _mmfName  = GetMmfName(mmfName);
            _fileName = fname;
            _access   = access == enumDataProviderAccess.ReadOnly ? MemoryMappedFileAccess.Read : MemoryMappedFileAccess.ReadWrite;
            string hdrfile = HdrFile.GetHdrFileName(_fileName);

            if (File.Exists(hdrfile))
            {
                _filelist = new string[] { _fileName, hdrfile }
            }
            ;
            else
            {
                _filelist = new string[] { _fileName }
            };
            _header = GetHeader(fname);
            SetFieldsByHeader(_header);
            TrySetEnvelopeAndResolutions();
            LoadBands();
        }
Exemplo n.º 30
0
 public override void Write(HdrFile hdr, RasterIdentify id)
 {
     char[] satchar = new char[8];
     char[] arr     = id.Satellite.ToCharArray();
     if (arr.Length <= 8)
     {
         for (int i = 0; i < arr.Length; i++)
         {
             satchar[i] = arr[i];
         }
     }
     else
     {
         for (int i = 0; i < 8; i++)
         {
             satchar[i] = arr[i];
         }
     }
     Satellite   = new string(satchar);//id.Satellite.ToCharArray()//string.Format("{0, -8}",id.Satellite.ToString())
     ImageWidth  = (short)hdr.Samples;
     ImageHeight = (short)hdr.Lines;
     Reserve     = (short)hdr.DataType;
 }