PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ rtpg_setvalues_geomval_callback()

static int rtpg_setvalues_geomval_callback ( rt_iterator_arg  arg,
void *  userarg,
double *  value,
int *  nodata 
)
static

Definition at line 1326 of file rtpg_pixel.c.

1329 {
1330 rtpg_setvaluesgv_arg funcarg = (rtpg_setvaluesgv_arg) userarg;
1331 int i = 0;
1332 int j = 0;
1333
1334 *value = 0;
1335 *nodata = 0;
1336
1337 POSTGIS_RT_DEBUGF(4, "keepnodata = %d", funcarg->keepnodata);
1338
1339 /* keepnodata = TRUE */
1340 if (funcarg->keepnodata && arg->nodata[0][0][0]) {
1341 POSTGIS_RT_DEBUG(3, "keepnodata = 1 AND source raster pixel is NODATA");
1342 *nodata = 1;
1343 return 1;
1344 }
1345
1346 for (i = arg->rasters - 1, j = funcarg->ngv - 1; i > 0; i--, j--) {
1347 POSTGIS_RT_DEBUGF(4, "checking raster %d", i);
1348
1349 /* mask is NODATA */
1350 if (arg->nodata[i][0][0])
1351 continue;
1352 /* mask is NOT NODATA */
1353 else {
1354 POSTGIS_RT_DEBUGF(4, "Using information from geometry %d", j);
1355
1356 if (funcarg->gv[j].pixval.nodata)
1357 *nodata = 1;
1358 else
1359 *value = funcarg->gv[j].pixval.value;
1360
1361 return 1;
1362 }
1363 }
1364
1365 POSTGIS_RT_DEBUG(4, "Using information from source raster");
1366
1367 /* still here */
1368 if (arg->nodata[0][0][0])
1369 *nodata = 1;
1370 else
1371 *value = arg->values[0][0][0];
1372
1373 return 1;
1374}
int value
Definition genraster.py:62
struct rtpg_setvaluesgv_arg_t * rtpg_setvaluesgv_arg
#define POSTGIS_RT_DEBUG(level, msg)
Definition rtpostgis.h:65
#define POSTGIS_RT_DEBUGF(level, msg,...)
Definition rtpostgis.h:69
double *** values
Definition librtcore.h:2675
rtpg_setvaluesgv_geomval gv
struct rtpg_setvaluesgv_geomval_t::@28 pixval

References rtpg_setvaluesgv_arg_t::gv, rtpg_setvaluesgv_arg_t::keepnodata, rtpg_setvaluesgv_arg_t::ngv, rt_iterator_arg_t::nodata, rtpg_setvaluesgv_geomval_t::nodata, rtpg_setvaluesgv_geomval_t::pixval, POSTGIS_RT_DEBUG, POSTGIS_RT_DEBUGF, rt_iterator_arg_t::rasters, rtpg_setvaluesgv_geomval_t::value, and rt_iterator_arg_t::values.

Referenced by RASTER_setPixelValuesGeomval().

Here is the caller graph for this function: