1

I am using GDAL in Python to create a tiff raster of data that is originally from a shapefile. I have an auxillary data channel, which I would like to use to color the pixels of the tif. I have made sure that my data (yield_grid) is the same size and shape as my tif raster will be, but so far I am unable to get anything besides an all black square out of my raster.

Does anyone have a suggestion for what I might be doing wrong in assigning my data to my raster band?

# Define pixel_size and NoData value of new raster
pixel_size = 0.00005
NoData_value = -99

# Filename of input OGR file
vector_fn = inShapeFile

# Filename of the raster Tiff that will be created
raster_fn = 'test.tif'

# Open the data source and read in the extent
source_ds = ogr.Open(vector_fn)
source_layer = source_ds.GetLayer()
source_srs = source_layer.GetSpatialRef()
x_min, x_max, y_min, y_max = source_layer.GetExtent()

# Create the destination data source
x_res = int((x_max - x_min) / pixel_size)
y_res = int((y_max - y_min) / pixel_size)

# Get Driver and Create output target
target_ds = gdal.GetDriverByName('GTiff').Create(raster_fn, x_res, y_res,1,gdal.GDT_Byte)

# Set Geo Transform
target_ds.SetGeoTransform((x_min, pixel_size, 0, y_max, 0, -pixel_size))

# Write array into raster band, normalize by max, and scale to 1024
target_ds.GetRasterBand(1).WriteArray(np.transpose(yield_grid/np.max(yield_grid))*1024)

# Set Spatial reference and projection
outRasterSRS = osr.SpatialReference()
outRasterSRS.ImportFromEPSG(4326)
target_ds.SetProjection(outRasterSRS.ExportToWkt())

#Flush Cache for raster band
target_ds.GetRasterBand(1).FlushCache()

# Printing raster band to make sure that I'm not crazy
print target_ds.GetRasterBand(1).ReadAsArray()
[[  0   0   0 ...,  39   2   0][  0   0   0 ...,  80  37   0]
 [  0   0   0 ...,  85  32   0]
 ..., 
 [  0  58 119 ...,   0   0   0]
 [  0   0  82 ...,   0   0   0]
 [  0   0   0 ...,   0   0   0]]

The output at the end of the code shows that I am in fact putting values into the raster band, but I'm not sure why the tiff isn't showing any colors.

1

1 Answer 1

1

I didn't properly close the output target, then this code works... See the answer here

https://gis.stackexchange.com/a/93244/59644

1
  • This is a common GDAL Python Gotcha - you should avoid FlushCache() and instead deallocate the object by del target_ds or target_ds = None.
    – Kersten
    Commented Sep 23, 2015 at 6:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.