GDALRasterizeLayers(): do not emit warning about missing SRS if the target raster dataset has no SRS

Related to https://lists.osgeo.org/pipermail/gdal-dev/2024-December/059948.html
This commit is contained in:
Even Rouault 2024-12-18 17:57:28 +01:00
parent 38253288f0
commit 5ff3f2fe5d
No known key found for this signature in database
GPG Key ID: 33EBBFC47B3DD87D
2 changed files with 18 additions and 11 deletions

View File

@ -1645,11 +1645,17 @@ CPLErr GDALRasterizeLayers(GDALDatasetH hDS, int nBandCount, int *panBandList,
OGRSpatialReference *poSRS = poLayer->GetSpatialRef();
if (!poSRS)
{
CPLError(CE_Warning, CPLE_AppDefined,
"Failed to fetch spatial reference on layer %s "
"to build transformer, assuming matching coordinate "
"systems.",
poLayer->GetLayerDefn()->GetName());
if (poDS->GetSpatialRef() != nullptr ||
poDS->GetGCPSpatialRef() != nullptr ||
poDS->GetMetadata("RPC") != nullptr)
{
CPLError(
CE_Warning, CPLE_AppDefined,
"Failed to fetch spatial reference on layer %s "
"to build transformer, assuming matching coordinate "
"systems.",
poLayer->GetLayerDefn()->GetName());
}
}
else
{

View File

@ -111,6 +111,10 @@ def test_rasterize_2():
burn_values=[200, 220, 240],
options=["ALL_TOUCHED=TRUE"],
)
assert (
"Failed to fetch spatial reference on layer cutline to build transformer, assuming matching coordinate systems"
in gdal.GetLastErrorMsg()
)
assert err == 0, "got non-zero result code from RasterizeLayer"
@ -130,20 +134,15 @@ def test_rasterize_2():
def test_rasterize_3():
# Setup working spatial reference
sr_wkt = 'LOCAL_CS["arbitrary"]'
sr = osr.SpatialReference(sr_wkt)
# Create a memory raster to rasterize into.
target_ds = gdal.GetDriverByName("MEM").Create("", 100, 100, 3, gdal.GDT_Byte)
target_ds.SetGeoTransform((1000, 1, 0, 1100, 0, -1))
target_ds.SetProjection(sr_wkt)
# Create a memory layer to rasterize from.
rast_ogr_ds = ogr.GetDriverByName("Memory").CreateDataSource("wrk")
rast_mem_lyr = rast_ogr_ds.CreateLayer("poly", srs=sr)
rast_mem_lyr = rast_ogr_ds.CreateLayer("poly")
# Add polygons and linestrings.
wkt_geom = [
@ -160,6 +159,7 @@ def test_rasterize_3():
# Run the algorithm.
gdal.ErrorReset()
err = gdal.RasterizeLayer(
target_ds,
[3, 2, 1],
@ -167,6 +167,7 @@ def test_rasterize_3():
burn_values=[10, 10, 55],
options=["BURN_VALUE_FROM=Z"],
)
assert gdal.GetLastErrorMsg() == ""
assert err == 0, "got non-zero result code from RasterizeLayer"