我正在与MySQL几何函数做斗争。我真的很想从我的数据库中的各种不同的表中画一个多边形。但我似乎搞不明白。
首先,以下代码返回“多边形(-10-5,-105,10,5,-10-5)”,在我看来,它是一个四点封闭的多边形函数。
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文本”
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。如果是的话,有人知道周围有什么工作吗?
发布于 2020-02-12 10:32:05
您在定义多边形字符串时忽略了括号。避免使用作为保留字的TEXT
。另外,不推荐POLYGONFROMTEXT
,最好使用ST_POLYGONFROMTEXT
,因此:
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;
产出:
+----------------------------------------+
| @txt |
+----------------------------------------+
| POLYGON((-10 -5, -10 5, 10 5, -10 -5)) |
+----------------------------------------+
1 row in set (0.00 sec)
+-----------------------------------------------------------------------------------+
| @poly |
+-----------------------------------------------------------------------------------+
| 0x000000000103000000010000000400000000000000000024C000000000000014C000000000000024C000000000000014400000000000002440000000000000144000000000000024C000000000000014C0 |
+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
https://stackoverflow.com/questions/60185662
复制相似问题