如何在mysql中实现地理空间参考系统

如何在mysql中实现地理空间参考系统,mysql,geometry,buffer,gis,geojson,Mysql,Geometry,Buffer,Gis,Geojson,我想在一个经纬度为10米的点内创建一个缓冲区。所以我试过了 SET @json = ST_GeomFromGeoJSON('{"type": "Point", "coordinates": [139.445699080589, 35.507941895691]}'); SELECT ST_AsText(ST_Buffer(@json,10)); 但我有一个错误: [22001][3618] Data truncation: st_buffer(POINT, ...) has not been

我想在一个经纬度为10米的点内创建一个缓冲区。所以我试过了

SET @json = ST_GeomFromGeoJSON('{"type": "Point", "coordinates": [139.445699080589, 35.507941895691]}');
SELECT ST_AsText(ST_Buffer(@json,10));
但我有一个错误:

[22001][3618] Data truncation: st_buffer(POINT, ...) has not been implemented for geographic spatial reference systems.

在这种情况下如何实现地理空间???

这不是作为用户可以实现的。这个错误告诉您MySQL本身没有为地理SRS实现ST_缓冲区功能

问题是有两种类型的SRS-投影(平面地图,也称为笛卡尔)和地理(在椭球体上)。在其他系统中,它们通常由单独的类型表示,即几何图形(平面)和地理图形(椭球体)。在MySQL中,它是一种具有投影或椭球SRS的类型

椭球体上的一些算法更复杂,所以MySQL spatial中的一些功能还没有实现

你的选择是

1) 如果可能,切换到适当的投射SRS

2) 切换到另一个平台,例如支持ST_Buffer的地理类型的PostgreSQL+PostGIS

3) 避免使用ST_Buffer(当应该使用ST_DWithin时,它经常被误用来检查缓冲交叉点,尽管我不知道您的具体用例)