annotate schema/isrs_tests.sql @ 3678:8f58851927c0

client: make layer factory only return new layer config for individual maps instead of each time it is invoked. The purpose of the factory was to support multiple maps with individual layers. But returning a new config each time it is invoked leads to bugs that rely on the layer's state. Now this factory reuses the same objects it created before, per map.
author Markus Kottlaender <markus@intevation.de>
date Mon, 17 Jun 2019 17:31:35 +0200
parents 4c585b5d4fe8
children 8fcabb6f971e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1298
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
1 -- This is Free Software under GNU Affero General Public License v >= 3.0
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
2 -- without warranty, see README.md and license for details.
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
3
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
4 -- SPDX-License-Identifier: AGPL-3.0-or-later
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
5 -- License-Filename: LICENSES/AGPL-3.0.txt
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
6
2563
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
7 -- Copyright (C) 2018, 2019 by via donau
1298
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
8 -- – Österreichische Wasserstraßen-Gesellschaft mbH
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
9 -- Software engineering by Intevation GmbH
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
10
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
11 -- Author(s):
1301
2304778c4432 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1298
diff changeset
12 -- * Tom Gottfried <tom@intevation.de>
1298
6590208e3ee1 add headers for licensing to some schema files
Fadi Abbud <fadi.abbud@intevation.de>
parents: 578
diff changeset
13
569
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
14 --
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
15 -- pgTAP test script for ISRS location code types and functions
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
16 --
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
17
3566
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
18 --
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
19 -- Conversion from/to text
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
20 --
569
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
21 SELECT results_eq($$
578
61af85a432bf Fix extraction of object reference code
Tom Gottfried <tom@intevation.de>
parents: 569
diff changeset
22 SELECT isrs_fromText('DEBON03901G007906548')
569
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
23 $$,
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
24 $$
578
61af85a432bf Fix extraction of object reference code
Tom Gottfried <tom@intevation.de>
parents: 569
diff changeset
25 SELECT CAST(('DE', 'BON', '03901', 'G0079', 6548) AS isrs)
569
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
26 $$,
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
27 'Correct ISRS text input gives respective ISRS location code');
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
28
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
29 SELECT throws_ok($$
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
30 SELECT isrs_fromText('DEUXXX039000000005023')
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
31 $$,
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
32 22023, NULL,
ad07846b09d1 Add function to construct isrs from text
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
33 'ISRS text input needs to have correct length');
1629
9d51f022b8ee Introduce SQL function to clip an area to a stretch
Tom Gottfried <tom@intevation.de>
parents: 1301
diff changeset
34
9d51f022b8ee Introduce SQL function to clip an area to a stretch
Tom Gottfried <tom@intevation.de>
parents: 1301
diff changeset
35 SELECT ok(
2081
40711ca3aa19 Add function to get text representation of location code
Tom Gottfried <tom@intevation.de>
parents: 1983
diff changeset
36 'DEBON03901G007906548' = isrs_asText(isrs_fromText('DEBON03901G007906548'))
40711ca3aa19 Add function to get text representation of location code
Tom Gottfried <tom@intevation.de>
parents: 1983
diff changeset
37 ,
40711ca3aa19 Add function to get text representation of location code
Tom Gottfried <tom@intevation.de>
parents: 1983
diff changeset
38 'isrs_asText() is the inverse of isrs_fromText()');
40711ca3aa19 Add function to get text representation of location code
Tom Gottfried <tom@intevation.de>
parents: 1983
diff changeset
39
3566
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
40 --
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
41 -- Comparison operators
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
42 --
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
43 SELECT ok(
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
44 isrs_fromText('DEBON03901G007906548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
45 <> isrs_fromText('DEXXX039010000006548'),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
46 'Different codes at equal hectometre do not equal by default');
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
47
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
48 SELECT ok(
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
49 isrs_fromText('DEBON03901G007906548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
50 ~= isrs_fromText('DEXXX039010000006548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
51 AND isrs_fromText('DEBON03901G007906548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
52 >~= isrs_fromText('DEXXX039010000006548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
53 AND isrs_fromText('DEBON03901G007906548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
54 <~= isrs_fromText('DEXXX039010000006548'),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
55 'isrs_ops: Different codes at equal hectometre compare as equal');
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
56
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
57 SELECT ok(
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
58 isrs_fromText('DEBON03901G007906549')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
59 >~ isrs_fromText('DEXXX039010000006548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
60 AND isrs_fromText('DEBON03901G007906549')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
61 >~= isrs_fromText('DEXXX039010000006548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
62 AND isrs_fromText('DEXXX039010000006547')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
63 <~= isrs_fromText('DEBON03901G007906548')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
64 AND isrs_fromText('DEXXX039010000006547')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
65 <~ isrs_fromText('DEBON03901G007906548'),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
66 'isrs_ops: Ordering depends on hectometre');
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
67
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
68 SELECT ok(
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
69 isrsrange(isrs_fromText('DEXXX039010000006540'),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
70 isrs_fromText('DEXXX039010000006560'))
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
71 @> isrs_fromText('ATXXX000000000006550')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
72 AND isrs_fromText('DEXXX039010000006560')
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
73 <@ isrsrange(isrs_fromText('ATXXX000000000006550'),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
74 isrs_fromText('ATXXX000000000006570')),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
75 'isrsrange: ''Contains'' depends on hectometre');
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
76
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
77 SELECT ok(
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
78 isrsrange(isrs_fromText('DEXXX039010000006540'),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
79 isrs_fromText('DEXXX039010000006560'))
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
80 && isrsrange(isrs_fromText('ATXXX000000000006550'),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
81 isrs_fromText('ATXXX000000000006570')),
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
82 'isrsrange: Overlap depends on hectometre');
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
83
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
84 --
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
85 -- Geometry processing
4c585b5d4fe8 Introduce hectometer based order for ranges of ISRS location codes
Tom Gottfried <tom@intevation.de>
parents: 3561
diff changeset
86 --
2535
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
87 SELECT throws_ok($$
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
88 SELECT ISRSrange_points(isrsrange(
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
89 ('AT', 'XXX', '00001', '00000', 0)::isrs,
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
90 ('AT', 'XXX', '00001', '00000', 99999)::isrs))
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
91 $$,
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
92 'P0002', NULL,
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
93 'ISRSrange_points fails if not both distance marks can be found');
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
94
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
95 SELECT throws_ok($$
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
96 SELECT ISRSrange_axis(isrsrange(
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
97 ('AT', 'XXX', '00001', '00000', 0)::isrs,
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
98 ('AT', 'XXX', '00001', '00000', 2)::isrs),
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
99 0)
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
100 $$,
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
101 'P0002', NULL,
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
102 'ISRSrange_axis fails if no contiguous axis can be constructed');
73c8762cee60 Stretch area generation: Throw errors instead of returning NULL
Tom Gottfried <tom@intevation.de>
parents: 2453
diff changeset
103
2081
40711ca3aa19 Add function to get text representation of location code
Tom Gottfried <tom@intevation.de>
parents: 1983
diff changeset
104 SELECT ok(
2688
d316a6e41f54 Test if overlapping axis chunks are sewed together correctly
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
105 ST_IsSimple(ISRSrange_axis(isrsrange(
d316a6e41f54 Test if overlapping axis chunks are sewed together correctly
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
106 ('AT', 'XXX', '00001', '00000', 0)::isrs,
d316a6e41f54 Test if overlapping axis chunks are sewed together correctly
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
107 ('AT', 'XXX', '00001', '00000', 2)::isrs),
d316a6e41f54 Test if overlapping axis chunks are sewed together correctly
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
108 5)),
d316a6e41f54 Test if overlapping axis chunks are sewed together correctly
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
109 'ISRSrange_axis returns a valid simple feature');
d316a6e41f54 Test if overlapping axis chunks are sewed together correctly
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
110
3561
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
111 SELECT throws_ok($$
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
112 SELECT ISRSrange_area('LINESTRING(0 0, 1 1)', NULL)
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
113 $$,
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
114 'P0002', NULL,
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
115 'ISRSrange_area fails if no input area is given');
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
116
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
117 SELECT throws_ok($$
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
118 SELECT ISRSrange_area(ISRSrange_axis(isrsrange(
2563
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
119 ('AT', 'XXX', '00001', '00000', 0)::isrs,
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
120 ('AT', 'XXX', '00001', '00000', 1)::isrs),
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
121 5),
3561
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
122 ST_SetSRID('POLYGON((0 1, 0 2, 1 2, 1 1, 0 1))'::geometry, 4326))
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
123 $$,
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
124 'P0002', NULL,
453f15ba8030 Improve error handling in area generation
Tom Gottfried <tom@intevation.de>
parents: 2688
diff changeset
125 'ISRSrange_area fails, if given area does not intersect with axis');
1629
9d51f022b8ee Introduce SQL function to clip an area to a stretch
Tom Gottfried <tom@intevation.de>
parents: 1301
diff changeset
126
2453
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
127 SELECT results_eq($$
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
128 SELECT every(ST_DWithin(
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
129 ST_Boundary(ISRSrange_area(
2563
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
130 ISRSrange_axis(isrsrange(
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
131 ('AT', 'XXX', '00001', '00000', 0)::isrs,
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
132 ('AT', 'XXX', '00001', '00000', 1)::isrs),
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
133 5),
2453
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
134 (SELECT ST_Collect(CAST(area AS geometry))
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
135 FROM waterway.waterway_area))),
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
136 geom,
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
137 1))
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
138 FROM waterway.distance_marks_virtual
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
139 WHERE location_code IN(
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
140 ('AT', 'XXX', '00001', '00000', 0)::isrs,
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
141 ('AT', 'XXX', '00001', '00000', 1)::isrs)
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
142 $$,
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
143 $$
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
144 SELECT true
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
145 $$,
1629
9d51f022b8ee Introduce SQL function to clip an area to a stretch
Tom Gottfried <tom@intevation.de>
parents: 1301
diff changeset
146 'Resulting polygon almost ST_Touches points corresponding to stretch');
1983
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
147
2398
8481e6266691 Fix corner case in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2232
diff changeset
148 \set test_area 'POLYGON((-1 1, 2 1, 2 -1, -1 -1, -1 1))'
1983
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
149 SELECT ok(
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
150 2 = ST_NumGeometries(
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
151 ISRSrange_area(
2563
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
152 ISRSrange_axis(isrsrange(
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
153 ('AT', 'XXX', '00001', '00000', 0)::isrs,
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
154 ('AT', 'XXX', '00001', '00000', 1)::isrs),
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
155 5),
1983
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
156 ST_SetSRID(ST_Collect(
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
157 ST_Translate(:'test_area',
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
158 (ST_XMax(:'test_area'::geometry)
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
159 - ST_XMin(:'test_area'::geometry))/2
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
160 + 0.1, 0),
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
161 ST_Translate(:'test_area',
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
162 -((ST_XMax(:'test_area'::geometry)
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
163 - ST_XMin(:'test_area'::geometry))/2
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
164 + 0.1), 0)),
f9f1babe52ae Fix area generation from multipolygon input
Tom Gottfried <tom@intevation.de>
parents: 1629
diff changeset
165 4326))),
2232
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
166 'Two polygons intersecting the axis lead to two polygons in result');
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
167
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
168 SELECT ok(
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
169 1 = ST_NumGeometries(
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
170 ISRSrange_area(
2563
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
171 ISRSrange_axis(isrsrange(
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
172 ('AT', 'XXX', '00001', '00000', 0)::isrs,
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
173 ('AT', 'XXX', '00001', '00000', 1)::isrs),
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
174 5),
2232
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
175 ST_SetSRID(ST_Collect(
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
176 ST_Translate(:'test_area',
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
177 (ST_XMax(:'test_area'::geometry)
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
178 - ST_XMin(:'test_area'::geometry))/3,
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
179 0),
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
180 ST_Translate(:'test_area',
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
181 -((ST_XMax(:'test_area'::geometry)
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
182 - ST_XMin(:'test_area'::geometry))/3),
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
183 0)),
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
184 4326))),
7936b46a88d4 Handle invalid multipolygons in area generation from stretch
Tom Gottfried <tom@intevation.de>
parents: 2081
diff changeset
185 'Self-intersecting multipolygon leads to one polygon in result');
2431
48495bd3081d Construct stretch area between distance marks also from non-contiguous axis
Tom Gottfried <tom@intevation.de>
parents: 2398
diff changeset
186
2453
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
187 SELECT results_eq($$
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
188 SELECT every(ST_DWithin(
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
189 ST_Boundary(ISRSrange_area(
2563
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
190 ISRSrange_axis(isrsrange(
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
191 ('AT', 'XXX', '00001', '00000', 0)::isrs,
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
192 ('AT', 'XXX', '00001', '00000', 2)::isrs),
dc4fae4bdb8f Expose axis snapping tolerance to users
Tom Gottfried <tom@intevation.de>
parents: 2535
diff changeset
193 5),
2453
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
194 (SELECT ST_Collect(CAST(area AS geometry))
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
195 FROM waterway.waterway_area))),
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
196 geom,
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
197 1))
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
198 FROM waterway.distance_marks_virtual
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
199 WHERE location_code IN(
2431
48495bd3081d Construct stretch area between distance marks also from non-contiguous axis
Tom Gottfried <tom@intevation.de>
parents: 2398
diff changeset
200 ('AT', 'XXX', '00001', '00000', 0)::isrs,
2453
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
201 ('AT', 'XXX', '00001', '00000', 2)::isrs)
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
202 $$,
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
203 $$
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
204 SELECT true
00cac7890574 Improve TAP tests
Tom Gottfried <tom@intevation.de>
parents: 2431
diff changeset
205 $$,
2431
48495bd3081d Construct stretch area between distance marks also from non-contiguous axis
Tom Gottfried <tom@intevation.de>
parents: 2398
diff changeset
206 'Area generated from non-matching distance mark and non-contiguous axis');