将一个点扩展特定的英里数
Expand a point by a specific number of miles
所以我在 SQL 服务器中有一个地理类型的空间列。这将 lat/long 坐标表示为单个点
值如下所示(作为字符串)
POINT (-96.63 32.97)
我想做的是将其扩展为 circle/polygon 特定的英里数。
我认为 STBuffer
是我想要的命令,但我不知道如何使用它将半径扩大 X 英里数。
我的目标是稍后对其执行 STContains
以查看其中是否包含其他地理对象。像这样:
WHERE L.SPATIAL_OBJ.STContains(IBL.SPATIAL_OBJ) = 1
我明白了。看起来像这样。
我会把它作为一个函数来做。
CREATE FUNCTION [dbo].[udf_mile_ring]
(
@lat FLOAT,
@lon FLOAT,
@miles int
)
RETURNS GEOGRAPHY
AS
BEGIN
DECLARE @meters FLOAT = @miles / 0.000621371;
RETURN GEOGRAPHY::Point(@lat, @lon, 4326).STBuffer(@meters);
END
GO
所以我在 SQL 服务器中有一个地理类型的空间列。这将 lat/long 坐标表示为单个点
值如下所示(作为字符串)
POINT (-96.63 32.97)
我想做的是将其扩展为 circle/polygon 特定的英里数。
我认为 STBuffer
是我想要的命令,但我不知道如何使用它将半径扩大 X 英里数。
我的目标是稍后对其执行 STContains
以查看其中是否包含其他地理对象。像这样:
WHERE L.SPATIAL_OBJ.STContains(IBL.SPATIAL_OBJ) = 1
我明白了。看起来像这样。 我会把它作为一个函数来做。
CREATE FUNCTION [dbo].[udf_mile_ring]
(
@lat FLOAT,
@lon FLOAT,
@miles int
)
RETURNS GEOGRAPHY
AS
BEGIN
DECLARE @meters FLOAT = @miles / 0.000621371;
RETURN GEOGRAPHY::Point(@lat, @lon, 4326).STBuffer(@meters);
END
GO