Ejemplo n.º 1
0
static _rti_colormap_arg
_rti_colormap_arg_init(rt_raster raster) {
	_rti_colormap_arg arg = NULL;

	arg = rtalloc(sizeof(struct _rti_colormap_arg_t));
	if (arg == NULL) {
		rterror("_rti_colormap_arg_init: Could not allocate memory for _rti_color_arg");
		return NULL;
	}

	arg->band = NULL;
	arg->nodataentry = NULL;
	arg->hasnodata = 0;
	arg->nodataval = 0;

	if (raster == NULL)
		arg->raster = NULL;
	/* raster provided */
	else {
		arg->raster = rt_raster_clone(raster, 0);
		if (arg->raster == NULL) {
			rterror("_rti_colormap_arg_init: Could not create output raster");
			return NULL;
		}
	}

	arg->nexpr = 0;
	arg->expr = NULL;

	arg->npos = 0;
	arg->pos = NULL;

	return arg;
}
Ejemplo n.º 2
0
static void test_raster_clone() {
	rt_raster rast1;
	rt_raster rast2;
	rt_band band;

	int maxX = 5;
	int maxY = 5;
	double gt[6];

	rast1 = rt_raster_new(maxX, maxY);
	CU_ASSERT(rast1 != NULL);

	rt_raster_set_offsets(rast1, 0, 0);
	rt_raster_set_scale(rast1, 1, -1);
	rt_raster_set_srid(rast1, 4326);

	band = cu_add_band(rast1, PT_32BUI, 1, 6);
	CU_ASSERT(band != NULL);

	/* clone without bands */
	rast2 = rt_raster_clone(rast1, 0);
	CU_ASSERT(rast2 != NULL);
	CU_ASSERT_EQUAL(rt_raster_get_num_bands(rast2), 0);

	rt_raster_get_geotransform_matrix(rast2, gt);
	CU_ASSERT_EQUAL(rt_raster_get_srid(rast2), 4326);
	CU_ASSERT_DOUBLE_EQUAL(gt[0], 0, DBL_EPSILON);
	CU_ASSERT_DOUBLE_EQUAL(gt[1], 1, DBL_EPSILON);
	CU_ASSERT_DOUBLE_EQUAL(gt[2], 0, DBL_EPSILON);
	CU_ASSERT_DOUBLE_EQUAL(gt[3], 0, DBL_EPSILON);
	CU_ASSERT_DOUBLE_EQUAL(gt[4], 0, DBL_EPSILON);
	CU_ASSERT_DOUBLE_EQUAL(gt[5], -1, DBL_EPSILON);

	cu_free_raster(rast2);

	/* clone with bands */
	rast2 = rt_raster_clone(rast1, 1);
	CU_ASSERT(rast2 != NULL);
	CU_ASSERT_EQUAL(rt_raster_get_num_bands(rast2), 1);

	cu_free_raster(rast2);
	cu_free_raster(rast1);
}