1

ポリゴンを含むmysqlテーブルがあり、そのうちのいくつかは開いているので、それらを閉じる必要があります。おそらく、「Linestring」の最後に「StartPoint」を追加し、ポリゴンとして書き換えることによって。何か案は?

確かに、ポリゴンを取得してテストし、ポリゴンが開いているか閉じているかを確認できます。

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;

大丈夫ですが、開いているときは、ポリゴンを閉じるために、線ストリングの最後に開始点を追加する必要があります。その「閉鎖」ポイントを追加して、閉じたポリゴンを作成する方法はありますか?

私が試したことは注目に値するかもしれません(manページによる)

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

そして、私のバージョンがUNION関数を受け入れなかったかのように、標準の構文エラーERROR 1064(42000)が発生しました。

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 に答える