【问题标题】:PostGIS compute orthogonal points at a given distancePostGIS 计算给定距离处的正交点
【发布时间】:2021-12-28 08:06:32
【问题描述】:

在 PostGIS 中,我需要在一条线的给定距离处计算 2 个垂直点 C 和 D,以便在地图上创建一个完美的矩形。投影 WGS84。 ABCD 必须是逆时针方向,如下图所示。

知道如何计算这 2 分吗?

【问题讨论】:

    标签: postgis


    【解决方案1】:

    给定任意线串,您可以使用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;
    

    【讨论】:

    • 抱歉反馈迟了。工作完美!谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-08-28
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多