无需使用STGeomFromText

时间:2019-02-20 16:52:04

标签: sql spatial

我正在尝试编写代码以翻译多边形。我遇到了这个解决方案: https://spatialdbadvisor.com/sql_server_blog/264/function-to-move-a-geometry-object-in-sql-server-spatial

不幸的是,我不断收到关于我的戒指没有关闭的错误。在进一步检查中,这是因为多边形具有很多点,以致WKT描述不适合最大长度的字符串。因此,@ p_geometry.AsTextZM()的返回值将被截断。

我正在寻找一种替代方法。我想出的最好办法是遍历多边形中的点,然后a)一次更新一个,或b)将它们插入新的几何体中。

select @g=shape from data

set @i=1
WHILE @i <= @g.STNumGeometries() BEGIN
    set @h = @g.STGeometryN(@i)
    set @j=1    
    WHILE @j <= @h.STNumPoints() BEGIN
        set @x=@h.STPointN(@j).STX + @delta_x
        set @y=@h.STPointN(@j).STX + @delta_y

        -- either update this point or add it to a new geometry object

        SET @j = @j + 1
    END 
    SET @i = @i + 1
END

但是,似乎STPointN是只读的(任何人都可以验证吗?),因此我无法更新几何。并创建一个新的几何图形,我需要使用STGeomFromText(),因为它将字符串作为输入,因此将受到字符串长度的相同限制

如果有一个向多边形添加点的函数,我可以使用它。但是我找不到任何这样的功能。

有什么想法吗? 提前致谢, -埃里克

0 个答案:

没有答案