被 mysql 摁到地上使劲摩擦,请问 geometry POINT、POLYGON EMPTY 如何表示?

2020-05-26 15:58:21 +08:00
 xiangyuecn

先看普通写法,没有任何问题

select ST_GeomFromText('POINT(1 2)'); -- POINT(1 2) 正常
select ST_IsEmpty(ST_GeomFromText('POINT(1 2)')); -- 0 正常

-- mysql 文档里面翻到的,找到的唯一一个能用 EMPTY 来写的
select ST_IsEmpty(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY')); -- 1 正常

再看 EMPTY 的写法,被摁倒地上摩擦

select ST_GeomFromText('POINT EMPTY'); -- 报错 Invalid GIS data provided to function st_geomfromtext.

-- 用 null 代替 GIS EMPTY ?
select ST_GeomFromText(null); -- 就是 null
select ST_IsEmpty(null); -- 返回的什么卵几把玩意?使用 null 完全不可用!

换成 POLYGON 也是如此。

没辙了,请问 mysql 里 geometry POINT 、POLYGON EMPTY 到底要如何表示?

3461 次点击
所在节点    MySQL
6 条回复
qW7bo2FbzbC0
2020-05-26 17:11:16 +08:00
用 mongo 不行吗?
Xusually
2020-05-26 18:37:55 +08:00
laball
2020-05-26 18:55:41 +08:00
ES 吧
sadfQED2
2020-05-26 19:55:18 +08:00
Es pg mongo 对地理数据支持都很好,然而你却选择了 mysql
xiangyuecn
2020-05-26 20:20:16 +08:00
@Xusually #2 特意折腾了注册了个账号,回了一下这个帖子,哈哈。。。

他里面提到的用北极坐标当 EMPTY 使用,但这个并非 EMPTY,要自己逻辑里面特殊判断,就像 null 一样( null 是磨人的小妖精),需要额外的处理。

ST_IsEmpty(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY')) 正常是空的

ST_IsEmpty(ST_GeomFromText('POINT(0 90)')) 不正常,不是空的
xiangyuecn
2020-05-26 20:22:47 +08:00
@hjahgdthab750 @laball @sadfQED2 不存在完美😁 就像修 1 个 bug 引出 10 个 bug 一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX