gpt4 book ai didi

MySQL和拆分空间数据

转载 作者:行者123 更新时间:2023-11-30 22:42:52 25 4
gpt4 key购买 nike

我有一个 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...即使我不知道有多少对存在并且我有两个定界符...坐标之间的空格和对之间的逗号。

最佳答案

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

SET group_concat_max_len = 2048;

SELECT CONCAT('[', REPLACE(REPLACE(Group_concat(DISTINCT(ST_AsText(ST_ExteriorRing(c.coordinate))), ''), "LINESTRING(", ""), ")", ""), ']') as punto
from `app_coordinate` c, app_type_coordinate tc
where c.idtypecoord = tc.idtypecoord
and tc.description="safezone";

关于MySQL和拆分空间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com