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');