Han*_*gzu 4 python arrays gis tiff raster
有一个形状为 (100, 100) 的二维数组,我想将它以.tiff
格式保存到光栅文件中。
我可以使用gdal
包来读取tiff
已经存在的文件。但是我仍然找不到将二维数组转换为 tiff 文件的简单方法。
使用plt.imsave("xx.tif",array)
或
def array_to_raster(array):
"""Array > Raster
Save a raster from a C order array.
:param array: ndarray
"""
dst_filename = 'xxx.tiff'
x_pixels = 100 # number of pixels in x
y_pixels = 100 # number of pixels in y
driver = gdal.GetDriverByName('GTiff')
dataset = driver.Create(
dst_filename,
x_pixels,
y_pixels,
1,
gdal.GDT_Float32, )
dataset.GetRasterBand(1).WriteArray(array)
dataset.FlushCache() # Write to disk.
return dataset, dataset.GetRasterBand(1)
Run Code Online (Sandbox Code Playgroud)
他们都没有达到我的目标。第二种方法是从这里改编的,它可以将数组转换为geotiff
带有投影的数组。
有一些简单的方法来保存数组.tiff
,这样我就可以通过进口称之为tiff
文件下一次。
任何建议将不胜感激。
可以将 tif 栅格视为“数组 + 投影 + 地理变换”。如果你想写一个数组到tif,可以参考下面的代码
dst_filename = 'xxx.tiff'
x_pixels = 100 # number of pixels in x
y_pixels = 100 # number of pixels in y
driver = gdal.GetDriverByName('GTiff')
dataset = driver.Create(dst_filename,x_pixels, y_pixels, 1,gdal.GDT_Float32)
dataset.GetRasterBand(1).WriteArray(array)
# follow code is adding GeoTranform and Projection
geotrans=data0.GetGeoTransform() #get GeoTranform from existed 'data0'
proj=data0.GetProjection() #you can get from a exsited tif or import
outds.SetGeoTransform(geotrans)
outds.SetProjection(proj)
outds.FlushCache()
outds=None
Run Code Online (Sandbox Code Playgroud)