2013-08-21 88 views
0

我正在尝试将点和多边形从国家特定的坐标系转换为经纬度系统(GPS)。更新SQL Server几何列

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

我试图解决这个问题的办法:

  • 在表中查找的几何列点的最大数量使用while -loop和迭代器@i
  • (使用STNumPoints())),穿行所有几何点(达到之前发现的最大值)
  • 更新所有具有< = @i点的几何实例,将该点转换为GPS坐标系

这只有一个问题:似乎SQL Server不会让我更新几何实例中的单个点。

我试图找到有关在Web上更新几何实例的信息,但找不到任何信息。

是否有可能更新几何实例的部分?如果是这样,那么这样做的限制/先决条件是什么?

回答

0

看几何方法,我不这么认为。另一种方法是将它们分解存储(即将多边形存储为其构成要素),然后在准备好将它们作为多边形对待时进行汇总。

另一个注意事项:如果这些信息确实代表地球上的点,请考虑使用地理数据类型。它将地球的曲率考虑在内,所以距离和面积等事情将会更加准确。

+0

我想点存储到地理的确是 - ,但为了做到这一点,源坐标的SRID必须得到支持(与荷兰坐标系显然不是,所以我必须转换值)。我现在已经解决了它,很快就会发布关于它的博客:)。 – vstrien

0

可以更新这样的:

SET @sqlCommand = 'USE [' + @databaseName + '];' + 
       ' UPDATE [dbo].[' + @tableName + ']' + 
       ' SET [GEOSTART] = geometry::STGeomFromText(''POINT ('' + [X1] + '' '' + [Y1] + '')'', 4326) WHERE X1<>'''' and Y1<>'''' '; 
EXEC (@sqlCommand)