Geographic Information Systems Asked by dof1985 on April 10, 2021
I have a vector layer projected in WGS84. I would like to use gdal.rasterizeLayer()
from the python console to convert it to a raster. I would like to burn values from a field. I followed the gdal cookbook and adjusted the code based on the answer to this thread.
Here is the code I used:
import math
import os
from osgeo import ogr, gdal
# 1. Define pixel_size and NoData value of new raster
NoData_value = -9999
x_res = 0.5 # assuming these are the cell sizes
y_res = 0.5 # change as appropriate
pixel_size = 1
# 2. Filenames for in- and output
_in = "D:...polyTry.shp"
_out = "D:...poly2.tif "
# 3. Open Shapefile
source_ds = ogr.Open(_in)
source_layer = source_ds.GetLayer()
x_min, x_max, y_min, y_max = source_layer.GetExtent()
# 4. Create Target - TIFF
cols = int(math.ceil((x_max - x_min) / x_res ))
rows = int(math.ceil((y_max - y_min) / y_res ))
_raster = gdal.GetDriverByName('GTiff').Create(_out, cols, rows, 1, gdal.GDT_Byte)
_raster.SetProjection(source_layer.GetSpatialRef().ExportToWkt())
_raster.SetGeoTransform((x_min, x_res, 0, y_max, 0, -y_res))
_band = _raster.GetRasterBand(1)
_band.SetNoDataValue(NoData_value)
# 5. Rasterize why is the burn value 0... isn't that the same as the background?
gdal.RasterizeLayer(_raster, [1], source_layer, options = ["ALL_TOUCHED=TRUE", "ATTRIBUTE=id"])
The photo below show the output raster with the green input polygons. Note the Nan
values on the left (legend). I also inspected different x, y_resolutions (0.00416, 0.0833333). Additional attempts include creating a floating point and integer raster at both 32 and 64 bit (signed, e.g. gdal.GDT_Float64
). All have failed and produced Nan
values.
Also note that burn_values = [1]
create a raster with all values set to 0.
How can it be solved ?
Try to define: _raster = None
..in the end to close the new raster dataset.
Answered by Katri Tegel on April 10, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP