sql - 如何将多个 LineString 行组合成一个单行集合

标签 sql sql-server-2008 geospatial spatial

我正在使用 SQL Server 2008 和 Geometry 数据类型来存储英国道路列表,该列表是我从 Ordanance Survey STRATEGI 导入的。数据集。

每条道路被分成多行,每行包含一条线(由一段组成的Linestring)。例如A369由18条独立的线组成,如下图所示:

Screen capture of current linestrings

我想要做的就是收集包含道路部分的所有单独行,并创建一个新行,将所有组合的单独行保存为一个线串。

换句话说,运行代码 SELECT * FROM Structure WHERE Name = 'A369' 将仅返回一行,但仍绘制上图中所示的道路。

最佳答案

只需使用.STUnion

BEGIN
-- create a test table
DECLARE @test TABLE(seg GEOMETRY);
INSERT INTO @test VALUES(geometry::STGeomFromText('LINESTRING (0 0, 50 100)', 0))
INSERT INTO @test VALUES(geometry::STGeomFromText('LINESTRING (50 100, 100 200)', 0))
INSERT INTO @test VALUES(geometry::STGeomFromText('LINESTRING (100 200, 150 300)', 0))
--SELECT seg.STAsText() FROM @test
DECLARE @geom GEOMETRY
SELECT @geom = (SELECT TOP 1 seg FROM @test)
-- union all the linestring points
SELECT @geom = @geom.STUnion([seg]) FROM @test
-- do what you want with the results
SELECT @geom
print(@geom.STAsText())
END

关于sql - 如何将多个 LineString 行组合成一个单行集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8154672/

相关文章:

sql-server-2008 - 在 Sql server 2008 中的 Merge 语句中输出 $action?

sql - 连接多个公用表表达式

sql - 使用 Group By 获取总计

r - 计算大型 df(12k+ 列,3.5k 行)的 Moran's I,并将结果存储在单独的 df 中

sql - 使用 SQL Server 数据库邮件以表格格式发送电子邮件

mysql - 如何将条件内部查询转换为 MYSQL 中的 LEFT JOIN?

sql - 对 postgresql 9.6 中的列集进行总和值分组

r - 计算多边形的坡度和坡向

python - Mac 中 Django 的 GDAL 配置 GDAL_LIBRARY_PATH 异常

php - 重新排序 MySQL