Sql server 更新SQL Server几何体列
我正在尝试将点和多边形从特定国家的坐标系转换为经纬度系统(GPS) 尽管我有(相当复杂的)公式来计算给定一组特定坐标的平移,但我仍然坚持使用SQL Server几何体列,它不仅包含点,还包含多边形和直线 我试图解决这个问题的方式:Sql server 更新SQL Server几何体列,sql-server,geometry,gis,Sql Server,Geometry,Gis,我正在尝试将点和多边形从特定国家的坐标系转换为经纬度系统(GPS) 尽管我有(相当复杂的)公式来计算给定一组特定坐标的平移,但我仍然坚持使用SQL Server几何体列,它不仅包含点,还包含多边形和直线 我试图解决这个问题的方式: 在表格的几何图形列中查找最大点数(使用STNumPoints())) 使用while-循环和迭代器@i,遍历所有几何点(直到前面找到的最大值) 更新所有几何体实例,查看几何体方法,我不这么认为。另一种方法是将它们分类存储(即,将多边形存储为其组成点),然后在准备将它
- 在表格的几何图形列中查找最大点数(使用
)STNumPoints())
- 使用
-循环和迭代器while
,遍历所有几何点(直到前面找到的最大值)@i
- 更新所有几何体实例,查看几何体方法,我不这么认为。另一种方法是将它们分类存储(即,将多边形存储为其组成点),然后在准备将它们视为多边形时将其聚合
另一个注意事项:如果这些信息实际上代表地球上的点,则考虑使用地理数据类型来代替。它考虑了地球的曲率,因此距离和面积等因素将更加精确。您可以这样更新:SET @sqlCommand = 'USE [' + @databaseName + '];' + ' UPDATE [dbo].[' + @tableName + ']' + ' SET [GEOSTART] = geometry::STGeomFromText(''POINT ('' + [X1] + '' '' + [Y1] + '')'', 4326) WHERE X1<>'''' and Y1<>'''' '; EXEC (@sqlCommand)
我确实想将点存储到地理位置中-但是,为了做到这一点,必须支持源坐标的SRID(荷兰坐标系显然不支持,因此我必须转换值)。我已经研究过了,很快就会发布一篇关于它的博客:)。SET@sqlCommand='使用['+@databaseName+'];'+ '更新[dbo].['+@tableName+']+ 'SET[GEOSTART]=geometry::StGeomeFromText(''点(''+[X1]+'''''+[Y1]+'')',4326),其中X1''和Y1''; EXEC(@sqlCommand)