Hi,
I apologize for my clumsiness as the source layer is definitely of the raster type as mentioned in the initial paragraph (just made an error while substituting the layer name in the code with a more general label, so it should have read my_input_raster_layer where previously typed my_input_vector_layer). Anyway, I tried your suggestion and made 'options' a keyword argument rather than a positional one:
            options = gdal.WarpOptions(dstSRS=target_PROJ)
warp = gdal.Warp('/home/ubuntu/my_new_raster.tif', my_input_raster_layer, options=options)
            warp = None
This got over the previous error but generated a new one that I have been trying to figure out all day long: File "/usr/lib/python3/dist-packages/osgeo/gdal.py", line 1116, in Warp return wrapper_GDALWarpDestName(destNameOrDestDS, srcDSTab, opts, callback, callback_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/osgeo/gdal.py", line 6110, in wrapper_GDALWarpDestName
    return _gdal.wrapper_GDALWarpDestName(*args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: object of wrong GDALDatasetShadow
I don't understand if this new error is due to some syntax mishap at my end (have tried several variations) or if the source raster layer needs to meet some specific requirements.
Thanks.


On 2025-10-03 16:35, ky wrote:
Hi,
I don't really know what you are trying to do with a vector layer as
input for gdal.Warp as it is used more like a cutline to clip a raster
rather as an input, as gdal.Warp expects a raster input/output but
to make it work you must pass options as keyword argument, not as
positional argument, like bellow:

warp = gdal.Warp('/home/ubuntu/pepe.tif', my_input_vector_layer,
options=options)

Hope it helps!

On Fri, Oct 3, 2025 at 1:01 PM AF via gdal-dev
<[email protected]> wrote:

Hello,
A PyQGIS code needs to reproject one raster layer from a CRS to a
new
one. To begin with, I've tried to use only the minimal required
options
so the snippet reads:
parameters = {
'INPUT': my_input_vector_layer,
'SOURCE_CRS':
QgsCoordinateReferenceSystem(source_PROJ),
'TARGET_CRS':
QgsCoordinateReferenceSystem(target_PROJ),
'RESAMPLING': 1,
'DATA_TYPE': 4,
'OUTPUT': '/home/ubuntu/my_new_raster.tif'
}
terrain = processing.run('gdal:warpreproject',
parameters)
However, this doesn't do much as terrain is simply a dictionary with
the
keyword 'OUTPUT' and my_new_raster.tif is never created. Obviously I

must be doing something wrong and suspect that might be related to
'OUTPUT'. The documentation at

https://docs.qgis.org/testing/en/docs/user_manual/processing/toolbox.html#output-parameter-widget

didn't dissipate my doubts so I'm unsure how to proceed.
I also tried (an alternative method) calling gdal.Warp directly (not

sure if this method is preferable to using processing.run) but it
keeps
saying that it only takes 2 arguments. I found a few examples online
but
they all have more than 2 arguments. For example
options = gdal.WarpOptions(dstSRS=target_PROJ)
warp = gdal.Warp('/home/ubuntu/pepe.tif',
my_input_vector_layer, options)
warp = None
complains about including 3 and not 2 arguments. Same if I try
including
all arguments at warp.
Thanks.
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to