source: trunk/regress/tickets.sql @ 5127

Last change on this file since 5127 was 5127, checked in by colivier, 6 years ago

Round decimal part in #58 ticket unit test. As the previous result was not cross platform compliant

File size: 10.6 KB
Line 
1--
2-- Regression tests that were filed as cases in bug tickets,
3-- referenced by bug number for historical interest.
4--
5
6DELETE FROM spatial_ref_sys;
7INSERT INTO spatial_ref_sys ( srid, proj4text ) VALUES ( 32611, '+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs' );
8INSERT INTO spatial_ref_sys ( srid, proj4text ) VALUES ( 4326, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' );
9
10
11-- #2 --
12SELECT '#2', ST_AsText(ST_Union(g)) FROM
13( VALUES 
14('SRID=4326;MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)))'), 
15('SRID=4326;MULTIPOLYGON(((2 1,3 1,3 2,2 2,2 1)))')
16) AS v(g);
17
18-- #11 --
19SELECT '#11', ST_Distance (a.g, ST_Intersection(b.g, a.g)) AS distance
20FROM (SELECT '01020000000200000050E8303FC2E85141B017CFC05A825541000000E0C0E85141000000205C825541'::geometry AS g) a, 
21         (SELECT 'LINESTRING(4694792.35840419 5638508.89950758,4694793.20840419 5638506.34950758)'::geometry AS g) b;
22       
23-- #21 --
24SELECT '#21', ST_AsEWKT(ST_Locate_Along_Measure(g, 4566)) FROM
25( VALUES 
26(ST_GeomFromEWKT('SRID=31293;LINESTRINGM( 6193.76 5337404.95 4519, 6220.13 5337367.145 4566, 6240.889 5337337.383 4603 )'))
27) AS v(g);
28
29-- #22 --
30SELECT ST_Within(g, 'POLYGON((0 0,10 0,20 10,10 20,0 20,-10 10,0 0))') FROM 
31(VALUES 
32('POLYGON((4 9,6 9,6 11,4 11,4 9))')
33) AS v(g);
34
35-- #33 --
36CREATE TABLE road_pg (ID INTEGER, NAME VARCHAR(32));
37SELECT '#33', AddGeometryColumn( '', 'public', 'road_pg','roads_geom', 330000, 'POINT', 2 );
38DROP TABLE road_pg;
39
40-- #44 --
41SELECT '#44', ST_Relate(g1, g2, 'T12101212'), ST_Relate(g1, g2, 't12101212') FROM 
42(VALUES 
43('POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))', 'POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))')
44) AS v(g1, g2);
45
46-- #58 --
47SELECT '#58', round(ST_xmin(g)),round(ST_ymin(g)),round(ST_xmax(g)),round(ST_ymax(g)) FROM (SELECT ST_Envelope('CIRCULARSTRING(220268.439465645 150415.359530563,220227.333322076 150505.561285879,220227.353105332 150406.434743975)') as g)  AS foo;
48
49-- #65 --
50SELECT '#65', ST_AsGML(ST_GeometryFromText('CURVEPOLYGON(CIRCULARSTRING(4 2,3 -1.0,1 -1,-1.0 4,4 2))'));
51
52-- #66 --
53SELECT '#66', ST_AsText((ST_Dump(ST_GeomFromEWKT('CIRCULARSTRING(0 0 1,1 1 2,2 2 3)'))).geom);
54
55-- #68 --
56SELECT '#68a', ST_AsText(ST_Shift_Longitude(ST_GeomFromText('MULTIPOINT(1 3, 4 5)')));
57SELECT '#68b', ST_AsText(ST_Shift_Longitude(ST_GeomFromText('CIRCULARSTRING(1 3, 4 5, 6 7)')));
58
59-- #69 --
60SELECT '#69', ST_AsText(ST_Translate(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'),1,2));
61
62-- #70 --
63SELECT '#70', ST_NPoints(ST_LinetoCurve(ST_Buffer('POINT(1 2)',3)));
64
65-- #73 --
66SELECT '#73', ST_AsText(ST_Force_Collection(ST_GeomFromEWKT('CIRCULARSTRING(1 1 2, 2 3 2, 4 5 2, 6 7 2, 5 6 2)')));
67
68-- #80 --
69SELECT '#80', ST_AsText(ST_Multi('MULTILINESTRING((0 0,1 1))'));
70
71-- #83 --
72SELECT '#83', ST_AsText(ST_Multi(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)')));
73
74-- #85 --
75SELECT '#85', ST_Distance(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'), ST_Point(220268, 150415));
76
77-- #112 --
78SELECT '#112', ST_AsText(ST_CurveToLine('GEOMETRYCOLLECTION(POINT(-10 50))'::geometry));
79
80-- #113 --
81SELECT '#113', ST_Locate_Along_Measure('LINESTRING(0 0 0, 1 1 1)', 0.5);
82
83-- #116 --
84SELECT '#116', ST_AsText('010300000000000000');
85
86-- #122 --
87SELECT '#122', ST_SnapToGrid(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'), 0.1);
88
89-- #124 --
90SELECT '#124a', ST_AsText(ST_GeomFromEWKT('COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,30 5),CIRCULARSTRING(30 5,34 56,67 89))'));
91SELECT '#124b', ST_AsText(ST_GeomFromEWKT('COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,30 6),CIRCULARSTRING(30 5,34 56,67 89))'));
92
93-- #145 --
94SELECT '#145a', ST_Buffer(ST_GeomFromText('LINESTRING(-116.93414544665981 34.16033385105459,-116.87777514700957 34.10831080544884,-116.86972224705954 34.086748622072776,-116.9327074288116 34.08458099517253,-117.00216369088065 34.130329331330216,-117.00216369088065 34.130329331330216)', 4326), 0);
95SELECT '#145b', ST_Area(ST_Buffer(ST_GeomFromText('LINESTRING(-116.93414544665981 34.16033385105459,-116.87777514700957 34.10831080544884,-116.86972224705954 34.086748622072776,-116.9327074288116 34.08458099517253,-117.00216369088065 34.130329331330216,-117.00216369088065 34.130329331330216)', 4326), 0));
96
97-- #146 --
98SELECT '#146', ST_Distance(g1,g2), ST_Dwithin(g1,g2,0.01), ST_AsEWKT(g2) FROM (SELECT ST_geomFromEWKT('LINESTRING(1 2, 2 4)') As g1, ST_Collect(ST_GeomFromEWKT('LINESTRING(0 0, -1 -1)'), ST_GeomFromEWKT('MULTIPOINT(1 2,2 3)')) As g2) As foo;
99
100-- #156 --
101SELECT '#156', ST_AsEWKT('0106000000010000000103000000010000000700000024213D12AA7BFD40945FF42576511941676A32F9017BFD40B1D67BEA7E511941C3E3C640DB7DFD4026CE38F4EE531941C91289C5A7EFD40017B8518E3531941646F1599AB7DFD409627F1F0AE521941355EBA49547CFD407B14AEC74652194123213D12AA7BFD40945FF42576511941');
102
103-- #157 --
104SELECT 
105        '#157',
106        ST_GeometryType(g) As newname, 
107        GeometryType(g) as oldname
108FROM ( VALUES 
109        (ST_GeomFromText('POLYGON((-0.25 -1.25,-0.25 1.25,2.5 1.25,2.5 -1.25,-0.25 -1.25), (2.25 0,1.25 1,1.25 -1,2.25 0),(1 -1,1 1,0 0,1 -1))') ),
110        ( ST_Point(1,2) ), 
111        ( ST_Buffer(ST_Point(1,2), 3) ), 
112        ( ST_LineToCurve(ST_Buffer(ST_Point(1,2), 3)) ) , 
113        ( ST_LineToCurve(ST_Boundary(ST_Buffer(ST_Point(1,2), 3))) )
114        ) AS v(g);
115
116
117-- #168 --
118SELECT '#168', ST_NPoints(g), ST_AsText(g)
119FROM ( VALUES
120('01060000C00100000001030000C00100000003000000E3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFFE3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFFE3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFF'::geometry)
121) AS v(g);
122
123-- #175 --
124SELECT '#175', ST_AsEWKT(ST_GeomFromEWKT('SRID=26915;POINT(482020 4984378.)'));
125
126-- #178 --
127SELECT '#178a', ST_XMin(ST_MakeBox2D(ST_Point(5, 5), ST_Point(0, 0)));
128SELECT '#178b', ST_XMax(ST_MakeBox2D(ST_Point(5, 5), ST_Point(0, 0)));
129
130-- #179 --
131SELECT '#179a', ST_MakeLine_GArray(ARRAY[NULL,NULL,NULL,NULL]);
132SELECT '#179b', ST_MakeLine(ARRAY[NULL,NULL,NULL,NULL]);
133
134-- #183 --
135SELECT '#183', ST_AsText(ST_LineToCurve(ST_LineMerge(ST_Collect(ST_CurveToLine(ST_GeomFromEWKT('CIRCULARSTRING(0 0, 1 1, 1 0)')),ST_GeomFromEWKT('LINESTRING(1 0, 0 1)') ))));
136
137-- #210 --
138SELECT '#210a', ST_Union(ARRAY[NULL,NULL,NULL,NULL]) ;
139SELECT '#210b', ST_MakeLine(ARRAY[NULL,NULL,NULL,NULL]) ;
140
141-- #213 --
142SELECT '#213', round(ST_Perimeter(ST_CurveToLine(ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)))'))));
143
144-- #234 --
145SELECT '#234', ST_AsText(ST_GeomFromText('COMPOUNDCURVE( (0 0,1 1) )'));
146
147-- #239 --
148--SELECT '#239', ST_AsSVG('010700002031BF0D0000000000');
149
150-- #241 --
151CREATE TABLE c AS SELECT ST_MakeLine(ST_Point(-10,40),ST_Point(40,-10)) As the_geom;
152INSERT INTO c SELECT ST_MakeLine(ST_Point(-10,40),ST_Point(40,-10)) As the_geom;
153SELECT '#241', sum(ST_LineCrossingDirection(the_geom, ST_GeomFromText('LINESTRING(1 2,3 4)'))) FROM c;
154DROP TABLE c;
155
156-- #254 --
157SELECT '#254', ST_Segmentize(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY'), 0.5);
158
159-- #259 --
160SELECT '#259', ST_Distance(ST_GeographyFromText('SRID=4326;POLYGON EMPTY'), ST_GeographyFromText('SRID=4326;POINT(1 2)'));
161
162-- #260 --
163SELECT '#260', round(ST_Distance(ST_GeographyFromText('SRID=4326;POINT(-10 40)'), ST_GeographyFromText('SRID=4326;POINT(-10 55)')));
164
165-- #261 --
166SELECT '#261', ST_Distance(ST_GeographyFromText('SRID=4326;POINT(-71.0325022849392 42.3793285830812)'),ST_GeographyFromText('SRID=4326;POLYGON((-71.0325022849392 42.3793285830812,-71.0325745928559 42.3793012556699,-71.0326708728343 42.3794450989722,-71.0326045866257 42.3794706688942,-71.0325022849392 42.3793285830812))'));
167
168-- #262 --
169SELECT '#262', ST_AsText(pt.the_geog) As wkt_pt, ST_Covers(poly.the_geog, pt.the_geog) As geog,
170        ST_Covers(
171                ST_Transform(CAST(poly.the_geog As geometry),32611), 
172                ST_Transform(CAST(pt.the_geog As geometry),32611)) As utm,
173        ST_Covers(
174                CAST(poly.the_geog As geometry), 
175                CAST(pt.the_geog As geometry)
176        ) As pca
177FROM (SELECT ST_GeographyFromText('SRID=4326;POLYGON((-119.5434 34.9438,-119.5437 34.9445,-119.5452 34.9442,-119.5434 34.9438))') As the_geog) 
178        As poly
179    CROSS JOIN 
180        (VALUES
181                ( ST_GeographyFromText('SRID=4326;POINT(-119.5434 34.9438)') ) ,
182                ( ST_GeographyFromText('SRID=4326;POINT(-119.5452 34.9442)') ) ,
183                ( ST_GeographyFromText('SRID=4326;POINT(-119.5434 34.9438)') ),
184                ( ST_GeographyFromText('SRID=4326;POINT(-119.5438 34.9443)')  )
185        )
186        As pt(the_geog);
187
188-- #263 --
189SELECT '#263', ST_AsEWKT(geometry(geography(pt.the_geom))) As wkt,
190        ST_Covers(
191                ST_Transform(poly.the_geom,32611), 
192                ST_Transform(pt.the_geom,32611)) As utm,
193        ST_Covers(
194                poly.the_geom, 
195                pt.the_geom)
196         As pca,
197        ST_Covers(geometry(geography(poly.the_geom)),
198                geometry(geography(pt.the_geom))) As gm_to_gg_gm_pca
199       
200FROM (SELECT ST_GeomFromEWKT('SRID=4326;POLYGON((-119.5434 34.9438,-119.5437 34.9445,-119.5452 34.9442,-119.5434 34.9438))') As the_geom) 
201        As poly
202    CROSS JOIN 
203        (VALUES
204                ( ST_GeomFromEWKT('SRID=4326;POINT(-119.5434 34.9438)') ) ,
205                ( ST_GeomFromEWKT('SRID=4326;POINT(-119.5452 34.9442)') ) ,
206                ( ST_GeomFromEWKT('SRID=4326;POINT(-119.5434 34.9438)') ),
207                ( ST_GeomFromEWKT('SRID=4326;POINT(-119.5438 34.9443)')  )
208        )
209        As pt(the_geom);
210
211-- #271 --
212SELECT '#271', ST_Covers(
213'POLYGON((-9.123456789 50,51 -11.123456789,-10.123456789 50,-9.123456789 50))'::geography,
214'POINT(-10.123456789 50)'::geography
215);
216
217-- #272 --
218SELECT '#272', ST_LineCrossingDirection(foo.line1, foo.line2) As l1_cross_l2 ,
219    ST_LineCrossingDirection(foo.line2, foo.line1) As l2_cross_l1
220FROM (SELECT
221    ST_GeomFromText('LINESTRING(25 169,89 114,40 70,86 43)') As line1, ST_GeomFromText('LINESTRING(2.99 90.16,71 74,20 140,171 154)') As line2 ) As foo;
222
223-- #277 --
224SELECT '#277', ST_AsGML(2, GeomFromText('POINT(1 1e308)'));
225
226-- #299 --
227SELECT '#299', round(ST_Y(geometry(ST_Intersection(ST_GeographyFromText('POINT(1.2456 2)'), ST_GeographyFromText('POINT(1.2456 2)'))))); 
228
229-- #304 --
230
231SELECT '#304';
232
233CREATE OR REPLACE FUNCTION utmzone(geometry)
234  RETURNS integer AS
235$BODY$
236DECLARE
237    geomgeog geometry;
238    zone int;
239    pref int;
240
241BEGIN
242    geomgeog:= ST_Transform($1,4326);
243
244    IF (ST_Y(geomgeog))>0 THEN
245       pref:=32600;
246    ELSE
247       pref:=32700;
248    END IF;
249
250    zone:=floor((ST_X(geomgeog)+180)/6)+1;
251
252    RETURN zone+pref;
253END;
254$BODY$ LANGUAGE 'plpgsql' IMMUTABLE
255  COST 100;
256
257SELECT ST_AsText(the_geog) as the_pt, ST_Area(ST_Buffer(the_geog,10)) As the_area, 
258        ST_Area(geography(ST_Transform(ST_Buffer(ST_Transform(geometry(the_geog),utm_srid),10),4326))) As geog_utm_area
259FROM (SELECT geography(ST_SetSRID(ST_Point(i*10,j*10),4326)) As the_geog, utmzone(ST_SetSRID(ST_Point(i*10,j*10),4326)) As utm_srid
260        FROM generate_series(-17,17) As i
261        CROSS JOIN generate_series(-8,8) As j
262) As foo
263WHERE ST_Area(ST_Buffer(the_geog,10)) NOT between 310 and 314
264LIMIT 10;
265
266DROP FUNCTION utmzone(geometry);
267
268-- Clean up
269DELETE FROM spatial_ref_sys;
Note: See TracBrowser for help on using the repository browser.