SQL Server 地理和空间函数

问题描述

我有一个表格,其中包含一系列我感兴趣的地球表面矩形区域的记录。

我将这些存储在这样的表中

CREATE TABLE [dbo].[Areas]
(
    [AreaID] [int] NOT NULL,[north] [decimal](8,6) NULL,[south] [decimal](8,[east] [decimal](9,[west] [decimal](9,6) NULL
)

我想开始做一些空间查询,所以我需要将那些限制纬度和经度转换为地理字段,并且正在考虑以下内容

[PointGeo] [geography] NULL,[LineGeo] [geography] NULL,[polyGeo] [geography] NULL

使用 PointGeo,我需要为每个框的角创建一个纬度/经度。 使用 LineGeo,我可能需要按顺序将点连接在一起,添加一个点的副本以关闭框。线条将主要用于显示目的。

使用 polyGeo 我需要使用相同的 LineGeo 节点来创建多边形

我可以使用类似的东西从纬度/经度值创建一个简单的点几何体

UPDATE dbo.<table>
SET PointGeo = geography::Point(Latitude,Longitude,4326)

除了使用 ...fromWKT... 函数之外,我看不出如何添加多个点或线/多边形,这些函数看起来像大量的文本操作,例如4 个边界点需要类似

UPDATE dbo.<table>
SET PointGeo = geography::STGeomFromText('MULTIPOINT((' + CAST(lat1 AS varchar(8)) + ' ' + CAST(long1 AS varchar(9)) + ' ),(' + CAST(lat2 AS varchar(8)) + ' ' + CAST(long2 AS varchar(9)) + ' ))',4326)

添加的节点越多,情况就变得越复杂,计算引号和括号以确保它们都以正确的顺序出现。

我是否缺少一些从纬度/经度坐标创建多点地理的简单函数

是否可以编写 T-sql 递归包装函数来实现此目的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)