定义几点如下:
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().)
在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)+')')