5

定义几个点如下:

declare @p1 geography, @p2 geography
set @p1 = 'POINT(1 2)'
set @p2 = 'POINT(6 8)'

现在我想获得这两点之间的最短线。我可以使用什么功能来获取这条线?(即,它应该输出一个 LINESTRING(1 2, 6 8) 或 LINESTRING(6 8, 1 2))

我知道我可以通过将点格式化为 WKT,进行一些字符串操作,然后将其解析回来来做到这一点,但这似乎很荒谬。当然有一些方法可以直接从一系列点构造线串?

(对于“几何”类型,我可以使用@p2.STUnion(@p1).STConvexHull(),但是对于地理类型没有STConvexHull()。)

4

1 回答 1

5

在 T-SQL 中有两种方法可以做到这一点:

declare @p1 geography = 'POINT(1 2)', @p2 geography = 'POINT(6 8)';

-- using geometry
SELECT geography::Parse(geometry::Parse(@p2.STUnion(@p1).ToString()).STConvexHull().ToString())

-- using lat, long methods
SELECT geography::Parse('LINESTRING('+str(@p1.Long)+' '+str(@p1.Lat)+','+str(@p2.Long)+' '+str(@p2.Lat)+')')
于 2009-02-01T13:32:08.600 回答