当前位置:  开发笔记 > 数据库 > 正文

使用SQL 2008空间函数,如何构造表示两个(或更多)POINT实例之间的行的LINESTRING?

如何解决《使用SQL2008空间函数,如何构造表示两个(或更多)POINT实例之间的行的LINESTRING?》经验,为你挑选了1个好方法。

定义几点如下:

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().)



1> 小智..:

在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)+')')

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有