Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中将线字符串分解为线段_Sql Server_Sql Server 2008_Spatial_Sql Server 2012_Spatial Query - Fatal编程技术网

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

你到底需要什么?样本输出?你到底需要什么?样本输出?