【GIS】栅格图像更新(Tiff)

作者: OQOooo | 来源:发表于2022-06-05 17:59 被阅读0次

主要函数

1.读取影像

band1.ReadRaster(0, row, width, 1, doubleArr);
  • 第1个参数:x的偏移量(从该行第几个像素开始读取)

  • 第2个参数:y的偏移量(从该图片第几行开始读取)

  • 第3个参数:读取x的长度(从x的偏移量开始读几个像素)

  • 第4个参数:读取y的长度(从第y行开始读几行)

2.写入影像

 band1.WriteRaster(0, row, width, 1, doubleArr);
  • 第1个参数:x的偏移量(从该行第几个像素开始写入)

  • 第2个参数:y的偏移量(从该图片第几行开始写入)

  • 第3个参数:写入x的长度(从x的偏移量开始写几个像素)

  • 第4个参数:写入y的长度(从第y行开始写几行)

完整代码

  /**
     * 更新图上的数据
     *
     * @param path
     * @param col
     * @param row
     * @param newData
     * @return
     */
    public static Boolean updateRasterTiff(String path, Integer row, Integer col, Double newData) {
        //注册栅格驱动
        gdal.AllRegister();
        gdal.SetConfigOption("gdal_FILENAME_IS_UTF8", "YES");
        Dataset dataset = gdal.Open(path, gdalconst.GA_Update);
        if (null == dataset) {
            System.out.println("打开图像" + path + "失败");
            return false;
        }
        //获取图像大小
        int width = dataset.getRasterXSize();
        int height = dataset.getRasterYSize();

        Band band1 = dataset.GetRasterBand(1);
        double[] doubleArr = new double[width];
        for (int i = 0; i < height; i++) {
            if (row == i) {
                for (int j = 0; j < width; j++) {
                    if (col == j) {
                        //读取影像
                        band1.ReadRaster(0, row, width, 1, doubleArr);
                        doubleArr[j] = newData;
                        //写入影像
                        band1.WriteRaster(0, row, width, 1, doubleArr);
                        //使用FlushCache将数据写入文件
                        dataset.FlushCache();
                        System.out.println("数据集更新完成!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。");
                        return true;
                    }
                }
            }
        }
        System.out.println("未查询到"+row+"行"+col+"列");
        return false;
    }

执行效果

调用函数,将第5行第2列的像素点的值改为9.999(创建时默认为0)

updateRasterTiff("D:\\test.tif", 5, 2, 9.999);
image.png

相关文章

网友评论

    本文标题:【GIS】栅格图像更新(Tiff)

    本文链接:https://www.haomeiwen.com/subject/wzukmrtx.html