【发布时间】:2021-12-28 08:06:32
【问题描述】:
在 PostGIS 中,我需要在一条线的给定距离处计算 2 个垂直点 C 和 D,以便在地图上创建一个完美的矩形。投影 WGS84。 ABCD 必须是逆时针方向,如下图所示。
知道如何计算这 2 分吗?
【问题讨论】:
标签: postgis
在 PostGIS 中,我需要在一条线的给定距离处计算 2 个垂直点 C 和 D,以便在地图上创建一个完美的矩形。投影 WGS84。 ABCD 必须是逆时针方向,如下图所示。
知道如何计算这 2 分吗?
【问题讨论】:
标签: postgis
给定任意线串,您可以使用ST_OffsetCurve 计算具有自定义距离(在本例中设置为 2 米)的平行线。我们之后反转它。然后,您可以将 2 个线串的起点和终点相互连接起来,这将产生“连接”线串。
WITH focus_line AS (
SELECT ST_GeomFromText('LineString(-0.108092 51.519324, -0.107643 51.517861)', 4326) AS geom
),
parallel_line AS (
SELECT ST_Reverse(
ST_Transform(
ST_OffsetCurve(
ST_Transform(
geom,
3857),
2, 'join=round'),
4326)
) AS geom
FROM focus_line
)
SELECT ST_AsText(a.geom) AS focus,
ST_AsText(b.geom) AS parallel,
ST_AsText(
ST_MakeLine(
ST_StartPoint(a.geom), ST_EndPoint(b.geom)
)
) AS connection_1,
ST_AsText(
ST_MakeLine(
ST_EndPoint(a.geom), ST_StartPoint(b.geom)
)
) AS connection_2
FROM focus_line a, parallel_line b;
【讨论】: