更新语句-地理列-sql server

问题描述 投票:0回答:2

更新 sql server 中的地理列与常规字段(varchar ....)有什么不同吗?您能否提供一份示例声明来执行此操作。谢谢。

sql sql-server-2008
2个回答
15
投票

我不确定这是否是您正在寻找的答案 - 但正如我所说,主要区别在于更新“常规字段”时,您通常直接提供新值 - 例如:

UPDATE mytable SET name = 'John' WHERE id = 1

更新地理列时,您可能无法直接提供该值(因为它是一个非常长的十六进制数字,它对地理信息进行编码),但您需要从其他一些值(可以但不必)计算它是同一个表的列),例如:

UPDATE mytable SET gps=geography::STPointFromText('POINT(' + lng + ' ' + lat + ')', 4326) 

其中

lng
lat
是以“人类可读”格式指定 GPS 坐标的 varchar 值(如
lat = '48.955790'
lng = '20.524500'
) - 在这种情况下,它们也是
mytable
的列。


5
投票

如果您有 LatitudeLongitude 作为小数,您可以更新地理列,如下所示:

DECLARE @latitude DECIMAL(15,6)
    ,@longitude DECIMAL(15,6);

SET @latitude = 29.938580;
SET @longitude = -81.337384;

UPDATE Properties
SET Geog = GEOGRAPHY::Point(@latitude, @longitude, 4326)
WHERE PropertyID = 858;

4326 是代表 WGS 84(世界大地测量系统 1984)的空间参考标识符。它基本上是用于平坦地球测绘或圆形地球测绘的特定椭球体。

© www.soinside.com 2019 - 2024. All rights reserved.