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

◆ test_raster_geos_covers()

static void test_raster_geos_covers ( )
static

Definition at line 2083 of file cu_spatial_relationship.c.

2083 {
2084 rt_raster rast1;
2085 rt_raster rast2;
2086 rt_band band1;
2087 rt_band band2;
2088 double nodata;
2089 int rtn;
2090 int result;
2091
2092 /*
2093 rast1
2094
2095 (-1, -1)
2096 +-+-+
2097 |1|1|
2098 +-+-+
2099 |1|1|
2100 +-+-+
2101 (1, 1)
2102 */
2103 rast1 = rt_raster_new(2, 2);
2104 CU_ASSERT(rast1 != NULL);
2105 rt_raster_set_scale(rast1, 1, 1);
2106 rt_raster_set_offsets(rast1, -1, -1);
2107
2108 band1 = cu_add_band(rast1, PT_8BUI, 1, 0);
2109 CU_ASSERT(band1 != NULL);
2110 rt_band_set_nodata(band1, 0, NULL);
2111 rtn = rt_band_set_pixel(band1, 0, 0, 1, NULL);
2112 rtn = rt_band_set_pixel(band1, 0, 1, 1, NULL);
2113 rtn = rt_band_set_pixel(band1, 1, 0, 1, NULL);
2114 rtn = rt_band_set_pixel(band1, 1, 1, 1, NULL);
2115
2116 rt_band_get_nodata(band1, &nodata);
2117 CU_ASSERT_EQUAL(nodata, 0);
2118
2119 rtn = rt_raster_covers(
2120 rast1, 0,
2121 rast1, 0,
2122 &result
2123 );
2124 CU_ASSERT_EQUAL(rtn, ES_NONE);
2125 CU_ASSERT_EQUAL(result, 1);
2126
2127 /*
2128 rast2
2129
2130 (0, 0)
2131 +-+-+
2132 |1|1|
2133 +-+-+
2134 |1|1|
2135 +-+-+
2136 (2, 2)
2137 */
2138 rast2 = rt_raster_new(2, 2);
2139 CU_ASSERT(rast2 != NULL);
2140 rt_raster_set_scale(rast2, 1, 1);
2141
2142 band2 = cu_add_band(rast2, PT_8BUI, 1, 0);
2143 CU_ASSERT(band2 != NULL);
2144 rt_band_set_nodata(band2, 0, NULL);
2145 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2146 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2147 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2148 rtn = rt_band_set_pixel(band2, 1, 1, 1, NULL);
2149
2150 rt_band_get_nodata(band2, &nodata);
2151 CU_ASSERT_EQUAL(nodata, 0);
2152
2153 rtn = rt_raster_covers(
2154 rast1, 0,
2155 rast2, 0,
2156 &result
2157 );
2158 CU_ASSERT_EQUAL(rtn, ES_NONE);
2159 CU_ASSERT_NOT_EQUAL(result, 1);
2160
2161 rtn = rt_raster_covers(
2162 rast1, -1,
2163 rast2, -1,
2164 &result
2165 );
2166 CU_ASSERT_EQUAL(rtn, ES_NONE);
2167 CU_ASSERT_NOT_EQUAL(result, 1);
2168
2169 /*
2170 rast2
2171
2172 (0, 0)
2173 +-+-+
2174 |0|1|
2175 +-+-+
2176 |1|1|
2177 +-+-+
2178 (2, 2)
2179 */
2180 rtn = rt_band_set_pixel(band2, 0, 0, 0, NULL);
2181
2182 rtn = rt_raster_covers(
2183 rast1, 0,
2184 rast2, 0,
2185 &result
2186 );
2187 CU_ASSERT_EQUAL(rtn, ES_NONE);
2188 CU_ASSERT_NOT_EQUAL(result, 1);
2189
2190 /*
2191 rast2
2192
2193 (0, 0)
2194 +-+-+
2195 |1|0|
2196 +-+-+
2197 |1|1|
2198 +-+-+
2199 (2, 2)
2200 */
2201 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2202 rtn = rt_band_set_pixel(band2, 1, 0, 0, NULL);
2203
2204 rtn = rt_raster_covers(
2205 rast1, 0,
2206 rast2, 0,
2207 &result
2208 );
2209 CU_ASSERT_EQUAL(rtn, ES_NONE);
2210 CU_ASSERT_NOT_EQUAL(result, 1);
2211
2212 /*
2213 rast2
2214
2215 (0, 0)
2216 +-+-+
2217 |0|0|
2218 +-+-+
2219 |0|1|
2220 +-+-+
2221 (2, 2)
2222 */
2223 rtn = rt_band_set_pixel(band2, 0, 0, 0, NULL);
2224 rtn = rt_band_set_pixel(band2, 1, 0, 0, NULL);
2225 rtn = rt_band_set_pixel(band2, 0, 1, 0, NULL);
2226
2227 rtn = rt_raster_covers(
2228 rast1, 0,
2229 rast2, 0,
2230 &result
2231 );
2232 CU_ASSERT_EQUAL(rtn, ES_NONE);
2233 CU_ASSERT_NOT_EQUAL(result, 1);
2234
2235 /*
2236 rast2
2237
2238 (0, 0)
2239 +-+-+
2240 |0|0|
2241 +-+-+
2242 |0|0|
2243 +-+-+
2244 (2, 2)
2245 */
2246 rtn = rt_band_set_pixel(band2, 0, 0, 0, NULL);
2247 rtn = rt_band_set_pixel(band2, 1, 0, 0, NULL);
2248 rtn = rt_band_set_pixel(band2, 0, 1, 0, NULL);
2249 rtn = rt_band_set_pixel(band2, 1, 1, 0, NULL);
2250
2251 rtn = rt_raster_covers(
2252 rast1, 0,
2253 rast2, 0,
2254 &result
2255 );
2256 CU_ASSERT_EQUAL(rtn, ES_NONE);
2257 CU_ASSERT_NOT_EQUAL(result, 1);
2258
2259 /*
2260 rast2
2261
2262 (2, 0)
2263 +-+-+
2264 |1|1|
2265 +-+-+
2266 |1|1|
2267 +-+-+
2268 (4, 2)
2269 */
2270 rt_raster_set_offsets(rast2, 2, 0);
2271
2272 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2273 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2274 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2275 rtn = rt_band_set_pixel(band2, 1, 1, 1, NULL);
2276
2277 rtn = rt_raster_covers(
2278 rast1, 0,
2279 rast2, 0,
2280 &result
2281 );
2282 CU_ASSERT_EQUAL(rtn, ES_NONE);
2283 CU_ASSERT_NOT_EQUAL(result, 1);
2284
2285 /*
2286 rast2
2287
2288 (0, 1)
2289 +-+-+
2290 |1|1|
2291 +-+-+
2292 |1|1|
2293 +-+-+
2294 (2, 3)
2295 */
2296 rt_raster_set_offsets(rast2, 0, 1);
2297
2298 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2299 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2300 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2301 rtn = rt_band_set_pixel(band2, 1, 1, 1, NULL);
2302
2303 rtn = rt_raster_covers(
2304 rast1, 0,
2305 rast2, 0,
2306 &result
2307 );
2308 CU_ASSERT_EQUAL(rtn, ES_NONE);
2309 CU_ASSERT_NOT_EQUAL(result, 1);
2310
2311 /*
2312 rast2
2313
2314 (-1, 1)
2315 +-+-+
2316 |1|1|
2317 +-+-+
2318 |1|1|
2319 +-+-+
2320 (1, 3)
2321 */
2322 rt_raster_set_offsets(rast2, -1, 1);
2323
2324 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2325 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2326 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2327 rtn = rt_band_set_pixel(band2, 1, 1, 1, NULL);
2328
2329 rtn = rt_raster_covers(
2330 rast1, 0,
2331 rast2, 0,
2332 &result
2333 );
2334 CU_ASSERT_EQUAL(rtn, ES_NONE);
2335 CU_ASSERT_NOT_EQUAL(result, 1);
2336
2337 /*
2338 rast2
2339
2340 (0.1, 0.1)
2341 +-+-+
2342 |1|1|
2343 +-+-+
2344 |1|1|
2345 +-+-+
2346 (0.9, 0.9)
2347 */
2348 rt_raster_set_offsets(rast2, 0.1, 0.1);
2349 rt_raster_set_scale(rast2, 0.4, 0.4);
2350
2351 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2352 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2353 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2354 rtn = rt_band_set_pixel(band2, 1, 1, 1, NULL);
2355
2356 rtn = rt_raster_covers(
2357 rast1, 0,
2358 rast2, 0,
2359 &result
2360 );
2361 CU_ASSERT_EQUAL(rtn, ES_NONE);
2362 CU_ASSERT_EQUAL(result, 1);
2363
2364 /*
2365 rast2
2366
2367 (-0.1, 0.1)
2368 +-+-+
2369 |1|1|
2370 +-+-+
2371 |1|1|
2372 +-+-+
2373 (0.9, 0.9)
2374 */
2375 rt_raster_set_offsets(rast2, -0.1, 0.1);
2376
2377 rtn = rt_raster_covers(
2378 rast1, 0,
2379 rast2, 0,
2380 &result
2381 );
2382 CU_ASSERT_EQUAL(rtn, ES_NONE);
2383 CU_ASSERT_EQUAL(result, 1);
2384
2385 cu_free_raster(rast2);
2386
2387 /*
2388 rast2
2389
2390 (0, 0)
2391 +-+-+-+
2392 |1|1|1|
2393 +-+-+-+
2394 |1|1|1|
2395 +-+-+-+
2396 |1|1|1|
2397 +-+-+-+
2398 (3, 3)
2399 */
2400 rast2 = rt_raster_new(3, 3);
2401 CU_ASSERT(rast2 != NULL);
2402 rt_raster_set_scale(rast2, 1, 1);
2403
2404 band2 = cu_add_band(rast2, PT_8BUI, 1, 0);
2405 CU_ASSERT(band2 != NULL);
2406 rt_band_set_nodata(band2, 0, NULL);
2407 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2408 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2409 rtn = rt_band_set_pixel(band2, 0, 2, 1, NULL);
2410 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2411 rtn = rt_band_set_pixel(band2, 1, 1, 1, NULL);
2412 rtn = rt_band_set_pixel(band2, 1, 2, 1, NULL);
2413 rtn = rt_band_set_pixel(band2, 2, 0, 1, NULL);
2414 rtn = rt_band_set_pixel(band2, 2, 1, 1, NULL);
2415 rtn = rt_band_set_pixel(band2, 2, 2, 1, NULL);
2416
2417 rt_band_get_nodata(band2, &nodata);
2418 CU_ASSERT_EQUAL(nodata, 0);
2419
2420 rtn = rt_raster_covers(
2421 rast1, 0,
2422 rast2, 0,
2423 &result
2424 );
2425 CU_ASSERT_EQUAL(rtn, ES_NONE);
2426 CU_ASSERT_NOT_EQUAL(result, 1);
2427
2428 /*
2429 rast2
2430
2431 (-2, -2)
2432 +-+-+-+
2433 |1|1|1|
2434 +-+-+-+
2435 |1|1|1|
2436 +-+-+-+
2437 |1|1|1|
2438 +-+-+-+
2439 (1, 1)
2440 */
2441 rt_raster_set_offsets(rast2, -2, -2);
2442
2443 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2444 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2445 rtn = rt_band_set_pixel(band2, 0, 2, 1, NULL);
2446 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2447 rtn = rt_band_set_pixel(band2, 1, 1, 1, NULL);
2448 rtn = rt_band_set_pixel(band2, 1, 2, 1, NULL);
2449 rtn = rt_band_set_pixel(band2, 2, 0, 1, NULL);
2450 rtn = rt_band_set_pixel(band2, 2, 1, 1, NULL);
2451 rtn = rt_band_set_pixel(band2, 2, 2, 1, NULL);
2452
2453 rtn = rt_raster_covers(
2454 rast1, 0,
2455 rast2, 0,
2456 &result
2457 );
2458 CU_ASSERT_EQUAL(rtn, ES_NONE);
2459 CU_ASSERT_NOT_EQUAL(result, 1);
2460
2461 /*
2462 rast2
2463
2464 (-2, -2)
2465 +-+-+-+
2466 |0|1|1|
2467 +-+-+-+
2468 |1|0|1|
2469 +-+-+-+
2470 |1|1|0|
2471 +-+-+-+
2472 (1, 1)
2473 */
2474 rtn = rt_band_set_pixel(band2, 0, 0, 0, NULL);
2475 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2476 rtn = rt_band_set_pixel(band2, 0, 2, 1, NULL);
2477 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2478 rtn = rt_band_set_pixel(band2, 1, 1, 0, NULL);
2479 rtn = rt_band_set_pixel(band2, 1, 2, 1, NULL);
2480 rtn = rt_band_set_pixel(band2, 2, 0, 1, NULL);
2481 rtn = rt_band_set_pixel(band2, 2, 1, 1, NULL);
2482 rtn = rt_band_set_pixel(band2, 2, 2, 0, NULL);
2483
2484 rtn = rt_raster_covers(
2485 rast1, 0,
2486 rast2, 0,
2487 &result
2488 );
2489 CU_ASSERT_EQUAL(rtn, ES_NONE);
2490 CU_ASSERT_NOT_EQUAL(result, 1);
2491
2492 /*
2493 rast2
2494
2495 (-2, -2)
2496 +-+-+-+
2497 |0|1|1|
2498 +-+-+-+
2499 |1|0|0|
2500 +-+-+-+
2501 |1|0|0|
2502 +-+-+-+
2503 (1, 1)
2504 */
2505 rtn = rt_band_set_pixel(band2, 0, 0, 0, NULL);
2506 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2507 rtn = rt_band_set_pixel(band2, 0, 2, 1, NULL);
2508 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2509 rtn = rt_band_set_pixel(band2, 1, 1, 0, NULL);
2510 rtn = rt_band_set_pixel(band2, 1, 2, 0, NULL);
2511 rtn = rt_band_set_pixel(band2, 2, 0, 1, NULL);
2512 rtn = rt_band_set_pixel(band2, 2, 1, 0, NULL);
2513 rtn = rt_band_set_pixel(band2, 2, 2, 0, NULL);
2514
2515 rtn = rt_raster_covers(
2516 rast1, 0,
2517 rast2, 0,
2518 &result
2519 );
2520 CU_ASSERT_EQUAL(rtn, ES_NONE);
2521 CU_ASSERT_NOT_EQUAL(result, 1);
2522
2523 /*
2524 rast2
2525
2526 (-2, -2)
2527 +-+-+-+
2528 |0|1|0|
2529 +-+-+-+
2530 |1|0|0|
2531 +-+-+-+
2532 |0|0|0|
2533 +-+-+-+
2534 (1, 1)
2535 */
2536 rtn = rt_band_set_pixel(band2, 0, 0, 0, NULL);
2537 rtn = rt_band_set_pixel(band2, 0, 1, 1, NULL);
2538 rtn = rt_band_set_pixel(band2, 0, 2, 0, NULL);
2539 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2540 rtn = rt_band_set_pixel(band2, 1, 1, 0, NULL);
2541 rtn = rt_band_set_pixel(band2, 1, 2, 0, NULL);
2542 rtn = rt_band_set_pixel(band2, 2, 0, 0, NULL);
2543 rtn = rt_band_set_pixel(band2, 2, 1, 0, NULL);
2544 rtn = rt_band_set_pixel(band2, 2, 2, 0, NULL);
2545
2546 rtn = rt_raster_covers(
2547 rast1, 0,
2548 rast2, 0,
2549 &result
2550 );
2551 CU_ASSERT_EQUAL(rtn, ES_NONE);
2552 CU_ASSERT_NOT_EQUAL(result, 1);
2553
2554 cu_free_raster(rast2);
2555
2556 /* skew tests */
2557 /* rast2 (skewed by -0.5, 0.5) */
2558 rast2 = rt_raster_new(3, 3);
2559 CU_ASSERT(rast2 != NULL);
2560 rt_raster_set_scale(rast2, 1, 1);
2561 rt_raster_set_skews(rast2, -0.5, 0.5);
2562
2563 band2 = cu_add_band(rast2, PT_8BUI, 1, 0);
2564 CU_ASSERT(band2 != NULL);
2565 rt_band_set_nodata(band2, 0, NULL);
2566 rtn = rt_band_set_pixel(band2, 0, 0, 1, NULL);
2567 rtn = rt_band_set_pixel(band2, 0, 1, 2, NULL);
2568 rtn = rt_band_set_pixel(band2, 0, 2, 3, NULL);
2569 rtn = rt_band_set_pixel(band2, 1, 0, 1, NULL);
2570 rtn = rt_band_set_pixel(band2, 1, 1, 2, NULL);
2571 rtn = rt_band_set_pixel(band2, 1, 2, 3, NULL);
2572 rtn = rt_band_set_pixel(band2, 2, 0, 1, NULL);
2573 rtn = rt_band_set_pixel(band2, 2, 1, 2, NULL);
2574 rtn = rt_band_set_pixel(band2, 2, 2, 3, NULL);
2575
2576 rtn = rt_raster_covers(
2577 rast1, 0,
2578 rast2, 0,
2579 &result
2580 );
2581 CU_ASSERT_EQUAL(rtn, ES_NONE);
2582 CU_ASSERT_NOT_EQUAL(result, 1);
2583
2584 /* rast2 (skewed by -1, 1) */
2585 rt_raster_set_skews(rast2, -1, 1);
2586
2587 rtn = rt_raster_covers(
2588 rast1, 0,
2589 rast2, 0,
2590 &result
2591 );
2592 CU_ASSERT_EQUAL(rtn, ES_NONE);
2593 CU_ASSERT_NOT_EQUAL(result, 1);
2594
2595 /* rast2 (skewed by 1, -1) */
2596 rt_raster_set_skews(rast2, 1, -1);
2597
2598 rtn = rt_raster_covers(
2599 rast1, 0,
2600 rast2, 0,
2601 &result
2602 );
2603 CU_ASSERT_EQUAL(rtn, ES_NONE);
2604 CU_ASSERT_NOT_EQUAL(result, 1);
2605
2606 cu_free_raster(rast2);
2607 cu_free_raster(rast1);
2608}
char result[OUT_DOUBLE_BUFFER_SIZE]
Definition cu_print.c:267
void rt_raster_set_scale(rt_raster raster, double scaleX, double scaleY)
Set scale in projection units.
Definition rt_raster.c:141
@ PT_8BUI
Definition librtcore.h:193
void rt_raster_set_skews(rt_raster raster, double skewX, double skewY)
Set skews about the X and Y axis.
Definition rt_raster.c:172
rt_raster rt_raster_new(uint32_t width, uint32_t height)
Construct a raster with given dimensions.
Definition rt_raster.c:52
rt_errorstate rt_band_set_nodata(rt_band band, double val, int *converted)
Set nodata value.
Definition rt_band.c:892
rt_errorstate rt_band_set_pixel(rt_band band, int x, int y, double val, int *converted)
Set single pixel's value.
Definition rt_band.c:1140
@ ES_NONE
Definition librtcore.h:182
rt_errorstate rt_band_get_nodata(rt_band band, double *nodata)
Get NODATA value.
Definition rt_band.c:2067
rt_errorstate rt_raster_covers(rt_raster rast1, int nband1, rt_raster rast2, int nband2, int *covers)
Return ES_ERROR if error occurred in function.
void rt_raster_set_offsets(rt_raster raster, double x, double y)
Set insertion points in projection units.
Definition rt_raster.c:203
rt_band cu_add_band(rt_raster raster, rt_pixtype pixtype, int hasnodata, double nodataval)
void cu_free_raster(rt_raster raster)

References cu_add_band(), cu_free_raster(), ES_NONE, PT_8BUI, result, rt_band_get_nodata(), rt_band_set_nodata(), rt_band_set_pixel(), rt_raster_covers(), rt_raster_new(), rt_raster_set_offsets(), rt_raster_set_scale(), and rt_raster_set_skews().

Referenced by spatial_relationship_suite_setup().

Here is the call graph for this function:
Here is the caller graph for this function: