机翻自https://gdal.org/java/org/gdal/gdal/Dataset.html#WriteRaster_Direct(int,int,int,int,int,int,int,java.nio.ByteBuffer,int%5B%5D)
public int WriteRaster_Direct(int xoff, int yoff, int xsize, int ysize, int buf_xsize, int buf_ysize, int buf_type, java.nio.ByteBuffer nioBuffer, int[] band_list, int nPixelSpace, int nLineSpace, int nBandSpace)
写入来自多个波段的图像数据区域。
此方法允许将数据从缓冲区写入 Band 的区域。 如果缓冲区的数据类型 (buf_type) 与 Band 的不同,它会自动处理数据类型转换。 如果缓冲区大小 (buf_xsize x buf_ysize) 与被访问区域的大小 (xsize x ysize) 不同,该方法还负责图像抽取/复制。
nPixelSpace、nLineSpace 和 nBandSpace 参数允许读取或写入各种缓冲区组织。
要获得最高性能的全分辨率数据访问,请在 Band.GetBlockSize(int[], int[]) 返回的“块边界”上写入,或使用 Band.WriteBlock(int, int, java.nio.ByteBuffer) 方法。
在写入多字节数据类型缓冲区(GDT_Int16, GDT_Int32, GDT_Float32, …)之前,您通常应该使用 nioBuffer.order(ByteOrder.nativeOrder()) 将缓冲区的字节顺序设置为机器的本机顺序( 如果您使用 ByteBuffer 类的 putShort()、putInt()、putFloat() 等方法,则默认值为 BIG_ENDIAN)。
参数:
xoff - 要访问的波段区域左上角的像素偏移量。 从左侧开始,这将是零。
yoff - 要访问的波段区域左上角的线偏移量。 从顶部开始,这将是零。
xsize - 要访问的波段区域的宽度(以像素为单位)。
ysize - 要按行访问的波段区域的高度。
buf_xsize - 从中写入所需区域的缓冲区图像的宽度。
buf_ysize - 从中写入所需区域的缓冲区图像的高度。
buf_type - nioBuffer 数据缓冲区中像素值的类型。 gdalconstConstants.GDT_Byte、gdalconstConstants.GDT_Int16、…之一,像素值将根据需要自动转换为/从 Band 数据类型转换。
nioBuffer - 数据应该被读取或写入的缓冲区。此缓冲区必须至少包含 buf_type 类型的 buf_xsize * buf_ysize * nBandCount 个字。它按从左到右、从上到下的像素顺序排列。间距由 nPixelSpace 和 nLineSpace 参数控制。
band_list - 正在读取/写入的波段编号列表。注意波段编号是从 1 开始的。这可能为空,以选择第一个 nBandCount 波段。
nPixelSpace - 从缓冲区中一个像素值的开始到扫描线中下一个像素值的开始的字节偏移量。如果默认为 (0),则使用数据类型 buf_type 的大小。
nLineSpace - 从缓冲区中一个扫描线的开始到下一个扫描线开始的字节偏移量。如果默认使用数据类型 buf_type * buf_xsize 的大小。
nBandSpace - 从一个波段数据开始到下一个波段数据开始的字节偏移量。如果默认(零),该值将是 nLineSpace * buf_ysize 暗示数据缓冲区的带顺序组织。