我有一个多边形,在mariadb中包含多个坐标:
POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))
我想用mariadb计算这个多边形的面积,如下所示:
SELECT ST_Area(ST_GeomFromText('POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))'))
上述查询的结果是
15.546039738650009
这是错误的。我用this工具计算了多边形的面积,得到了119116192747.1
。我该怎么做才能让mariadb理解这个多边形包含纬度和经度,以便正确计算面积?
最佳答案
根据Mariadb文件,它不提供以下功能:
在mariadb中,srid值只是与几何体值关联的整数。所有计算都是假设欧几里德(平面)几何。
但是,在mysql 8.0.13中,提供了此功能,您可以使用ST_Area()
计算多边形面积:
不兼容的更改:以前,st_area()只支持具有笛卡尔空间引用系统(srs)的几何参数,并且在使用指定地理srs的几何参数调用时产生错误。st_area()现在支持具有地理srs的几何参数,并返回以平方米为单位的大地测量面积。
因此,如果将数据库更改为mysql>8.0.13,则可以使用此查询计算多边形面积:
SELECT ST_Area(ST_PolyFromText('POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))', 4326));