PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ 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
Definition: rtpg_pixel.c:1275
#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:2612
uint16_t rasters
Definition: librtcore.h:2604
rtpg_setvaluesgv_geomval gv
Definition: rtpg_pixel.c:1280
struct rtpg_setvaluesgv_geomval_t::@27 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, genraster::value, and rt_iterator_arg_t::values.

Referenced by RASTER_setPixelValuesGeomval().

Here is the caller graph for this function: