first thing,
osgeo.gdal
is for pure Python scripting:from osgeo import gdal raster = gdal.Open('your.tif') raster.GetProjection()
Everything else is a problem of osgeo, and not of PyQGIS, since you use 2 QGIS existing layers:
##raster_1=raster
##raster_2=raster
you don't need it. To process the layers, the correct code is:
raster_1 = processing.getobject(raster_1)
raster_2 = processing.getobject(raster_2)
an the crs is given by:
new_proj = raster.crs()
- second thing, you cannot load a raster in QGIS without projection (if not yet existing, it is chosen by QGIS, according to some criteria):
So your first condition if proj is None:
, is unnecessary and your script become (you don't need a list with only two layers):
raster_1 = processing.getobject(raster_1)
raster_2 = processing.getobject(raster_2)
if raster_1.crs()==raster_2.crs():
action
else:
WrongCRS()
and the script terminate by himself.
in the last version of the processing module, it is now:
processing.getObjects()
For terminate the script, you can embed your script in a function and use sys.exitfunc()
(I use the Python console to to see the results)
example:
import atexit
.....
def all_done():
message = '- Rasters must have the same CRS!\n\nExecution cancelled!'
print message
atexit.register(all_done)
raster_1 = processing.getObject(raster_1)
raster_2 = processing.getObject(raster_2)
def main():
if raster_1.crs() != raster_2.crs():
sys.exitfunc()
else:
message = "ok"
print message
continue
main()
Result in the Python console: