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

问题描述 投票:0回答:1

我想在经度和纬度之间的10m范围内创建一个缓冲区。所以我尝试过

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 geometry buffer gis geojson
1个回答
0
投票

这不是您作为用户可以实现的东西。该错误告诉您,对于地理SRS,MySQL本身未实现ST_Buffer功能。

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

椭球上的某些算法更复杂,因此尚未针对该情况实现MySQL空间中的某些功能。

您的选择是

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

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

3)避免使用ST_Buffer(尽管我不知道您的特定用例,但在应该使用ST_DWithin时经常被用来检查缓冲的交叉点)

© www.soinside.com 2019 - 2024. All rights reserved.