gpt4 book ai didi

postgresql - 从线的左侧和右侧查找多边形

转载 作者:行者123 更新时间:2023-11-29 13:41:09 24 4
gpt4 key购买 nike

我有线表和多边形表。一些线(可能占所有线的 1%)位于多边形之间的边界上(大多数线位于一个多边形内)。

如何有效判断给定线段“左边”和“右边”的多边形?

这是我目前的实验:制作左右各 1 米的平行线 (ST_OffsetCurve),取第一个几何结果,因为它可能是多线串 (ST_GeometryN),取这些线的中点 (ST_LineInterpolatePoint),然后查询包含这些点的多边形 (ST_Contains)。

... WHERE ST_Contains(polygon.geom, ST_Transform(ST_LineInterpolatePoint(ST_GeometryN(ST_OffsetCurve(ST_Transform(line.geom,3857), -1),1), 0.5), 4326)

可以用,但是很慢(当然几何图形有GIST索引)。

知道如何加快速度,或者可能完全不同的方法来确定左侧和右侧的多边形吗?

最佳答案

如果您的表是多边形线,我建议在join 中使用ST_Intersects 进行过滤:

SELECT *
FROM polygones p INNER JOIN lines l ON ST_Intersects(p.geom, l.geom)
WHERE
ST_Contains(
polygon.geom,
ST_Transform(
ST_LineInterpolatePoint(
ST_GeometryN(
ST_OffsetCurve(
ST_Transform(line.geom,3857)
, -1)
, 1)
, 0.5)
, 4326)
)

关于postgresql - 从线的左侧和右侧查找多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55259522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com