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'