了解SQL Server中的空间数据库概念

时间:2016-05-19 09:32:50

标签: sql-server sql-server-2012

我刚开始使用Spatial数据库。我有一个包含数据类型为Latitude的{​​{1}}和Longitude列的表格。

现在我想在我的表中添加一个数据类型double的列,以便我可以使用此表进行空间查询。我想在此列中插入包含该点的数据(来自geometryLatitude列。)。

我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

如果是我,我会使用持久计算列。

create table G(
   [ID] int identity primary key clustered,
   [longitude] float, 
   [latitude] float, 
   [point] as geography::Point(latitude, longitude, 4326) persisted
)

完成此操作后,您只需维护经度和纬度列,点列将自动更正。

答案 1 :(得分:1)

您应该将这些点存储为sql server geography而不是sql server geometry。 SQL Server地理位置将为您提供更精确的距离和区域计算,因为它考虑了地球的球形。 SQL几何是平面几何,对纬度和经度特别不好,因为距离等的单位是度数!

在数据类型地理位置表中创建一个名为(say)geog的列。 因为所有数据都是点数,所以用表格更新表格非常容易:

Update MyTable set geog = geography::Point(latitude, longitude, 4326)

MSDN

这里的4326是您正在使用的空间参照系。 4326是WGS84空间参考系统的代码,它用于全局纬度/经度坐标。