我刚开始使用Spatial数据库。我有一个包含数据类型为Latitude
的{{1}}和Longitude
列的表格。
现在我想在我的表中添加一个数据类型double
的列,以便我可以使用此表进行空间查询。我想在此列中插入包含该点的数据(来自geometry
和Latitude
列。)。
我怎么能这样做?
答案 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)
这里的4326是您正在使用的空间参照系。 4326是WGS84空间参考系统的代码,它用于全局纬度/经度坐标。