Bug #93984 Implement Geographic Support for Remaining Spatial Functions
Submitted: 18 Jan 2019 21:34 Modified: 19 Jan 2019 5:26
Reporter: John Doe Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: GIS Severity:S4 (Feature request)
Version:8 OS:Any
Assigned to: CPU Architecture:Any
Tags: geographic, gis, spatial

[18 Jan 2019 21:34] John Doe
Description:
MySQL 8 introduces a lot of improvements to working with spatial data and different SRSs. However, the lack of support for geographic data makes a lot of it useless for geographical purposes until that support is implemented.

The biggest issue for me, currently, is not being able to use ST_MakeEnvelope as I'm working with northeast and southwest bounds provided by the Google Maps API.

How to repeat:
Use any of the below functions with geographic data, such as SRID 4326.

ST_Area, ST_Buffer, ST_Centroid, ST_ConvexHull, ST_Difference, ST_Distance (geography support limited to points and multipoints), ST_Envelope, ST_Intersection, ST_IsClosed, ST_MakeEnvelope, ST_Simplify, ST_SymDifference, ST_Union

Suggested fix:
Implement support for geographic SRSs for ST_MakeEnvelope and the following functions:

ST_Area, ST_Buffer, ST_Centroid, ST_ConvexHull, ST_Difference, ST_Distance (geography support limited to points and multipoints), ST_Envelope, ST_Intersection, ST_IsClosed, ST_MakeEnvelope, ST_Simplify, ST_SymDifference, ST_Union
[19 Jan 2019 5:26] MySQL Verification Team
Hello John Doe,

Thank you for the feature request!

regards,
Umesh
[20 Jan 2019 19:35] Norvald Ryeng
Hi,

Thank you for the feature request!

ST_Area is already geographic since 8.0.13.

We use Boost Geometry for all computations, so we rely on implementation
to be done there first. Here's the current status:

ST_Buffer:

 - Not supported by Boost Geometry.
 - We expect Boost to implement buffer around point first, then other
   geometries.

ST_Centroid, ST_ConvexHull:

 - Not supported by Boost Geometry.
 - Low on our priority list compared to the other functions. To help us
   prioritize, do you have a use case for these?

ST_Difference, ST_Intersection, ST_SymDifference, ST_Union:

 - Supported by Boost Geometry, but not yet by MySQL.

ST_Distance (geography support limited to points and multipoints):

 - Supported by Boost Geometry, but not yet by MySQL.

ST_Envelope, ST_MakeEnvelope:

 - Supported by Boost Geometry with non-standard result type.

 - There's no data type to represent the result of these. Cartesian
   ST_Envelope and ST_MakeEnvelope return polygons, but a geographic
   polygon will have geodesics as line segments, so lines from east to
   west and west to east will not follow parallels of latitude, which
   they should in the result of these functions.

ST_IsClosed, ST_Simplify:

 - Not 100 % sure if these are supported by Boost Geometry
   yet. ST_IsClosed should be pretty straight forward.

Best regards,

Norvald H. Ryeng
[4 Mar 2020 20:15] Bob Terrell
I second this. For me, my top 3 are:

- ST_Buffer, to be used with POINT.
- ST_Distance (and ST_Distance_Sphere) usable with non-POINT geometries.
- ST_Centroid to create the centroid point if the ST_Distance* functions will never use non-POINT geometries.