Sql server 更新SQL Server几何体列

Sql server 更新SQL Server几何体列,sql-server,geometry,gis,Sql Server,Geometry,Gis,我正在尝试将点和多边形从特定国家的坐标系转换为经纬度系统(GPS) 尽管我有(相当复杂的)公式来计算给定一组特定坐标的平移,但我仍然坚持使用SQL Server几何体列,它不仅包含点,还包含多边形和直线 我试图解决这个问题的方式: 在表格的几何图形列中查找最大点数(使用STNumPoints())) 使用while-循环和迭代器@i,遍历所有几何点(直到前面找到的最大值) 更新所有几何体实例,查看几何体方法,我不这么认为。另一种方法是将它们分类存储(即,将多边形存储为其组成点),然后在准备将它

我正在尝试将点和多边形从特定国家的坐标系转换为经纬度系统(GPS)

尽管我有(相当复杂的)公式来计算给定一组特定坐标的平移,但我仍然坚持使用SQL Server几何体列,它不仅包含点,还包含多边形和直线

我试图解决这个问题的方式:

  • 在表格的几何图形列中查找最大点数(使用
    STNumPoints())
  • 使用
    while
    -循环和迭代器
    @i
    ,遍历所有几何点(直到前面找到的最大值)

  • 更新所有几何体实例,查看几何体方法,我不这么认为。另一种方法是将它们分类存储(即,将多边形存储为其组成点),然后在准备将它们视为多边形时将其聚合


    另一个注意事项:如果这些信息实际上代表地球上的点,则考虑使用地理数据类型来代替。它考虑了地球的曲率,因此距离和面积等因素将更加精确。

    您可以这样更新:

    SET @sqlCommand = 'USE [' + @databaseName + '];' +
                  ' UPDATE [dbo].[' + @tableName + ']' +
                  ' SET [GEOSTART] = geometry::STGeomFromText(''POINT ('' + [X1] + '' '' + [Y1] + '')'', 4326) WHERE X1<>'''' and Y1<>'''' '; 
    EXEC (@sqlCommand)
    
    SET@sqlCommand='使用['+@databaseName+'];'+
    '更新[dbo].['+@tableName+']+
    'SET[GEOSTART]=geometry::StGeomeFromText(''点(''+[X1]+'''''+[Y1]+'')',4326),其中X1''和Y1'';
    EXEC(@sqlCommand)
    
    我确实想将点存储到地理位置中-但是,为了做到这一点,必须支持源坐标的SRID(荷兰坐标系显然不支持,因此我必须转换值)。我已经研究过了,很快就会发布一篇关于它的博客:)。