MySQL和拆分空间数据

时间:2015-06-03 21:55:41

标签: mysql mysql-spatial

我有一个MySQL表,我们用它来存储一些纬度和经度。坐标定义为' geometry'类型列,可以包含任意数量的坐标对。

当我运行此代码时,我将几何类型转换为我应该能够解析的一些文本:

SELECT ST_AsText(ST_ExteriorRing(c.coordinate))
        from `app_coordinate` c, app_type_coordinate tc 
        where c.idtypecoord = tc.idtypecoord 
            and tc.description="safezone";

我得到以下结果:

LINESTRING(-17.386557 -66.150796,-17.388676 -66.150335,-17.388727 -66.14952,-17.385963 -66.147642,-17.386557 -66.150796)
LINESTRING(-17.388043 -66.157421,-17.387351 -66.154347,-17.391524 -66.153496,-17.3921 -66.156664,-17.388043 -66.157421)
LINESTRING(-17.389281 -66.1413,-17.387155 -66.141837,-17.386763 -66.142888,-17.389566 -66.142929,-17.389281 -66.1413)
LINESTRING(-17.389914 -66.143621,-17.390695 -66.143275,-17.390262 -66.1409,-17.389487 -66.141172,-17.389914 -66.143621)

每个LineString行都有一组坐标对,我需要将其拆分。所以第一对是#1,第二对是#2,等等。事实是,我可以有任意数量的对。

我需要做的是能够将每个线串分成对并存储到变量中,如pair1_x,pair1_y,pair2_x,pair2_y,pair3_x ......即使我不知道有多少对存在我有两个分界...坐标之间的空格和对之间的逗号。

1 个答案:

答案 0 :(得分:0)

以下是我作为解决方案所做的:使用几个3 4: 1 3 5: 3 3 6: 3 ...... 4 6: 3 ..etc 语句修改原始语句以从每行中删除一些文本,使用Replace()语句将多行连接成一行,并使用group_concat()语句添加了开始和结尾括号(用于格式化)。

concat()