【问题标题】:How to implemented for geographic spatial reference systems in mysql如何在mysql中实现地理空间参考系统
【发布时间】:2019-10-17 05:21:51
【问题描述】:

我想在具有经纬度的点内从 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】:

    这不是您作为用户可以实现的。这个错误告诉你 MySQL 本身没有针对地理 SRS 的情况实现 ST_Buffer 函数。

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

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

    你的选择是

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 2017-12-30
      • 2021-02-14
      • 2014-07-05
      相关资源
      最近更新 更多