2013-08-21 131 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)