353 {
356
359 const uint32_t width = 100;
360 const uint32_t height = 100;
363 int v;
364 double values[width][height];
365 int rtn = 0;
367
368 GDALDriverH gddrv = NULL;
369 int destroy = 0;
370 GDALDatasetH gdds = NULL;
371
373 CU_ASSERT(raster != NULL);
374
376 CU_ASSERT(band != NULL);
377
378 for (x = 0;
x < width;
x++) {
379 for (y = 0;
y < height;
y++) {
380 values[
x][
y] = (((double) x * y) + (
x +
y) + (x + y * x)) / (x + y + 1);
382 }
383 }
384
386 CU_ASSERT(gddrv != NULL);
387 CU_ASSERT(gdds != NULL);
388 CU_ASSERT_EQUAL((uint32_t)GDALGetRasterXSize(gdds), width);
389 CU_ASSERT_EQUAL((uint32_t)GDALGetRasterYSize(gdds), height);
390
392 CU_ASSERT(rast != NULL);
394
396 CU_ASSERT(band != NULL);
397
398 for (x = 0;
x < width;
x++) {
399 for (y = 0;
y < height;
y++) {
402 CU_ASSERT_DOUBLE_EQUAL(value, values[x][y], DBL_EPSILON);
403 }
404 }
405
406 if (destroy && gddrv) {
407 GDALDeregisterDriver(gddrv);
408 GDALDestroyDriver(gddrv);
409 }
410 GDALClose(gdds);
411 gdds = NULL;
412 gddrv = NULL;
413
416
418 CU_ASSERT(raster != NULL);
419
422 CU_ASSERT(band != NULL);
423
424 v = -127;
425 for (x = 0;
x < width;
x++) {
426 for (y = 0;
y < height;
y++) {
429 if (v == 128)
430 v = -127;
431 }
432 }
433
435 CU_ASSERT(gddrv != NULL);
436 CU_ASSERT(gdds != NULL);
437 CU_ASSERT_EQUAL((uint32_t)GDALGetRasterXSize(gdds), width);
438 CU_ASSERT_EQUAL((uint32_t)GDALGetRasterYSize(gdds), height);
439
441 CU_ASSERT(rast != NULL);
443
445 CU_ASSERT(band != NULL);
446#if POSTGIS_GDAL_VERSION < 30700
448#else
450#endif
451 for (x = 0;
x < width;
x++) {
452 for (y = 0;
y < height;
y++) {
454#if POSTGIS_GDAL_VERSION < 30700
455 CU_ASSERT_DOUBLE_EQUAL(value, values[x][y], 1.);
456 CU_ASSERT_DOUBLE_EQUAL(value, values[x][y], DBL_EPSILON);
457#else
459 CU_ASSERT_DOUBLE_EQUAL(value, values[x][y], DBL_EPSILON);
460#endif
461 }
462 }
463 if (destroy && gddrv) {
464 GDALDeregisterDriver(gddrv);
465 GDALDestroyDriver(gddrv);
466 }
467
468 GDALClose(gdds);
469 gdds = NULL;
470 gddrv = NULL;
471
474}
rt_errorstate rt_band_get_pixel(rt_band band, int x, int y, double *value, int *nodata)
Get pixel value.
rt_raster rt_raster_new(uint32_t width, uint32_t height)
Construct a raster with given dimensions.
rt_raster rt_raster_from_gdal_dataset(GDALDatasetH ds)
Return a raster from a GDAL dataset.
rt_errorstate rt_band_set_pixel(rt_band band, int x, int y, double val, int *converted)
Set single pixel's value.
uint16_t rt_raster_get_num_bands(rt_raster raster)
rt_pixtype rt_band_get_pixtype(rt_band band)
Return pixeltype of this band.
GDALDatasetH rt_raster_to_gdal_mem(rt_raster raster, const char *srs, uint32_t *bandNums, int *excludeNodataValues, int count, GDALDriverH *rtn_drv, int *destroy_rtn_drv)
Return GDAL dataset using GDAL MEM driver from raster.
rt_band rt_raster_get_band(rt_raster raster, int bandNum)
Return Nth band, or NULL if unavailable.
raster
Be careful!! Zeros function's input parameter can be a (height x width) array, not (width x height): ...
rt_band cu_add_band(rt_raster raster, rt_pixtype pixtype, int hasnodata, double nodataval)
void cu_free_raster(rt_raster raster)