SQL Server 行构造函数或 ST_MakeLine(pt1,pt2) 版本?

Eva*_*oll 6 sql-server spatial

PostGIS 提供了一个名为ST_MakeLine(pt1,pt2). 它非常适合构建线条。MySQL 对LineString(pt1,pt2). 什么叫 SQL Server 模拟,它需要两个点并构造一个 LineString?

了一下LineString,但没有看到提到它。

这是一个关于 dbfiddle 的测试用例

样本数据,

CREATE TABLE #tmp (
  pt1 geometry,
  pt2 geometry,
);

INSERT INTO #tmp(pt1,pt2) VALUES
  (geometry::Point(1,1,4326), geometry::Point(2,2,4326)),
  (geometry::Point(2,2,4326), geometry::Point(5,5,4326)),
  (geometry::Point(3,3,4326), geometry::Point(4,4,4326)),
  (geometry::Point(4,4,4326), geometry::Point(3,3,4326)),
  (geometry::Point(5,5,4326), geometry::Point(4,4,4326));
Run Code Online (Sandbox Code Playgroud)

询问

SELECT pt1, pt2
  'My Line' AS line -- what goes here
FROM #tmp;
Run Code Online (Sandbox Code Playgroud)

我希望“My Line”成为LineString.

pt1         pt2         line
POINT (1 1) POINT (2 2) My Line
POINT (2 2) POINT (5 5) My Line
POINT (3 3) POINT (4 4) My Line
POINT (4 4) POINT (3 3) My Line
POINT (5 5) POINT (4 4) My Line
Run Code Online (Sandbox Code Playgroud)

Bra*_*adC 8

尝试ShortestLineTo()

SELECT
  pt1.ToString(),
  pt2.ToString(),
  pt1.ShortestLineTo(pt2).ToString() AS line -- what goes here
FROM #tmp;
Run Code Online (Sandbox Code Playgroud)

退货

POINT (1 1)   POINT (2 2)   LINESTRING (1 1, 2 2)
POINT (2 2)   POINT (5 5)   LINESTRING (2 2, 5 5)
POINT (3 3)   POINT (4 4)   LINESTRING (3 3, 4 4)
POINT (4 4)   POINT (3 3)   LINESTRING (4 4, 3 3)
POINT (5 5)   POINT (4 4)   LINESTRING (5 5, 4 4)
Run Code Online (Sandbox Code Playgroud)