Sql server 在SQL Server中将线字符串分解为线段
如何将线字符串分解为线段 行字符串类似:Sql server 在SQL Server中将线字符串分解为线段,sql-server,sql-server-2008,spatial,sql-server-2012,spatial-query,Sql Server,Sql Server 2008,Spatial,Sql Server 2012,Spatial Query,如何将线字符串分解为线段 行字符串类似: 'LINESTRING(0 0, 2 2, 0 2, 0 5)' 这是我的解决方案 DECLARE @g GEOMETRY DECLARE @h GEOMETRY SET @g = geometry::STGeomFromText('LINESTRING(0 0, 2 2, 0 2, 0 5)', 0); SET @h = geometry::STGeomFromText('LINESTRING(0 0, 3 3, 4 4, 0 4, 4 0, 2
'LINESTRING(0 0, 2 2, 0 2, 0 5)'
这是我的解决方案
DECLARE @g GEOMETRY
DECLARE @h GEOMETRY
SET @g = geometry::STGeomFromText('LINESTRING(0 0, 2 2, 0 2, 0 5)', 0);
SET @h = geometry::STGeomFromText('LINESTRING(0 0, 3 3, 4 4, 0 4, 4 0, 2 1)', 0)
CREATE TABLE #Lines
(
ID int IDENTITY(1,1)PRIMARY KEY CLUSTERED,
LINE GEOMETRY
)
CREATE TABLE #Segments
(
ID int IDENTITY(1,1)PRIMARY KEY CLUSTERED,
LINE int,
SEGMENT GEOMETRY
)
INSERT INTO #Lines (LINE)
SELECT @g
INSERT INTO #Lines (LINE)
SELECT @h
DECLARE @MaxNumOfPoints int
SET @MaxNumOfPoints = (SELECT MAX(LINE.STNumPoints()) FROM #Lines)
SELECT TOP (SELECT @MaxNumOfPoints) IDENTITY(int,1,1) AS n
INTO #Numbers
FROM MASTER..spt_values a
INSERT INTO #Segments (LINE, SEGMENT)
SELECT ID, LINE.STPointN(#Numbers.n).STUnion(LINE.STPointN(#Numbers.n + 1)).STConvexHull()
FROM
#Lines JOIN #Numbers
ON #Numbers.n <= LINE.STNumPoints() - 1
SELECT ID, LINE, SEGMENT.ToString() FROM #Segments
DROP TABLE #Segments
DROP TABLE #Lines
DROP TABLE #Numbers
这是我的解决方案
DECLARE @g GEOMETRY
DECLARE @h GEOMETRY
SET @g = geometry::STGeomFromText('LINESTRING(0 0, 2 2, 0 2, 0 5)', 0);
SET @h = geometry::STGeomFromText('LINESTRING(0 0, 3 3, 4 4, 0 4, 4 0, 2 1)', 0)
CREATE TABLE #Lines
(
ID int IDENTITY(1,1)PRIMARY KEY CLUSTERED,
LINE GEOMETRY
)
CREATE TABLE #Segments
(
ID int IDENTITY(1,1)PRIMARY KEY CLUSTERED,
LINE int,
SEGMENT GEOMETRY
)
INSERT INTO #Lines (LINE)
SELECT @g
INSERT INTO #Lines (LINE)
SELECT @h
DECLARE @MaxNumOfPoints int
SET @MaxNumOfPoints = (SELECT MAX(LINE.STNumPoints()) FROM #Lines)
SELECT TOP (SELECT @MaxNumOfPoints) IDENTITY(int,1,1) AS n
INTO #Numbers
FROM MASTER..spt_values a
INSERT INTO #Segments (LINE, SEGMENT)
SELECT ID, LINE.STPointN(#Numbers.n).STUnion(LINE.STPointN(#Numbers.n + 1)).STConvexHull()
FROM
#Lines JOIN #Numbers
ON #Numbers.n <= LINE.STNumPoints() - 1
SELECT ID, LINE, SEGMENT.ToString() FROM #Segments
DROP TABLE #Segments
DROP TABLE #Lines
DROP TABLE #Numbers
你到底需要什么?样本输出?你到底需要什么?样本输出?