首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MYSQL几何函数多边形

MYSQL几何函数多边形
EN

Stack Overflow用户
提问于 2020-02-12 10:00:11
回答 1查看 189关注 0票数 1

我正在与MySQL几何函数做斗争。我真的很想从我的数据库中的各种不同的表中画一个多边形。但我似乎搞不明白。

首先,以下代码返回“多边形(-10-5,-105,10,5,-10-5)”,在我看来,它是一个四点封闭的多边形函数。

代码语言:javascript
运行
复制
    set @n_Yval = -5;
    set @p_Yval = +5;
    set @n_Xval = -10;
    set @p_Xval = +10;

    SET @text = (concat('polygon (', @n_Xval, ' ', @n_Yval, ', ', @n_Xval, ' ', @p_Yval, ', ', @p_Xval, ' ', @p_Yval, ',', @n_Xval, ' ', @n_Yval, ')')); 

    select @text;

但是,以下返回“错误代码3037无效的地理信息系统数据提供的功能st_geometryfrom文本”

代码语言:javascript
运行
复制
    set @n_Yval = -5;
    set @p_Yval = +5;
    set @n_Xval = -10;
    set @p_Xval = +10;

    SET @text = (concat('polygon (', @n_Xval, ' ', @n_Yval, ', ', @n_Xval, ' ', @p_Yval, ', ', @p_Xval, ' ', @p_Yval, ',', @n_Xval, ' ', @n_Yval, ')')); 

    set @poly = polygonfromtext(@text);

我使用的是MySQL 5.7,并指出,当我试图在上一篇文章中使用点绘制线时,可能会出现带有几何学函数的错误。https://bugs.mysql.com/bug.php?id=80697。如果是的话,有人知道周围有什么工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 10:32:05

您在定义多边形字符串时忽略了括号。避免使用作为保留字的TEXT。另外,不推荐POLYGONFROMTEXT,最好使用ST_POLYGONFROMTEXT,因此:

代码语言:javascript
运行
复制
SET @n_Yval = -5; 
SET @p_Yval = +5; 
SET @n_Xval = -10; 
SET @p_Xval = +10; 

SET @txt = CONCAT('POLYGON((', @n_Xval, ' ', @n_Yval, ', ', @n_Xval, ' ', @p_Yval, ', ', @p_Xval, ' ', @p_Yval, ', ', @n_Xval, ' ', @n_Yval, '))');

SELECT @txt; 

SET @poly = ST_POLYGONFROMTEXT(@txt);

SELECT @poly;

产出:

代码语言:javascript
运行
复制
+----------------------------------------+
| @txt                                   |
+----------------------------------------+
| POLYGON((-10 -5, -10 5, 10 5, -10 -5)) |
+----------------------------------------+
1 row in set (0.00 sec)
代码语言:javascript
运行
复制
+-----------------------------------------------------------------------------------+
| @poly                                                                             |
+-----------------------------------------------------------------------------------+
| 0x000000000103000000010000000400000000000000000024C000000000000014C000000000000024C000000000000014400000000000002440000000000000144000000000000024C000000000000014C0 |
+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60185662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档