if (!PG_ARGISNULL(3))
exclude_nodata_value = PG_GETARG_BOOL(3);
+ /* SRIDs of raster and geometry must match */
+ if (gserialized_get_srid(geom) != rt_raster_get_srid(raster)) {
+ elog(NOTICE, "SRIDs of geometry and raster do not match");
+ rt_raster_destroy(raster);
+ PG_RETURN_NULL();
+ }
+
/* get band */
band = rt_raster_get_band(raster, bandindex - 1);
if (!band) {
exclude_nodata_value boolean DEFAULT TRUE
)
RETURNS double precision
- AS $$ SELECT st_nearestvalue($1, $2, st_makepoint(st_raster2worldcoordx($1, $3, $4), st_raster2worldcoordy($1, $3, $4)), $5) $$
+ AS $$ SELECT st_nearestvalue($1, $2, st_setsrid(st_makepoint(st_raster2worldcoordx($1, $3, $4), st_raster2worldcoordy($1, $3, $4)), st_srid($1)), $5) $$
LANGUAGE 'SQL' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION st_nearestvalue(
exclude_nodata_value boolean DEFAULT TRUE
)
RETURNS double precision
- AS $$ SELECT st_nearestvalue($1, 1, st_makepoint(st_raster2worldcoordx($1, $2, $3), st_raster2worldcoordy($1, $2, $3)), $4) $$
+ AS $$ SELECT st_nearestvalue($1, 1, st_setsrid(st_makepoint(st_raster2worldcoordx($1, $2, $3), st_raster2worldcoordy($1, $2, $3)), st_srid($1)), $4) $$
LANGUAGE 'SQL' IMMUTABLE STRICT;
-----------------------------------------------------------------------