gpt4 book ai didi

mysql - 如何在mysql中实现地理空间引用系统

转载 作者:行者123 更新时间:2023-11-29 15:34:09 25 4
gpt4 key购买 nike

我想在一个具有纬度和经度的点内创建一个距离 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本身没有为地理SRS的情况实现ST_Buffer函数。

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

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

您的选择是

1) 如果可能,切换到适当的预计 SRS,

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

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

关于mysql - 如何在mysql中实现地理空间引用系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58425399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com