Esempio n. 1
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());
        }
Esempio n. 2
0
        private static enumInterleave GetEnuminterleave(string interleave)
        {
            enumInterleave _enumInterleave = new enumInterleave();

            switch (interleave.ToLower().Trim())
            {
            case "bsq": _enumInterleave = enumInterleave.BSQ; break;

            case "bil": _enumInterleave = enumInterleave.BIL; break;

            case "bip": _enumInterleave = enumInterleave.BIP; break;
            }
            return(_enumInterleave);
        }
Esempio n. 3
0
 public virtual void Write(int xOffset, int yOffset, int xSize, int ySize, IntPtr buffer, enumDataType dataType, int xBufferSize, int yBufferSize, int bandCount, int[] bandMap, enumInterleave interleave)
 {
     throw new NotImplementedException();
 }
Esempio n. 4
0
 private void CheckArgumentsisValid(int xOffset, int yOffset, int xSize, int ySize, IntPtr buffer, enumDataType dataType, int xBufferSize, int yBufferSize, int bandCount, int[] bandMap, enumInterleave interleave)
 {
     if (xOffset < 0 || yOffset < 0 || xOffset >= _width || yOffset >= _height)
     {
         throw new RequestBlockOutOfRasterException(xOffset, yOffset, xSize, ySize);
     }
     if (buffer == IntPtr.Zero || xBufferSize == 0 || yBufferSize == 0)
     {
         throw new BufferIsEmptyException();
     }
     if (xOffset + xSize > _width || yOffset + ySize > _height)
     {
         throw new Exception("Access window out of range in RasterIO()!");
     }
     if (bandCount == 0)
     {
         return;
     }
     if (bandMap == null || bandMap.Length == 0)
     {
         bandMap = new int[bandCount];
         for (int i = 0; i < bandCount; i++)
         {
             bandMap[i] = i + 1;
         }
     }
     foreach (int b in bandMap)
     {
         if (b < 1 || b > _bandCount)
         {
             throw new BandIndexOutOfRangeException(_bandCount, b);
         }
     }
 }
Esempio n. 5
0
        public virtual void Read(int xOffset, int yOffset, int xSize, int ySize, IntPtr buffer, enumDataType dataType, int xBufferSize, int yBufferSize, int bandCount, int[] bandMap, enumInterleave interleave)
        {
            CheckArgumentsisValid(xOffset, yOffset, xSize, ySize, buffer, dataType, xBufferSize, yBufferSize, bandCount, bandMap, interleave);
            IntPtr ptr0 = buffer;

            switch (interleave)
            {
            case enumInterleave.BSQ:
                ReadBandsToBSQ(xOffset, yOffset, xSize, ySize, buffer, dataType, xBufferSize, yBufferSize, bandCount, bandMap, ptr0);
                break;

            case enumInterleave.BIL:
                ReadBandsToBIL(xOffset, yOffset, xSize, ySize, buffer, dataType, xBufferSize, yBufferSize, bandCount, bandMap, ptr0);
                break;

            case enumInterleave.BIP:
                ReadBandToBIP(xOffset, yOffset, xSize, ySize, buffer, dataType, xBufferSize, yBufferSize, bandCount, bandMap, ptr0);
                break;

            default:
                throw new InterleaveIsNotSupportException(interleave);
            }
        }
Esempio n. 6
0
        public void Read(int xOffset, int yOffset, int xSize, int ySize, IntPtr buffer, enumDataType dataType, int xBufferSize, int yBufferSize, int bandCount, int[] bandMap, enumInterleave interleave)
        {
            CheckArgumentsisValid(xOffset, yOffset, xSize, ySize, buffer, dataType, xBufferSize, yBufferSize, bandCount, bandMap, interleave);
            IntPtr ptr0 = buffer;

            ReadBandsToBSQ(xOffset, yOffset, xSize, ySize, buffer, dataType, xBufferSize, yBufferSize, bandCount, bandMap, ptr0);
        }
Esempio n. 7
0
 public InterleaveIsNotSupportException(enumInterleave interleave)
 {
     _interleave = interleave;
 }