我正在使用 SQL Server 2008 和Geometry
数据类型来存储英国道路列表,我从地形测量战略数据集。
每条路被分成多行,每行包含一行(A Linestring
由一段组成)。例如A369由18条独立的线路组成,如下图所示:
我想要做的就是收集包含道路部分的所有单独的行,并创建一个新行,将所有组合的单独线保存为一个线串。
换句话说,运行代码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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)