909         const uint32_t set_count = 2;
 
  911         int pgrastpos[2] = {-1, -1};
 
  913         uint32_t bandindex[2] = {0};
 
  914         uint32_t hasbandindex[2] = {0};
 
  924         for (i = 0, j = 0; i < set_count; i++) {
 
  926                 if (PG_ARGISNULL(j)) {
 
  927                         for (k = 0; k < i; k++) {
 
  929                                 PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
  933                 pgrast[i] = (
rt_pgraster *) PG_DETOAST_DATUM(PG_GETARG_DATUM(j));
 
  940                         for (k = 0; k <= i; k++) {
 
  943                                 PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
  945                         elog(ERROR, 
"RASTER_dwithin: Could not deserialize the %s raster", i < 1 ? 
"first" : 
"second");
 
  952                         elog(NOTICE, 
"The %s raster provided has no bands", i < 1 ? 
"first" : 
"second");
 
  954                         for (k = 0; k < i; k++) {
 
  956                                 PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
  962                 if (!PG_ARGISNULL(j)) {
 
  963                         bandindex[i] = PG_GETARG_INT32(j);
 
  964                         if (bandindex[i] < 1 || bandindex[i] > numBands) {
 
  965                                 elog(NOTICE, 
"Invalid band index (must use 1-based) for the %s raster. Returning NULL", i < 1 ? 
"first" : 
"second");
 
  967                                 for (k = 0; k < i; k++) {
 
  969                                         PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
  983         if (PG_ARGISNULL(4)) {
 
  984                 elog(NOTICE, 
"Distance cannot be NULL.  Returning NULL");
 
  985                 for (k = 0; k < set_count; k++) {
 
  987                         PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
  994                 elog(NOTICE, 
"Distance cannot be less than zero.  Returning NULL");
 
  995                 for (k = 0; k < set_count; k++) {
 
  997                         PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
 1004                 (hasbandindex[0] && !hasbandindex[1]) ||
 
 1005                 (!hasbandindex[0] && hasbandindex[1])
 
 1007                 elog(NOTICE, 
"Missing band index.  Band indices must be provided for both rasters if any one is provided");
 
 1008                 for (k = 0; k < set_count; k++) {
 
 1010                         PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
 1017                 for (k = 0; k < set_count; k++) {
 
 1019                         PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
 1021                 elog(ERROR, 
"The two rasters provided have different SRIDs");
 
 1026                 rast[0], (hasbandindex[0] ? (
int)bandindex[0] - 1 : -1),
 
 1027                 rast[1], (hasbandindex[1] ? (
int)bandindex[1] - 1 : -1),
 
 1031         for (k = 0; k < set_count; k++) {
 
 1033                 PG_FREE_IF_COPY(pgrast[k], pgrastpos[k]);
 
 1037                 elog(ERROR, 
"RASTER_dwithin: Could not test that the two rasters are within the specified distance of each other");
 
char result[OUT_DOUBLE_BUFFER_SIZE]
int32_t rt_raster_get_srid(rt_raster raster)
Get raster's SRID.
void rt_raster_destroy(rt_raster raster)
Release memory associated to a raster.
uint16_t rt_raster_get_num_bands(rt_raster raster)
rt_errorstate rt_raster_within_distance(rt_raster rast1, int nband1, rt_raster rast2, int nband2, double distance, int *dwithin)
Return ES_ERROR if error occurred in function.
rt_raster rt_raster_deserialize(void *serialized, int header_only)
Return a raster from a serialized form.
static double distance(double x1, double y1, double x2, double y2)
#define POSTGIS_RT_DEBUGF(level, msg,...)