Mercurial > gemma
annotate schema/isrs_tests.sql @ 3864:a7abfb3d400d
client: configuration: reset data accuracy to defaults
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Tue, 09 Jul 2019 15:41:31 +0200 |
parents | 4c585b5d4fe8 |
children | 8fcabb6f971e |
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 | 127 SELECT results_eq($$ |
128 SELECT every(ST_DWithin( | |
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 | 134 (SELECT ST_Collect(CAST(area AS geometry)) |
135 FROM waterway.waterway_area))), | |
136 geom, | |
137 1)) | |
138 FROM waterway.distance_marks_virtual | |
139 WHERE location_code IN( | |
140 ('AT', 'XXX', '00001', '00000', 0)::isrs, | |
141 ('AT', 'XXX', '00001', '00000', 1)::isrs) | |
142 $$, | |
143 $$ | |
144 SELECT true | |
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 | 187 SELECT results_eq($$ |
188 SELECT every(ST_DWithin( | |
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 | 194 (SELECT ST_Collect(CAST(area AS geometry)) |
195 FROM waterway.waterway_area))), | |
196 geom, | |
197 1)) | |
198 FROM waterway.distance_marks_virtual | |
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 | 201 ('AT', 'XXX', '00001', '00000', 2)::isrs) |
202 $$, | |
203 $$ | |
204 SELECT true | |
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'); |