polardbxengine/mysql-test/suite/gis/r/spatial_analysis_functions_...

266 lines
13 KiB
Plaintext

SELECT ST_AREA(NULL);
ST_AREA(NULL)
NULL
DO ST_AREA('');
ERROR 22023: Invalid GIS data provided to function st_area.
DO ST_AREA(ST_GEOMFROMTEXT('POINT(0 0)'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type POINT in st_area.
DO ST_AREA(ST_GEOMFROMTEXT('MULTIPOINT(0 0)'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type MULTIPOINT in st_area.
DO ST_AREA(ST_GEOMFROMTEXT('LINESTRING(0 0, 1 0)'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type LINESTRING in st_area.
DO ST_AREA(ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 0))'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type MULTILINESTRING in st_area.
DO ST_AREA(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type GEOMCOLLECTION in st_area.
DO ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1e308, 1e308 1e308, 0 0))'));
ERROR 22003: Result value is out of range in 'st_area'
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 0))', 0)),
2
) AS area;
area
0.50
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)))', 0)),
2
) AS area;
area
0.50
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1, 1 1, 0 0))', 4326)),
2
) AS area;
area
6154785747.34
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 0 1, 1 1, 0 0)))', 4326)),
2
) AS area;
area
6154785747.34
# Creating the spatial Geometry object
USE test;
CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY);
SET @star_elem_vertical= 'POLYGON((5 0,15 25,25 0,15 5,5 0))';
SET @star_elem_horizontal= 'POLYGON((25 0,0 15,30 15,22 10,25 0))';
SET @star_center= 'POINT(15 10)';
SET @star_top= 'POINT(15 25)';
SET @star_bottom_left= 'POINT(5 0)';
SET @star_bottom_right= 'POINT(25 0)';
SET @star_bottom_points= 'MULTIPOINT(5 0,25 0)';
SET @star_all_points= 'MULTIPOINT(5 0,25 0,15 10,15 25)';
SET @star_line_horizontal= 'LINESTRING(10 15,20 15)';
SET @star_line_vertical= 'LINESTRING(15 5,15 25)';
SET @star_top_to_center= 'LINESTRING(15 25,15 10)';
SET @star_lines_near_horizontal= 'MULTILINESTRING((25 0,0 15,15 30,0 5))';
SET @star_lines_near_vertical= 'MULTILINESTRING((0 5,15 25,0 25))';
SET @star= 'POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0))';
SET @star_elem_vertical_val= '((5 0,15 25,25 0,15 5,5 0))';
SET @star_elem_horizontal_val= '((25 0,0 15,30 15,22 10,25 0))';
SET @star_of_elems='MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0)))';
SET @star_collection_elems='GEOMETRYCOLLECTION(MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0))),POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0)),LINESTRING(15 25,15 10),MULTIPOINT(5 0,25 0),POINT(15 25))';
SET @star_collection_multilinestr='GEOMETRYCOLLECTION(MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0))),POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0)),MULTILINESTRING((25 0,0 15,15 30,0 5)),LINESTRING(15 25,15 10),MULTIPOINT(5 0,25 0),POINT(15 25))';
# INSERT base star
INSERT INTO gis_geometrycollection VALUES
(100,ST_GEOMFROMTEXT(@star)),
(101,ST_GEOMFROMTEXT(@star_elem_vertical)),
(102,ST_GEOMFROMTEXT(@star_elem_horizontal)),
(103,ST_GEOMFROMTEXT(@star_of_elems)),
(104,ST_GEOMFROMTEXT(@star_top)),
(105,ST_GEOMFROMTEXT(@star_center)),
(106,ST_GEOMFROMTEXT(@star_bottom_left)),
(107,ST_GEOMFROMTEXT(@star_bottom_right)),
(108,ST_GEOMFROMTEXT(@star_bottom_points)),
(109,ST_GEOMFROMTEXT(@star_all_points)),
(110,ST_GEOMFROMTEXT(@star_line_horizontal)),
(111,ST_GEOMFROMTEXT(@star_line_vertical)),
(112,ST_GEOMFROMTEXT(@star_top_to_center)),
(113,ST_GEOMFROMTEXT(@star_lines_near_horizontal)),
(114,ST_GEOMFROMTEXT(@star_lines_near_vertical)),
(115,ST_GEOMFROMTEXT(@star_collection_elems)),
(116,ST_GEOMFROMTEXT(@star_collection_multilinestr));
# Checking the integrity of the above create/insert statements
# 17 rows.
SELECT count(ST_ASTEXT(g) != 'NULL') FROM gis_geometrycollection;
count(ST_ASTEXT(g) != 'NULL')
17
#####################################################################################
# ST_AREA(polygon)
#####################################################################################
SELECT ST_AREA(ST_GEOMFROMTEXT(@star));
ST_AREA(ST_GEOMFROMTEXT(@star))
287.5
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_elem_vertical));
ST_AREA(ST_GEOMFROMTEXT(@star_elem_vertical))
200
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5, 0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5, 0 0))'))
12.5
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'))
100
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,-10 0,-10 -10,0 -10, 0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,-10 0,-10 -10,0 -10, 0 0))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'))
96
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0))'))
-96
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8))'))
0
SELECT ST_AREA(g) FROM gis_geometrycollection WHERE fid=100;
ST_AREA(g)
287.5
#####################################################################################
# ST_AREA(multipolygon)
#####################################################################################
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_of_elems));
ST_AREA(ST_GEOMFROMTEXT(@star_of_elems))
377.5
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5, 0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5, 0 0)))'))
12.5
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 10,10 0,0 0, 0 10)),((0 0,10 10,10 0, 0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 10,10 0,0 0, 0 10)),((0 0,10 10,10 0, 0 0)))'))
100
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10, 0 0)),((10 10,10 15,15 15,10 10)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10, 0 0)),((10 10,10 15,15 15,10 10)))'))
62.5
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((4 4,4 6,6 6,6 4, 4 4)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((4 4,4 6,6 6,6 4, 4 4)))'))
104
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0, 0 0),(4 4,4 6,6 6,6 4, 4 4)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0, 0 0),(4 4,4 6,6 6,6 4, 4 4)))'))
96
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0)))'))
-96
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8)))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((10 10,10 0,5 10,10 10)),((0 10,0 20,5 10,0 10)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((10 10,10 0,5 10,10 10)),((0 10,0 20,5 10,0 10)))'))
50
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0)))'))
100
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6, 4 4)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6, 4 4)))'))
98
SELECT ST_AREA(g) FROM gis_geometrycollection WHERE fid=103;
ST_AREA(g)
377.5
#####################################################################################
# ST_AREA(geometry) with different SRID values
#####################################################################################
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_center,-1024));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_all_points,-1));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_of_elems,4294967296));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_collection_elems,4294967295000));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
#####################################################################################
# Invalid function calls
#####################################################################################
SELECT ST_AREA();
ERROR 42000: Incorrect parameter count in the call to native function 'ST_AREA'
SELECT ST_AREA(NULL);
ST_AREA(NULL)
NULL
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT()'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING()'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON(())'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOINT()'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTILINESTRING(())'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON((()))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT(a 0)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT(! 0)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT('!' 0)'));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0)'))' at line 1
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT(12,34 0)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING('!' 0,10 10)'));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,10 10)'))' at line 1
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON(('!' 0,10 10,10 0,0 0))'));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,10 10,10 0,0 0))'))' at line 1
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,5 5))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,5 5,10 10))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,10 10),(0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 10)),((10 10)))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 10)),((10 10))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
# Clean up
DROP TABLE gis_geometrycollection;
#
# WL#11096 Don't do Cartesian computations on geographic geometries
#
# Assume SRID 10 is not defined.
DO ST_AREA(x'0A000000010100000000000000000000000000000000000000');
ERROR SR001: There's no spatial reference system with SRID 10.
#
# Bug#28301552 ASSERTION FAILED: STD::ISFINITE(*RESULT)
#
DO ST_Area(
POLYGON(
LINESTRING(
POINT(4.271317e+307,-18656),
POINT(-29177,-15475),
POINT(8554,3430),
POINT(4.271317e+307,-18656)
)
)
);
ERROR 22003: Result value is out of range in 'st_area'
DO ST_Area(POLYGON(
LINESTRING(
POINT(3006,-15963),
POINT(-17919,-15105),
POINT(9.466488e+307,1.280303e+308),
POINT(3006,-15963)
)
)
);
ERROR 22003: Result value is out of range in 'st_area'