【问题标题】:SQL Server Spatial convert from Linestring to PolygonSQL Server 空间从线串转换为多边形
【发布时间】:2021-08-24 20:00:21
【问题描述】:

谁能帮我将 SQL Server 几何形状对象转换为几何多边形对象。

我有一个 Shape 对象,它是“俄亥俄州计划南部”坐标的 SRID 32123,我想将其转换为 SRID 3857 的几何多边形

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

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

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, 544419.05563904892 220098.02782277763)';
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

【问题讨论】:

    标签: sql-server spatial spatial-query


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      --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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-22
        • 2023-01-12
        • 1970-01-01
        • 2023-02-02
        • 1970-01-01
        • 1970-01-01
        • 2020-01-25
        • 1970-01-01
        相关资源
        最近更新 更多