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

主要函数

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容