답변:
gdal.band.WriteArray 메소드가 필요합니다. 의 예를 들어 있습니다 GDAL의 API 튜토리얼 (아래 복제) :
format = "GTiff"
driver = gdal.GetDriverByName( format )
dst_ds = driver.Create( dst_filename, 512, 512, 1, gdal.GDT_Byte )
dst_ds.SetGeoTransform( [ 444720, 30, 0, 3751320, 0, -30 ] )
srs = osr.SpatialReference()
srs.SetUTM( 11, 1 )
srs.SetWellKnownGeogCS( 'NAD27' )
dst_ds.SetProjection( srs.ExportToWkt() )
raster = numpy.zeros( (512, 512), dtype=numpy.uint8 )
dst_ds.GetRasterBand(1).WriteArray( raster )
# Once we're done, close properly the dataset
dst_ds = None
랜덤 데이터를 생성하려면 numpy.random 모듈을 확인하십시오.
보다 완전한 작업 예는 다음과 같습니다.
from osgeo import gdal, osr
import numpy
dst_filename = '/tmp/test.tif'
#output to special GDAL "in memory" (/vsimem) path just for testing
#dst_filename = '/vsimem/test.tif'
#Raster size
nrows=1024
ncols=512
nbands=7
#min & max random values of the output raster
zmin=0
zmax=12345
## See http://gdal.org/python/osgeo.gdal_array-module.html#codes
## for mapping between gdal and numpy data types
gdal_datatype = gdal.GDT_UInt16
np_datatype = numpy.uint16
driver = gdal.GetDriverByName( "GTiff" )
dst_ds = driver.Create( dst_filename, ncols, nrows, nbands, gdal_datatype )
## These are only required if you wish to georeference (http://en.wikipedia.org/wiki/Georeference)
## your output geotiff, you need to know what values to input, don't just use the ones below
#Coordinates of the upper left corner of the image
#in same units as spatial reference
#xmin=147.2
#ymax=-34.54
#Cellsize in same units as spatial reference
#cellsize=0.01
#dst_ds.SetGeoTransform( [ xmin, cellsize, 0, ymax, 0, -cellsize ] )
#srs = osr.SpatialReference()
#srs.SetWellKnownGeogCS("WGS84")
#dst_ds.SetProjection( srs.ExportToWkt() )
raster = numpy.random.randint(zmin,zmax, (nbands, nrows, ncols)).astype(np_datatype )
for band in range(nbands):
dst_ds.GetRasterBand(band+1).WriteArray( raster[band, :, :] )
# Once we're done, close properly the dataset
dst_ds = None
나는 그것이 당신이 요구 한 것이 아니라는 것을 알고 있지만, 원하는 모든 것이 다중 스펙트럼 또는 초 분광 샘플 데이터라면 Opticks 프로젝트에 대한 이 테스트 데이터 가 작동 할 수 있습니다. 또는 Earth Explorer 에서 직접 LANDSAT 데이터를 얻을 수 있습니다 .
이 사이트 에는 2D numpy 배열을 단일 대역 geoTIFF로 변환하고 다중 대역 geoTIFF를 3D numpy 배열로 변환하는 예제 코드가 있습니다.
편집하다:
추가 연구는 '결측 예'인 3D numpy array-> multi-band geoTIFF 가있는 예제 코드 페이지를 찾습니다 .