public Bitmap2(Bitmap bmp = null, string name = "", string dec = "", GRasterLayer gdalLayer = null, IGBand gdalBand = null) { _bitmap = bmp; _name = name; _dec = dec; _gdalBand = gdalBand; _gdalLayer = gdalLayer; }
/// <summary> /// 波段读取 /// </summary> /// <param name="filePath"></param> /// <param name="parentNode"></param> private void ReadBand(string rasterFilename, TreeNode parentNode) { string name = parentNode.Text; GRasterLayer _layer = new GRasterLayer(rasterFilename); for (int i = 0; i < _layer.BandCollection.Count; i++) { IGBand band = _layer.BandCollection[i]; band.BandName = name + "_波段_" + i; Bitmap2 bmp2 = new Bitmap2(bmp: band.GetBitmap(), name: band.BandName, gdalBand: band, gdalLayer: _layer); //获取band对应的bitmap格式图像,载入treedNode中 _imageDic.Add(band.BandName, bmp2); TreeNode childrenNode = new TreeNode(band.BandName); Invoke(new UpdateTreeNodeHandler(UpdateTreeNode), parentNode, childrenNode); } }
public void Output(string outputDir) { Dataset readDs = _rasterLayer.PDataSet; Driver drv = Gdal.GetDriverByName("GTiff"); string[] options = new string[] { "BLOCKXSIZE=" + readDs.RasterXSize, "BLOCKYSIZE=" + readDs.RasterYSize }; Dataset writeDs = drv.Create(outputDir, readDs.RasterXSize, readDs.RasterYSize, 1, _rasterLayer.PDataType, options); for (int i = 1; i <= _rasterLayer.BandCount; i++) { IGBand readBand = _rasterLayer.BandCollection[i - 1]; Band writeBand = writeDs.GetRasterBand(i); writeBand.WriteRaster(0, 0, readDs.RasterXSize, readDs.RasterYSize, readBand.GetByteBuffer(), readDs.RasterXSize, readDs.RasterYSize, 0, 0); } writeDs.FlushCache(); }
private void UpdateBands() { _bandIndexSave = new List <int>(); ImageList imageList = new ImageList(); for (int i = 0; i < _gdalLayer.BandCollection.Count; i++) { IGBand band = _gdalLayer.BandCollection[i]; ListViewItem lvi = new ListViewItem { ImageIndex = i }; lvi.SubItems.Add(band.BandName); lvi.SubItems.Add(band.Width + "x" + band.Height); band_listView.Items.Add(lvi); imageList.Images.Add(band.GetBitmap()); } band_listView.SmallImageList = imageList; band_listView.LargeImageList = imageList; }