我正在使用GDAL API来读取光栅文件...我在某些地方发现python版本有ReadAsArray,我认为这会将光栅文件的数据作为二维数组,是否有类似的C#选项,或者至少你能告诉我怎么做吗?非常感谢!
答案 0 :(得分:7)
在GDAL的C#绑定中没有等效的ReadAsArray函数。 ReadAsArray是可用的,因为GDAL Python绑定应该可以与NumPy定义的阵列协议一起使用,所以这个函数是为了这个特定目的而存在的。
但是,您可以使用Band类的ReadRaster方法将像素读入一维数组,然后迭代这样的一维数组,因为它是二维数组。
我们假设您读取了width x height
维度的带子像素:
byte[] bits = new byte[width * height];
band.ReadRaster(0, 0, width, height, bits, width, height, 0, 0);
现在,您可以根据以下公式计算像素的索引:column + row * width
for (int col = 0; col < width; col++)
{
for (int row = 0; row < height; row++)
{
// equivalent to bits[col][row] if bits is 2-dimension array
byte pixel = bits[col + row * width];
}
}
答案 1 :(得分:0)
Python版本的ReadAsArray(0,0, xsize, ysize)
函数与C#版本的ReadRaster(0,0, ds.RasterXSize, ds.RasterYSize, dstArray, ds.RasterXSize, ds.RasterYSize, 0)
等效。