Sql server SQL Server空间从线字符串转换为多边形

Sql server SQL Server空间从线字符串转换为多边形,sql-server,spatial,spatial-query,Sql Server,Spatial,Spatial Query,有人能帮我将SQL Server几何图形对象转换为几何多边形对象吗 我有一个形状对象,它是“俄亥俄州南部平面图”,坐标为SRID32123,我想将其转换为SRID3857的几何多边形 这就是我目前所拥有的。。。当我运行它时,会出现以下错误 错误:“24119:多边形输入无效,因为外环的起点和终点不同。多边形的每个环必须具有相同的起点和终点。” 错误是告诉你问题出在哪里。也就是说,多边形需要以同一点开始和结束。您的行字符串没有(开始于544447.66750002524 219649.366967

有人能帮我将SQL Server几何图形对象转换为几何多边形对象吗

我有一个形状对象,它是“俄亥俄州南部平面图”,坐标为SRID32123,我想将其转换为SRID3857的几何多边形

这就是我目前所拥有的。。。当我运行它时,会出现以下错误

错误:“24119:多边形输入无效,因为外环的起点和终点不同。多边形的每个环必须具有相同的起点和终点。”


错误是告诉你问题出在哪里。也就是说,多边形需要以同一点开始和结束。您的行字符串没有(开始于
544447.66750002524 219649.36696754955
,结束于
544419.05563904892 220098.0278227763
)。我能够通过获取线字符串的起点并将其附加到末尾来使其工作。如果这是一次性操作,那就足够了。

错误会告诉您问题所在。也就是说,多边形需要以同一点开始和结束。您的行字符串没有(开始于
544447.66750002524 219649.36696754955
,结束于
544419.05563904892 220098.0278227763
)。我能够通过获取线字符串的起点并将其附加到末尾来使其工作。如果这是一次性操作,那就足够了。

与前面的答案一致,请简单地使用脚本,并进行如下更改:

--start point should be same as end point
DECLARE @predata varchar(MAX) = 'LINESTRING (
544447.66750002524 219649.36696754955, 
544446.556000026 219690.21900326665, 
544443.99000002549 219720.61000326276, 
544435.09000002721 219836.23000326566, 
544431.66000001959 219896.72000326123, 
544430.0600000252 219924.97000326123, 
544422.56000002555 219999.65000326186, 
544447.66750002524 219649.36696754955)'; 
--end point should be same as start point
DECLARE @data geometry;
DECLARE @linestring geometry = @predata;
DECLARE @srid int;
SET @predata = REPLACE(@predata, 'LINESTRING', 'POLYGON(') + ')';
SELECT @predata AS PolygonString
SET @data = geometry::STGeomFromText(@predata, 3857);
SELECT @data AS GeographyPolygon

与前面的答案一致,请简单地使用您的脚本,稍作更改,如下所示:

--start point should be same as end point
DECLARE @predata varchar(MAX) = 'LINESTRING (
544447.66750002524 219649.36696754955, 
544446.556000026 219690.21900326665, 
544443.99000002549 219720.61000326276, 
544435.09000002721 219836.23000326566, 
544431.66000001959 219896.72000326123, 
544430.0600000252 219924.97000326123, 
544422.56000002555 219999.65000326186, 
544447.66750002524 219649.36696754955)'; 
--end point should be same as start point
DECLARE @data geometry;
DECLARE @linestring geometry = @predata;
DECLARE @srid int;
SET @predata = REPLACE(@predata, 'LINESTRING', 'POLYGON(') + ')';
SELECT @predata AS PolygonString
SET @data = geometry::STGeomFromText(@predata, 3857);
SELECT @data AS GeographyPolygon