Mercurial > gemma
diff schema/isrs_tests.sql @ 1629:9d51f022b8ee
Introduce SQL function to clip an area to a stretch
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 19 Dec 2018 17:59:31 +0100 |
parents | 2304778c4432 |
children | f9f1babe52ae |
line wrap: on
line diff
--- a/schema/isrs_tests.sql Wed Dec 19 16:48:00 2018 +0100 +++ b/schema/isrs_tests.sql Wed Dec 19 17:59:31 2018 +0100 @@ -28,3 +28,33 @@ $$, 22023, NULL, 'ISRS text input needs to have correct length'); + +SELECT ok( + ISRSrange_area(isrsrange( + ('AT', 'XXX', '00001', '00000', 0)::isrs, + ('AT', 'XXX', '00001', '00000', 1)::isrs), + ST_SetSRID('POLYGON((0 1, 0 2, 1 2, 1 1, 0 1))'::geometry, 4326) + ) IS NULL, + 'ISRSrange_area returns NULL, if given area does not intersect with axis'); + +SELECT ok( + ST_DWithin( + (SELECT geom FROM waterway.distance_marks_virtual + WHERE location_code = ('AT', 'XXX', '00001', '00000', 0)::isrs), + ST_Boundary(ISRSrange_area(isrsrange( + ('AT', 'XXX', '00001', '00000', 0)::isrs, + ('AT', 'XXX', '00001', '00000', 1)::isrs), + ST_SetSRID('POLYGON((-1 1, 2 1, 2 -1, -1 -1, -1 1))'::geometry, + 4326)))::geography, + 1) + AND + ST_DWithin( + (SELECT geom FROM waterway.distance_marks_virtual + WHERE location_code = ('AT', 'XXX', '00001', '00000', 1)::isrs), + ST_Boundary(ISRSrange_area(isrsrange( + ('AT', 'XXX', '00001', '00000', 0)::isrs, + ('AT', 'XXX', '00001', '00000', 1)::isrs), + ST_SetSRID('POLYGON((-1 1, 2 1, 2 -1, -1 -1, -1 1))'::geometry, + 4326)))::geography, + 1), + 'Resulting polygon almost ST_Touches points corresponding to stretch');