-- -- GeomFromGML regression test -- Written by Olivier Courtin - Oslandia -- -- -- spatial_ref_sys datas -- -- EPSG 4326 : WGS 84 INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (4326,'EPSG',4326,'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs '); --- EPSG 27562 : NTF (Paris) / Lambert Centre France INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (27562,'EPSG',27562,'PROJCS["NTF (Paris) / Lambert Centre France",GEOGCS["NTF (Paris)",DATUM["Nouvelle_Triangulation_Francaise_Paris",SPHEROID["Clarke 1880 (IGN)",6378249.2,293.4660212936265,AUTHORITY["EPSG","7011"]],TOWGS84[-168,-60,320,0,0,0,0],AUTHORITY["EPSG","6807"]],PRIMEM["Paris",2.33722917,AUTHORITY["EPSG","8903"]],UNIT["grad",0.01570796326794897,AUTHORITY["EPSG","9105"]],AUTHORITY["EPSG","4807"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Lambert_Conformal_Conic_1SP"],PARAMETER["latitude_of_origin",52],PARAMETER["central_meridian",0],PARAMETER["scale_factor",0.99987742],PARAMETER["false_easting",600000],PARAMETER["false_northing",200000],AUTHORITY["EPSG","27562"],AXIS["X",EAST],AXIS["Y",NORTH]]','+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs '); --- EPSG 27582 : NTF (Paris) / France II (deprecated) INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (27582,'EPSG',27582,'PROJCS["NTF (Paris) / France II (deprecated)",GEOGCS["NTF (Paris)",DATUM["Nouvelle_Triangulation_Francaise_Paris",SPHEROID["Clarke 1880 (IGN)",6378249.2,293.4660212936265,AUTHORITY["EPSG","7011"]],TOWGS84[-168,-60,320,0,0,0,0],AUTHORITY["EPSG","6807"]],PRIMEM["Paris",2.33722917,AUTHORITY["EPSG","8903"]],UNIT["grad",0.01570796326794897,AUTHORITY["EPSG","9105"]],AUTHORITY["EPSG","4807"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Lambert_Conformal_Conic_1SP"],PARAMETER["latitude_of_origin",52],PARAMETER["central_meridian",0],PARAMETER["scale_factor",0.99987742],PARAMETER["false_easting",600000],PARAMETER["false_northing",2200000],AUTHORITY["EPSG","27582"],AXIS["X",EAST],AXIS["Y",NORTH]]','+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs '); -- Empty Geometry SELECT 'empty_geom', ST_AsEWKT(ST_GeomFromGML(NULL)); -- -- XML -- -- ERROR: Empty String SELECT 'xml_1', ST_AsEWKT(ST_GeomFromGML('')); -- ERROR: Not well formed XML SELECT 'xml_2', ST_AsEWKT(ST_GeomFromGML('')); -- ERROR: Not a GML Geometry SELECT 'xml_3', ST_AsEWKT(ST_GeomFromGML('')); -- -- Point -- -- 1 Point SELECT 'point_1', ST_AsEWKT(ST_GeomFromGML('1,2')); -- ERROR: 2 points SELECT 'point_2', ST_AsEWKT(ST_GeomFromGML('1,2 3,4')); -- ERROR: empty point SELECT 'point_3', ST_AsEWKT(ST_GeomFromGML('')); -- srsName handle SELECT 'point_4', ST_AsEWKT(ST_GeomFromGML('1 2')); -- -- LineString -- -- 2 Points SELECT 'linestring_1', ST_AsEWKT(ST_GeomFromGML('1,2 3,4')); -- ERROR 1 Point SELECT 'linestring_2', ST_AsEWKT(ST_GeomFromGML('1,2')); -- srsName handle SELECT 'linestring_3', ST_AsEWKT(ST_GeomFromGML('1,2 3,4')); -- ERROR: empty coordinates SELECT 'linestring_4', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'linestring_5', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'linestring_6', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4')); -- -- Curve -- -- 2 Points SELECT 'curve_1', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- ERROR 1 Point SELECT 'curve_2', ST_AsEWKT(ST_GeomFromGML('1 2')); -- srsName handle SELECT 'curve_3', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- ERROR: empty coordinates SELECT 'curve_4', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'curve_5', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'curve_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'curve_7', ST_AsEWKT(ST_GeomFromGML('')); -- linear interpolation SELECT 'curve_8', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- ERROR: wrong interpolation SELECT 'curve_9', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- XML not elements handle SELECT 'curve_10', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4')); -- 2 Segments SELECT 'curve_11', ST_AsEWKT(ST_GeomFromGML('1 2 3 43 4 5 6')); SELECT 'curve_12', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 64 5 6 7 8 9')); -- ERROR 2 Segments disjoint SELECT 'curve_13', ST_AsEWKT(ST_GeomFromGML('1 2 3 45 6 7 8')); -- ERROR 2 3D Segments disjoint in Z SELECT 'curve_14', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 64 5 0 7 8 9')); -- 2 segments, mixed dimension SELECT 'curve_15', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 64 5 7 8')); SELECT 'curve_16', ST_AsEWKT(ST_GeomFromGML('1 2 3 43 4 5 6 7 8')); -- -- Polygon -- -- GML 2 - 1 ring SELECT 'polygon_1', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- srsName handle SELECT 'polygon_2', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- ERROR: In exterior ring: Last point is not the same as the first one SELECT 'polygon_3', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,3')); -- ERROR: In exterior 3D ring: Last point is not the same as the first one in Z SELECT 'polygon_4', ST_AsEWKT(ST_GeomFromGML('1,2,3 4,5,6 7,8,9 1,2,0')); -- ERROR: Only 3 points in exterior ring SELECT 'polygon_5', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 1,2')); -- ERROR: Empty exterior ring coordinates SELECT 'polygon_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'polygon_7', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'polygon_8', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'polygon_9', ST_AsEWKT(ST_GeomFromGML('')); -- GML 2 - 2 rings SELECT 'polygon_10', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,8')); -- XML not elements handle SELECT 'polygon_11', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4 5,6 1,2 7,8 9,10 11,12 7,8')); -- Empty interior ring coordinates (even if defined) SELECT 'polygon_12', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- ERROR: Only 3 points in interior ring SELECT 'polygon_13', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 7,8')); -- ERROR: In interior ring: Last point is not the same as the first one SELECT 'polygon_14', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,9')); -- ERROR: In interior 3D ring: Last point is not the same as the first one in Z SELECT 'polygon_15', ST_AsEWKT(ST_GeomFromGML('1,2,3 4,5,6 7,8,9 1,2,310,11,12 13,14,15 16,17,18 10,11,0')); -- GML 2 - 3 rings SELECT 'polygon_16', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,813,14 15,16 17,18 13,14')); -- GML 3 SELECT 'polygon_17', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,8')); -- Mixed dimension in rings SELECT 'polygon_18', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 10 11')); SELECT 'polygon_19', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 13 14 15 7 8 9')); -- -- LinearRing -- -- 2D LinearRing SELECT 'linearring_1', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- srsName handle SELECT 'linearring_2', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- ERROR: Last point is not the same as the first one SELECT 'linearring_3', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 3')); -- ERROR: Last point is not the same as the first one in Z SELECT 'linearring_4', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 3')); -- ERROR: Only 3 points SELECT 'linearring_5', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 1 3')); -- ERROR: Empty coordinates SELECT 'linearring_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'linearring_7', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'linearring_8', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 5 6 1 2 ')); -- -- Triangle -- -- a triangle SELECT 'triangle_1', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- srsName handle SELECT 'triangle_2', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- ERROR: Last point is not the same as the first one SELECT 'triangle_3', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,0')); -- ERROR: Last point is not the same as the first one in Z SELECT 'triangle_4', ST_AsEWKT(ST_GeomFromGML('1,2,3 4,5,6 7,8,9 1,2,0')); -- ERROR: Only 3 points SELECT 'triangle_5', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 1,2')); -- ERROR: Empty exterior ring coordinates SELECT 'triangle_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'triangle_7', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'triangle_8', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'triangle_9', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4 5,6 1,2')); -- planar interpolation SELECT 'triangle_10', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- ERROR: interpolation not planar SELECT 'triangle_11', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- -- Surface -- -- 1 ring SELECT 'surface_1', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- srsName handle SELECT 'surface_2', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- ERROR: In exterior ring: Last point is not the same as the first one SELECT 'surface_3', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,0')); -- ERROR: In exterior 3D ring: Last point is not the same as the first one in Z SELECT 'surface_4', ST_AsEWKT(ST_GeomFromGML('1,2,3 4,5,6 7,8,9 1,2,0')); -- ERROR: Only 3 points in exterior ring SELECT 'surface_5', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 1,2')); -- ERROR: Empty exterior ring coordinates SELECT 'surface_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'surface_7', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'surface_8', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'surface_9', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'surface_10', ST_AsEWKT(ST_GeomFromGML('')); -- 2 rings SELECT 'surface_11', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,8')); -- XML not elements handle SELECT 'surface_12', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4 5,6 1,2 7,8 9,10 11,12 7,8')); -- Empty interior ring coordinates (even if defined) SELECT 'surface_13', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- ERROR: Only 3 points in interior ring SELECT 'surface_14', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 7,8')); -- ERROR: In interior ring: Last point is not the same as the first one SELECT 'surface_15', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,0')); -- ERROR: In interior 3D ring: Last point is not the same as the first one in Z SELECT 'surface_16', ST_AsEWKT(ST_GeomFromGML('1,2,3 4,5,6 7,8,9 1,2,310,11,12 13,14,15 16,17,18 10,11,0')); -- 3 rings SELECT 'surface_17', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,813,14 15,16 17,18 13,14')); -- Mixed dimension in rings SELECT 'surface_18', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 10 11')); SELECT 'surface_19', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 13 14 15 7 8 9')); -- ERROR: two patches SELECT 'surface_20', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,8')); -- planar interpolation SELECT 'surface_21', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- ERROR: interpolation not planar SELECT 'surface_22', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- -- MultiPoint -- -- 1 point SELECT 'mpoint_1', ST_AsEWKT(ST_GeomFromGML('1,2')); -- 2 points SELECT 'mpoint_2', ST_AsEWKT(ST_GeomFromGML('1,23,4')); -- srsName handle SELECT 'mpoint_3', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Empty MultiPoints SELECT 'mpoint_4', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'mpoint_5', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'mpoint_6', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4')); -- Mixed srsName SELECT 'mpoint_7', ST_AsEWKT(ST_GeomFromGML('1,2400000,5000000')); -- 1 point in pointMembers SELECT 'mpoint_8', ST_AsEWKT(ST_GeomFromGML('1,2')); -- 2 points in pointMembers SELECT 'mpoint_9', ST_AsEWKT(ST_GeomFromGML('1,23,4')); -- Empty pointMembers SELECT 'mpoint_10', ST_AsEWKT(ST_GeomFromGML('')); -- -- MultiLineString -- -- 1 line SELECT 'mline_1', ST_AsEWKT(ST_GeomFromGML('1,2 3,4')); -- 2 lines SELECT 'mline_2', ST_AsEWKT(ST_GeomFromGML('1,2 3,45,6 7,8')); -- srsName handle SELECT 'mline_3', ST_AsEWKT(ST_GeomFromGML('1,2 3,4')); -- Empty MultiLineString SELECT 'mline_4', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'mline_5', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'mline_6', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4 5,6 7,8')); -- Mixed dimension SELECT 'mline_7', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 67 8 9 10')); SELECT 'mline_8', ST_AsEWKT(ST_GeomFromGML('1 2 3 45 6 7 8 9 10')); -- Mixed srsName SELECT 'mline_9', ST_AsEWKT(ST_GeomFromGML('1,2 3,4400000,5000000 400010,5000010')); -- -- MultiCurve -- -- 1 curve SELECT 'mcurve_1', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- 2 curves SELECT 'mcurve_2', ST_AsEWKT(ST_GeomFromGML('1 2 3 45 6 7 8')); -- srsName handle SELECT 'mcurve_3', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- Empty Curve SELECT 'mcurve_4', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'mcurve_5', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'mcurve_6', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 5 6 7 8')); -- Mixed dimension SELECT 'mcurve_7', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 67 8 9 10')); SELECT 'mcurve_8', ST_AsEWKT(ST_GeomFromGML('1 2 3 45 6 7 8 9 10')); -- Mixed srsName SELECT 'mcurve_9', ST_AsEWKT(ST_GeomFromGML('1,2 3,4400000,5000000 400010,5000010')); -- 1 curve in curveMembers SELECT 'mcurve_10', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- 2 curves in curveMembers SELECT 'mcurve_11', ST_AsEWKT(ST_GeomFromGML('1 2 3 45 6 7 8')); SELECT 'mcurve_12', ST_AsEWKT(ST_GeomFromGML('')); -- -- MultiPolygon -- -- 1 polygon SELECT 'mpoly_1', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- 2 polygons SELECT 'mpoly_2', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,27,8 9,10 11,12 7,8')); -- srsName handle SELECT 'mpoly_3', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- Empty MultiPolygon SELECT 'mpoly_4', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'mpoly_5', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'mpoly_6', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4 5,6 1,2 7,8 9,10 11,12 7,8')); -- Mixed dimension SELECT 'mpoly_7', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 10 11')); SELECT 'mpoly_8', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 13 14 15 7 8 9')); -- Mixed srsName SELECT 'mpoly_9', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2400000,5000000 400010,5000010 400020,5000020 400000,5000000400100,5000100 400110,5000110 400120,5000120 400100,5000100')); -- -- MultiSurface -- -- 1 surface SELECT 'msurface_1', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- 2 surfaces SELECT 'msurface_2', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 7 8')); -- srsName handle SELECT 'msurface_3', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- Empty MultiSurface SELECT 'msurface_4', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'msurface_5', ST_AsEWKT(ST_GeomFromGML('')); -- XML not elements handle SELECT 'msurface_6', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 5 6 1 2 7 8 9 10 11 12 7 8')); -- Mixed dimension SELECT 'msurface_7', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 10 11')); SELECT 'msurface_8', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 13 14 15 7 8 9')); -- Mixed srsName SELECT 'msurface_9', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2400000,5000000 400010,5000010 400020,5000020 400000,5000000400100,5000100 400110,5000110 400120,5000120 400100,5000100')); -- 1 surface in surfaceMembers SELECT 'msurface_10', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- 2 surfaces in surfaceMembers SELECT 'msurface_11', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 7 8')); -- Empty surfaceMembers SELECT 'msurface_12', ST_AsEWKT(ST_GeomFromGML('')); -- -- PolyhedralSurface -- -- 1 ring SELECT 'polyhedralsurface_1', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- srsName handle SELECT 'polyhedralsurface_2', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- ERROR: In exterior ring: Last point is not the same as the first one SELECT 'polyhedralsurface_3', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 0 3')); -- ERROR: In exterior 3D ring: Last point is not the same as the first one in Z SELECT 'polyhedralsurface_4', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 0')); -- ERROR: Only 3 points in exterior ring SELECT 'polyhedralsurface_5', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2 3')); -- ERROR: Empty exterior ring coordinates SELECT 'polyhedralsurface_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'polyhedralsurface_7', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'polyhedralsurface_8', ST_AsEWKT(ST_GeomFromGML('')); -- EMPTY SELECT 'polyhedralsurface_9', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'polyhedralsurface_10', ST_AsEWKT(ST_GeomFromGML('')); -- 2 rings SELECT 'polyhedralsurface_11', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 11 12')); -- 2 patches SELECT 'polyhedralsurface_12', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 11 12')); -- 2 patches & 2 rings SELECT 'polyhedralsurface_13', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 11 1219 20 21 22 23 24 25 26 27 19 20 21')); -- XML not elements handle SELECT 'polyhedralsurface_14', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 5 6 7 8 9 1 2 3 10 11 12 13 14 15 16 17 18 10 11 12 19 20 21 22 23 24 25 26 27 19 20 21 ')); -- Empty interior ring coordinates (even if defined) SELECT 'polyhedralsurface_15', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- ERROR: Only 3 points in interior ring SELECT 'polyhedralsurface_16', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 10 11 12')); -- ERROR: In interior ring: Last point is not the same as the first one SELECT 'polyhedralsurface_17', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 0 12')); -- ERROR: In interior 3D ring: Last point is not the same as the first one in Z SELECT 'polyhedralsurface_18', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 11 0')); -- 3 rings SELECT 'polyhedralsurface_19', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 11 1219 20 21 22 23 24 25 26 27 19 20 21')); -- Mixed dimension in rings SELECT 'polyhedralsurface_20', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 10 11')); SELECT 'polyhedralsurface_21', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 13 14 15 7 8 9')); -- Mixed dimension in patches SELECT 'polyhedralsurface_22', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 10 11')); SELECT 'polyhedralsurface_23', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 13 14 15 7 8 9')); -- planar interpolation SELECT 'polyhedralsurface_24', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- ERROR: interpolation not planar SELECT 'polyhedralsurface_25', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- -- Tin and TriangulatedSurface -- -- 1 patch SELECT 'tin_1', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- srsName handle SELECT 'tin_2', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- ERROR: Last point is not the same as the first one SELECT 'tin_3', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 0 3')); -- ERROR: Last point is not the same as the first one in Z SELECT 'tin_4', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 0')); -- ERROR: Only 3 points in exterior ring SELECT 'tin_5', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2 3')); -- ERROR: Empty exterior ring coordinates SELECT 'tin_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'tin_7', ST_AsEWKT(ST_GeomFromGML('')); -- EMPTY SELECT 'tin_8', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'tin_9', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'tin_10', ST_AsEWKT(ST_GeomFromGML('')); -- 2 patches SELECT 'tin_11', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 11 12')); -- XML not elements handle SELECT 'tin_12', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 5 6 7 8 9 1 2 3 10 11 12 13 14 15 16 17 18 10 11 12 ')); -- 3 patches SELECT 'tin_13', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 16 17 18 10 11 1219 20 21 22 23 24 25 26 27 19 20 21')); -- Mixed dimension in patches SELECT 'tin_14', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 310 11 12 13 14 15 10 11')); SELECT 'tin_15', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 27 8 9 10 11 12 13 14 15 7 8 9')); -- TriangulatedSurface SELECT 'tin_16', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- trianglePatches SELECT 'tin_17', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); SELECT 'tin_18', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8 9 1 2 3')); -- -- GeometryCollection -- -- 1 simple geom SELECT 'collection_1', ST_AsEWKT(ST_GeomFromGML('1,2')); -- 2 simples geom SELECT 'collection_2', ST_AsEWKT(ST_GeomFromGML('1 23 4 5 6')); -- 1 multi geom SELECT 'collection_3', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- 2 multi geom SELECT 'collection_4', ST_AsEWKT(ST_GeomFromGML('1 23 45 6 7 89 10 11 12')); -- 2 multi geom and 2 simples SELECT 'collection_5', ST_AsEWKT(ST_GeomFromGML('1 23 45 67 8 9 1011 12 13 1415 16 17 18 19 20 15 16')); -- Empty collection SELECT 'collection_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'collection_7', ST_AsEWKT(ST_GeomFromGML('')); -- Collection of collection SELECT 'collection_8', ST_AsEWKT(ST_GeomFromGML('1,23,4')); -- Collection of collection of collection SELECT 'collection_9', ST_AsEWKT(ST_GeomFromGML('1,23,4')); -- srsName handle SELECT 'collection_10', ST_AsEWKT(ST_GeomFromGML('1,2')); -- XML not elements handle SELECT 'collection_11', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 5')); -- Mixed dimension SELECT 'collection_12', ST_AsEWKT(ST_GeomFromGML('1 2 34 5')); SELECT 'collection_13', ST_AsEWKT(ST_GeomFromGML('1 23 4 5')); -- Mixed srsName SELECT 'collection_14', ST_AsEWKT(ST_GeomFromGML('1,2400000,5000000')); -- -- srsName -- -- Supported srsName patterns SELECT 'srs_1', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_2', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_3', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_4', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_5', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_6', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_7', ST_AsEWKT(ST_GeomFromGML('1 2')); -- Use default srsName SELECT 'srs_8', ST_AsEWKT(ST_GeomFromGML('1 2', 4326)); -- ERROR not a valid pattern SELECT 'srs_9', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: not a defined SRID SELECT 'srs_10', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: SRID is not an int SELECT 'srs_11', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: SRID is not only int SELECT 'srs_12', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_13', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: srsName empty SELECT 'srs_14', ST_AsEWKT(ST_GeomFromGML('1 2')); SELECT 'srs_15', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: srsName is defined as -1 SELECT 'srs_16', ST_AsEWKT(ST_GeomFromGML('1 2')); -- Reverse axis with all kind of simples geometry types SELECT 'srs_17', ST_AsEWKT(ST_GeomFromGML('1 23 4 5 67 8 9 1011 12 13 14 15 16 11 1217 18 19 20 21 22 17 1823 24 25 26 27 28 23 2425 26 27 28 29 30 25 26')); -- Reverse axis with severals multi geometry types -- TODO -- -- GML Namespace -- -- GML namespace SELECT 'ns_1', ST_AsEWKT(ST_GeomFromGML('1,2')); -- GML namespace without explicit prefix SELECT 'ns_2', ST_AsEWKT(ST_GeomFromGML('1,2')); -- GML 3.2 namespace SELECT 'ns_3', ST_AsEWKT(ST_GeomFromGML('1,2')); -- ERROR wrong namespace SELECT 'ns_4', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Several namespaces SELECT 'ns_5', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Ignore other namespace element SELECT 'ns_6', ST_AsEWKT(ST_GeomFromGML('1,23,4')); -- Attribute without explicit namespace SELECT 'ns_7', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Attribute with explicit GML namespace SELECT 'ns_8', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Attribute with explicit GML 3.2 namespace SELECT 'ns_9', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Attribute with explicit prefix but unqualified namespace SELECT 'ns_10', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Ignore other namespace attribute SELECT 'ns_11', ST_AsEWKT(ST_GeomFromGML('1,23,4')); -- ERROR Attribute with explicit prefix but unqualified namespace SELECT 'ns_12', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Explicit GML namespace (no prefix) SELECT 'ns_13', ST_AsEWKT(ST_GeomFromGML('1,2')); -- -- Coordinates (simple) -- -- X,Y SELECT 'coordinates_1', ST_AsEWKT(ST_GeomFromGML('1,2')); -- ERROR: single X SELECT 'coordinates_2', ST_AsEWKT(ST_GeomFromGML('1')); -- X,Y,Z SELECT 'coordinates_3', ST_AsEWKT(ST_GeomFromGML('1,2,3')); -- ERROR: 4 dimension SELECT 'coordinates_4', ST_AsEWKT(ST_GeomFromGML('1,2,3,4')); -- ERROR: Only commas SELECT 'coordinates_5', ST_AsEWKT(ST_GeomFromGML(',')); SELECT 'coordinates_6', ST_AsEWKT(ST_GeomFromGML(' , ')); -- ERROR: empty or spaces SELECT 'coordinates_7', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'coordinates_8', ST_AsEWKT(ST_GeomFromGML(' ')); -- ERROR: End on comma SELECT 'coordinates_9', ST_AsEWKT(ST_GeomFromGML('1,2,3,')); SELECT 'coordinates_10', ST_AsEWKT(ST_GeomFromGML('1,2,')); -- ERROR: Begin on comma SELECT 'coordinates_11', ST_AsEWKT(ST_GeomFromGML(',1 2,3')); -- Whitespaces before and after SELECT 'coordinates_12', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4 ')); SELECT 'coordinates_13', ST_AsEWKT(ST_GeomFromGML(' 1,2 3,4 ')); -- Mixed dimension SELECT 'coordinates_14', ST_AsEWKT(ST_GeomFromGML('1,2,3 4,5')); -- ERROR: Spaces insides SELECT 'coordinates_15', ST_AsEWKT(ST_GeomFromGML('1, 2 3, 4')); SELECT 'coordinates_16', ST_AsEWKT(ST_GeomFromGML('1,2 3,4')); -- ERROR: Junk SELECT 'coordinates_17', ST_AsEWKT(ST_GeomFromGML('!@#$%^*()"')); -- -- Coordinates (cs,ts,decimal) -- -- Specify default CS separator SELECT 'coordinates_cs_1', ST_AsEWKT(ST_GeomFromGML('1,2')); -- ERROR: wrong CS separator SELECT 'coordinates_cs_2', ST_AsEWKT(ST_GeomFromGML('1,2')); -- Specify a CS separator SELECT 'coordinates_cs_3', ST_AsEWKT(ST_GeomFromGML('1;2')); -- ERROR: CS separator is a number SELECT 'coordinates_cs_4', ST_AsEWKT(ST_GeomFromGML('102')); -- ERROR: CS separator is multichar SELECT 'coordinates_cs_5', ST_AsEWKT(ST_GeomFromGML('1||2')); -- Specify default TS separator SELECT 'coordinates_cs_6', ST_AsEWKT(ST_GeomFromGML('1,2 3,4')); -- ERROR: wrong TS separator SELECT 'coordinates_cs_7', ST_AsEWKT(ST_GeomFromGML('1,2;3,4')); -- Specify a TS separator SELECT 'coordinates_cs_8', ST_AsEWKT(ST_GeomFromGML('1,2;3,4')); -- ERROR: TS separator is a number SELECT 'coordinates_cs_9', ST_AsEWKT(ST_GeomFromGML('1,203,4')); -- ERROR: TS separator is multichar SELECT 'coordinates_cs_10', ST_AsEWKT(ST_GeomFromGML('1,2||3,4')); -- Specify default Decimal separator SELECT 'coordinates_cs_11', ST_AsEWKT(ST_GeomFromGML('1.1,2.2 3.3,4.4')); -- ERROR: wrong Decimal separator SELECT 'coordinates_cs_12', ST_AsEWKT(ST_GeomFromGML('1;1,2;2 3;3,4;4')); -- ERROR: Decimal separator is a number SELECT 'coordinates_cs_13', ST_AsEWKT(ST_GeomFromGML('101,202 303,404')); -- ERROR: Decimal separator is multichar SELECT 'coordinates_cs_14', ST_AsEWKT(ST_GeomFromGML('1||1,2||2 3||3,4||4')); -- CS and TS and Decimal together SELECT 'coordinates_cs_15', ST_AsEWKT(ST_GeomFromGML('1,1.2,2;3,3.4,4')); -- ERROR: CS and Decimal are the same SELECT 'coordinates_cs_16', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); SELECT 'coordinates_cs_17', ST_AsEWKT(ST_GeomFromGML('1.1.2.2;3.3.4,4')); SELECT 'coordinates_cs_18', ST_AsEWKT(ST_GeomFromGML('1;1.2;2;3;3.4,4')); -- XML Entity substitution SELECT 'coordinates_cs_19', ST_AsEWKT(ST_GeomFromGML('1 2,3 4')); -- -- pos -- -- X,Y SELECT 'pos_1', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: single X SELECT 'pos_2', ST_AsEWKT(ST_GeomFromGML('1')); -- ERROR: X,Y,Z but without explicit dimension SELECT 'pos_3', ST_AsEWKT(ST_GeomFromGML('1 2 3')); -- ERROR: 4 dimension SELECT 'pos_4', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- ERROR: empty or spaces SELECT 'pos_5', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'pos_6', ST_AsEWKT(ST_GeomFromGML(' ')); SELECT 'pos_7', ST_AsEWKT(ST_GeomFromGML(' ')); -- Whitespaces before and after SELECT 'pos_8', ST_AsEWKT(ST_GeomFromGML(' 1 2 ')); SELECT 'pos_9', ST_AsEWKT(ST_GeomFromGML(' 1 2 ')); SELECT 'pos_10', ST_AsEWKT(ST_GeomFromGML(' 1 2 ')); -- Several Spaces insides SELECT 'pos_11', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: Junk SELECT 'pos_12', ST_AsEWKT(ST_GeomFromGML('@!#$#%')); -- ERROR: 1 dimension SELECT 'pos_13', ST_AsEWKT(ST_GeomFromGML('1')); -- 2 Dimensions explicit SELECT 'pos_14', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR: 2 Dimensions explicit but 3 dims SELECT 'pos_15', ST_AsEWKT(ST_GeomFromGML('1 2 3')); -- 3 Dimensions explicit SELECT 'pos_16', ST_AsEWKT(ST_GeomFromGML('1 2 3')); -- ERROR: 4 dimensions SELECT 'pos_17', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- -- posList -- -- 2 coords SELECT 'poslist_1', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- spaces before and after SELECT 'poslist_2', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 ')); SELECT 'poslist_3', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 ')); SELECT 'poslist_4', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 ')); -- explicit 2 dimension SELECT 'poslist_5', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- ERROR: wrong dimension SELECT 'poslist_6', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 5 ')); SELECT 'poslist_7', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5')); -- 2 coord 3D SELECT 'poslist_8', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6')); -- ERROR: 1 dimension SELECT 'poslist_9', ST_AsEWKT(ST_GeomFromGML('1')); SELECT 'poslist_10', ST_AsEWKT(ST_GeomFromGML('1')); -- ERROR: 4 dimensions SELECT 'poslist_11', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 7 8')); -- ERROR: 3D but no explicit dimension SELECT 'poslist_12', ST_AsEWKT(ST_GeomFromGML('1 2 3')); -- ERROR: empty or spaces SELECT 'poslist_13', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'poslist_14', ST_AsEWKT(ST_GeomFromGML(' ')); SELECT 'poslist_15', ST_AsEWKT(ST_GeomFromGML(' ')); -- Several spaces insides posList SELECT 'poslist_16', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); SELECT 'poslist_17', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4 ')); -- ERROR: Junk SELECT 'poslist_18', ST_AsEWKT(ST_GeomFromGML('!@#$%^*()"')); -- -- Generic data -- -- Mixed pos, posList, coordinates, coord SELECT 'data_1', ST_AsEWKT(ST_GeomFromGML('1 23 4 5 67,8 9,101112')); -- Mixed pos, posList, pointProperty, pointRep SELECT 'data_2', ST_AsEWKT(ST_GeomFromGML('1 23 4 5 67 89,10')); -- -- XLink -- -- xlink with pointProperty SELECT 'xlink_1', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: xlink:href destination is not defined SELECT 'xlink_2', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: no href SELECT 'xlink_3', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: empty href SELECT 'xlink_4', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: no sharp char in href SELECT 'xlink_5', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: no xlink namespace SELECT 'xlink_6', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: wrong xlink namespace SELECT 'xlink_7', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: no xlink:type SELECT 'xlink_8', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: xlink:type not simple SELECT 'xlink_9', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- ERROR: more than one destination is defined SELECT 'xlink_10', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- xlink with pointRep SELECT 'xlink_11', ST_AsEWKT(ST_GeomFromGML('1 23 4')); -- xlink on a point SELECT 'xlink_12', ST_AsEWKT(ST_GeomFromGML('1 2')); -- xlink on a linestring SELECT 'xlink_13', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- xlink on a curve SELECT 'xlink_14', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- xlink on a polygon SELECT 'xlink_15', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- xlink on a surface SELECT 'xlink_16', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- xlink on a multipoint SELECT 'xlink_17', ST_AsEWKT(ST_GeomFromGML('1 2')); -- xlink on a multiline SELECT 'xlink_18', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- xlink on a multicurve SELECT 'xlink_19', ST_AsEWKT(ST_GeomFromGML('1 2 3 4')); -- xlink on a multipolygon SELECT 'xlink_20', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- xlink on a multisurface SELECT 'xlink_21', ST_AsEWKT(ST_GeomFromGML('1 2 3 4 5 6 1 2')); -- xlink on a multigeometry SELECT 'xlink_22', ST_AsEWKT(ST_GeomFromGML('1 2')); -- ERROR circular ref SELECT 'xlink_23', ST_AsEWKT(ST_GeomFromGML('1 2')); -- -- Bijective PostGIS GML test -- -- Point GML 2 SELECT 'gml_1', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('POINT(1 2)')))); -- Point GML 2 - 3D SELECT 'gml_2', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('POINT(1 2 3)')))); -- Point GML 2 & SRID planar SELECT 'gml_3', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('SRID=27582;POINT(1 2)')))); -- Point GML 3 SELECT 'gml_4', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('POINT(1 2)')))); -- Point GML 3 & SRID lat/lon SELECT 'gml_5', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;POINT(1 2)'), 16))); -- Point GML 3 - 3D SELECT 'gml_6', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('POINT(1 2 3)')))); -- Point GML 3 - 3D & SRID lat/lon SELECT 'gml_7', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;POINT(1 2 3)'), 16))); -- Linestring GML 2 SELECT 'gml_8', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('LINESTRING(1 2,3 4)')))); -- Linestring GML 2 - 3D SELECT 'gml_9', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('LINESTRING(1 2 3,4 5 6)')))); -- Linestring GML 2 & SRID planar SELECT 'gml_10', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('SRID=27582;LINESTRING(1 2,3 4)')))); -- Linestring GML 3 SELECT 'gml_11', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('LINESTRING(1 2,3 4)')))); -- Linestring GML 3 & SRID lat/lon SELECT 'gml_12', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;LINESTRING(1 2,3 4)'), 16))); -- Linestring GML 3 - 3D SELECT 'gml_13', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('LINESTRING(1 2 3,4 5 6)')))); -- Linestring GML 3 - 3D & SRID lat/lon SELECT 'gml_14', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;LINESTRING(1 2 3,4 5 6)'), 16))); -- Polygon GML 2 SELECT 'gml_15', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('POLYGON((1 2,3 4,5 6,1 2))')))); -- Polygon GML 2 - 3D SELECT 'gml_16', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('POLYGON((1 2 3,4 5 6,7 8 9,1 2 3))')))); -- Polygon GML 2 & SRID planar SELECT 'gml_17', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('SRID=27582;POLYGON((1 2,3 4,5 6,1 2))')))); -- Polygon GML 3 SELECT 'gml_18', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('POLYGON((1 2,3 4,5 6,1 2))')))); -- Polygon GML 3 & SRID lat/lon SELECT 'gml_19', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;POLYGON((1 2,3 4,5 6,1 2))'), 16))); -- Polygon GML 3 - 3D SELECT 'gml_20', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('POLYGON((1 2 3,4 5 6,7 8 9,1 2 3))')))); -- Polygon GML 3 - 3D & SRID lat/lon SELECT 'gml_21', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;POLYGON((1 2 3,4 5 6,7 8 9,1 2 3))'), 16))); -- Triangle GML 3 SELECT 'gml_22', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('TRIANGLE((1 2,3 4,5 6,1 2))')))); -- Triangle GML 3 & SRID lat/lon SELECT 'gml_23', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;TRIANGLE((1 2,3 4,5 6,1 2))'), 16))); -- Triangle GML 3 & SRID planar SELECT 'gml_24', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=27582;TRIANGLE((1 2,3 4,5 6,1 2))')))); -- Triangle GML 3 - 3D SELECT 'gml_25', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('TRIANGLE((1 2 3,4 5 6,7 8 9,1 2 3))')))); -- Triangle GML 3 - 3D & SRID lat/lon SELECT 'gml_26', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;TRIANGLE((1 2 3,4 5 6,7 8 9,1 2 3))'), 16))); -- Multipoint GML 2 SELECT 'gml_27', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('MULTIPOINT(1 2)')))); -- Multipoint GML 2 - 3D SELECT 'gml_28', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('MULTIPOINT(1 2 3)')))); -- Multipoint GML 2 & SRID planar SELECT 'gml_29', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('SRID=27582;MULTIPOINT(1 2)')))); -- Multipoint GML 3 SELECT 'gml_30', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('MULTIPOINT(1 2)')))); -- Multipoint GML 3 & SRID lat/lon SELECT 'gml_31', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;MULTIPOINT(1 2)'), 16))); -- Multipoint GML 3 - 3D SELECT 'gml_32', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('MULTIPOINT(1 2 3)')))); -- Multipoint GML 3 - 3D & SRID lat/lon SELECT 'gml_33', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;MULTIPOINT(1 2 3)'), 16))); -- Multilinestring GML 2 SELECT 'gml_34', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('MULTILINESTRING((1 2,3 4))')))); -- Multilinestring GML 2 - 3D SELECT 'gml_35', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('MULTILINESTRING((1 2 3,4 5 6))')))); -- Multilinestring GML 2 & SRID planar SELECT 'gml_36', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('SRID=27582;MULTILINESTRING((1 2,3 4))')))); -- Multilinestring GML 3 SELECT 'gml_37', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('MULTILINESTRING((1 2,3 4))')))); -- Multilinestring GML 3 & SRID lat/lon SELECT 'gml_38', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;MULTILINESTRING((1 2,3 4))'), 16))); -- Multilinestring GML 3 - 3D SELECT 'gml_39', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('MULTILINESTRING((1 2 3,4 5 6))')))); -- Multilinestring GML 3 - 3D & SRID lat/lon SELECT 'gml_40', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;MULTILINESTRING((1 2 3,4 5 6))'), 16))); -- Multipolygon GML 2 SELECT 'gml_41', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('MULTIPOLYGON(((1 2,3 4,5 6,1 2)))')))); -- Multipolygon GML 2 - 3D SELECT 'gml_42', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('MULTIPOLYGON(((1 2 3,4 5 6,7 8 9,1 2 3)))')))); -- Multipolygon GML 2 & SRID planar SELECT 'gml_43', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('SRID=27582;MULTIPOLYGON(((1 2,3 4,5 6,1 2)))')))); -- Multipolygon GML 3 SELECT 'gml_44', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('MULTIPOLYGON(((1 2,3 4,5 6,1 2)))')))); -- Multipolygon GML 3 & SRID lat/lon SELECT 'gml_45', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;MULTIPOLYGON(((1 2,3 4,5 6,1 2)))'), 16))); -- Multipolygon GML 3 - 3D SELECT 'gml_46', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('MULTIPOLYGON(((1 2 3,4 5 6,7 8 9,1 2 3)))')))); -- Multipolygon GML 3 - 3D & SRID planar SELECT 'gml_47', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=27582;MULTIPOLYGON(((1 2 3,4 5 6,7 8 9,1 2 3)))')))); -- Multipolygon GML 3 - 3D & SRID lat/lon SELECT 'gml_48', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;MULTIPOLYGON(((1 2 3,4 5 6,7 8 9,1 2 3)))'), 16))); -- Tin GML 3 SELECT 'gml_49', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('TIN(((1 2,3 4,5 6,1 2)))')))); -- Tin GML 3 & SRID planar SELECT 'gml_50', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=27582;TIN(((1 2,3 4,5 6,1 2)))')))); -- Tin GML 3 & SRID lat/lon SELECT 'gml_51', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;TIN(((1 2,3 4,5 6,1 2)))'), 16))); -- Tin GML 3 - 3D SELECT 'gml_52', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))')))); -- Tin GML 3 - 3D & SRID planar SELECT 'gml_53', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=27582;TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))')))); -- Tin GML 3 - 3D & SRID lat/lon SELECT 'gml_54', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))'), 16))); -- Collection GML 2 SELECT 'gml_55', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('GEOMETRYCOLLECTION(POINT(1 2))')))); -- Collection GML 2 - 3D SELECT 'gml_56', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('GEOMETRYCOLLECTION(POINT(1 2 3))')))); -- Collection GML 2 & SRID planar SELECT 'gml_57', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(ST_AsEWKT('SRID=27582;GEOMETRYCOLLECTION(POINT(1 2))')))); -- Collection GML 3 SELECT 'gml_58', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('GEOMETRYCOLLECTION(POINT(1 2))')))); -- Collection GML 3 & SRID lat/lon SELECT 'gml_59', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;GEOMETRYCOLLECTION(POINT(1 2))'), 16))); -- Collection GML 3 - 3D SELECT 'gml_60', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('GEOMETRYCOLLECTION(POINT(1 2 3))')))); -- Collection GML 3 - 3D & SRID lat/lon SELECT 'gml_61', ST_AsEWKT(ST_GeomFromGML(ST_AsGML(3, ST_AsEWKT('SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 3))'), 16))); -- -- coord -- -- X,Y SELECT 'coord_1', ST_AsEWKT(ST_GeomFromGML('12')); -- X,Y,Z SELECT 'coord_2', ST_AsEWKT(ST_GeomFromGML('123')); -- ERROR no X or Y SELECT 'coord_3', ST_AsEWKT(ST_GeomFromGML('12')); SELECT 'coord_4', ST_AsEWKT(ST_GeomFromGML('12')); SELECT 'coord_5', ST_AsEWKT(ST_GeomFromGML('1')); -- ERROR empty coord even if defined SELECT 'coord_6', ST_AsEWKT(ST_GeomFromGML('')); SELECT 'coord_7', ST_AsEWKT(ST_GeomFromGML('')); -- ERROR space in coord SELECT 'coord_8', ST_AsEWKT(ST_GeomFromGML('1 ')); SELECT 'coord_9', ST_AsEWKT(ST_GeomFromGML('1 ')); -- Spaces before and after coord SELECT 'coord_10', ST_AsEWKT(ST_GeomFromGML('1 2 ')); SELECT 'coord_11', ST_AsEWKT(ST_GeomFromGML('1 2 ')); SELECT 'coord_12', ST_AsEWKT(ST_GeomFromGML('1 2 ')); -- Several coords SELECT 'coord_13', ST_AsEWKT(ST_GeomFromGML('1234')); -- Several coords mixed dimension SELECT 'coord_14', ST_AsEWKT(ST_GeomFromGML('12345')); SELECT 'coord_15', ST_AsEWKT(ST_GeomFromGML('12345')); -- XML not elements handle SELECT 'coord_16', ST_AsEWKT(ST_GeomFromGML(' 1 2 3 4')); -- -- Double -- -- Several digits SELECT 'double_1', ST_AsEWKT(ST_GeomFromGML('1 1234567890')); -- Sign +/- SELECT 'double_2', ST_AsEWKT(ST_GeomFromGML('1 -1')); SELECT 'double_3', ST_AsEWKT(ST_GeomFromGML('1 +1')); -- ERROR: double sign SELECT 'double_4', ST_AsEWKT(ST_GeomFromGML('1 --1')); -- ERROR: sign inside digit SELECT 'double_5', ST_AsEWKT(ST_GeomFromGML('1 1-1')); -- Decimal part SELECT 'double_6', ST_AsEWKT(ST_GeomFromGML('1 1.2')); SELECT 'double_7', ST_AsEWKT(ST_GeomFromGML('1 1.23')); -- no digit after dot SELECT 'double_8', ST_AsEWKT(ST_GeomFromGML('1 1.')); -- ERROR: several dots SELECT 'double_9', ST_AsEWKT(ST_GeomFromGML('1 1.2.3')); -- ERROR: no digit before dot SELECT 'double_10', ST_AsEWKT(ST_GeomFromGML('1 .1')); SELECT 'double_11', ST_AsEWKT(ST_GeomFromGML('1 -.1')); -- ERROR: not a digit SELECT 'double_12', ST_AsEWKT(ST_GeomFromGML('1 a')); SELECT 'double_13', ST_AsEWKT(ST_GeomFromGML('1 1a')); SELECT 'double_14', ST_AsEWKT(ST_GeomFromGML('1 1a2')); -- Exp SELECT 'double_15', ST_AsEWKT(ST_GeomFromGML('1 1e2')); SELECT 'double_16', ST_AsEWKT(ST_GeomFromGML('1 1E+2')); SELECT 'double_17', ST_AsEWKT(ST_GeomFromGML('1 1e-2')); SELECT 'double_18', ST_AsEWKT(ST_GeomFromGML('1 1E-2')); -- Exp with decimal parts SELECT 'double_19', ST_AsEWKT(ST_GeomFromGML('1 1.23E2')); SELECT 'double_20', ST_AsEWKT(ST_GeomFromGML('1 1.23e2')); SELECT 'double_21', ST_AsEWKT(ST_GeomFromGML('1 -1.23E2')); -- ERROR: no exp digit SELECT 'double_22', ST_AsEWKT(ST_GeomFromGML('1 1E')); SELECT 'double_23', ST_AsEWKT(ST_GeomFromGML('1 1e')); -- ERROR: dot inside exp digits SELECT 'double_24', ST_AsEWKT(ST_GeomFromGML('1 1e2.3')); SELECT 'double_25', ST_AsEWKT(ST_GeomFromGML('1 1E2.3')); -- ERROR: spaces inside SELECT 'double_26', ST_AsEWKT(ST_GeomFromGML('1 - 1.23')); SELECT 'double_27', ST_AsEWKT(ST_GeomFromGML('1 -1 .23')); SELECT 'double_28', ST_AsEWKT(ST_GeomFromGML('1 -1. 23')); SELECT 'double_29', ST_AsEWKT(ST_GeomFromGML('1 -1.23 E2')); SELECT 'double_30', ST_AsEWKT(ST_GeomFromGML('1 -1.23E 2')); -- ERROR: Junk SELECT 'double_31', ST_AsEWKT(ST_GeomFromGML('1 $0%@#$^%#')); -- -- Delete inserted spatial data -- DELETE FROM spatial_ref_sys WHERE srid = 4326; DELETE FROM spatial_ref_sys WHERE srid = 27562; DELETE FROM spatial_ref_sys WHERE srid = 27582;