如何获取包含多行的lineString列的MBR?

时间:2014-07-14 08:01:26

标签: mysql spatial

我需要从包含lineString类型列的多行的表中获取MBR。

使用envelope我可以从单行获取MBR,因为envelope不是聚合函数。

如何获得包含多行的一行MBR of lineString?

1 个答案:

答案 0 :(得分:0)

复杂的查询。最后一行会有结果。

SELECT 
   @id := id, 
   @geometry := Envelope(if(isNull(@geometry), `line`, GeometryCollection( `line` , geomFromText(AsText(@geometry))))), 
   AsText(@geometry)
FROM `table_line`
JOIN (SELECT @id :=0, @geometry := NULL) `tmp`
WHERE id > @id
ORDER BY id ASC

使用this answer

geomFromText(AsText(@geometry)) - 这是必要的,因为GeometryCollection不适用于直接变量。

P.S。但它非常复杂,不要在生产中使用它。