1

我有一个包含多边形的 mysql 表,其中一些是打开的,我需要关闭它们。大概是通过将“StartPoint”附加到“Linestring”的末尾并重写为多边形。有任何想法吗?

当然,我可以拿出并测试一个多边形,看看它是打开还是关闭

SELECT ExteriorRing(SHAPE) into @testshape from tablename where OGR_FID=1; 
SELECT (StartPoint(@testshape)) INTO @SP;
SELECT (EndPoint(@testshape)) INTO @EP;
SELECT @EP=@SP as myIsRing;

好的,但是当它打开时,我需要将 Startpoint 附加到行字符串的末尾以关闭多边形。有没有办法附加那个“封闭”点并创建一个封闭的多边形?

可能值得注意的是我尝试过(根据手册页)

SELECT UNION(@testshape,@SP) INTO @newshape;

并得到标准语法错误 ERROR 1064 (42000) 好像我的版本不接受 UNION 函数。

4

1 回答 1

1

对不起大家,在这个问题上又花了几个小时,得到了以下结果

select polygon(geomfromtext(astext(concat(geomfromtext(astext(@testshape)),(geomfromtext(astext(@SP))))))) INTO @newpoly;

不完全干净,但它有效并且可以通过以下方式进行测试:

SELECT (StartPoint(EXTERIORRING(@newpoly))) INTO @SP2;
SELECT (EndPoint(EXTERIORRING(@newpoly))) INTO @EP2;
SELECT @EP2=@SP2 as myIsRing;
于 2012-07-09T20:57:37.133 回答