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()); }
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); }
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(); }
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); } } }
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); } }
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); }
public InterleaveIsNotSupportException(enumInterleave interleave) { _interleave = interleave; }