在多边形查询中的点上缓冲多边形

Posted

技术标签:

【中文标题】在多边形查询中的点上缓冲多边形【英文标题】:Buffer Polygon on Point in Polygon Query 【发布时间】:2016-05-22 05:12:20 【问题描述】:

我想将警告多边形缓冲两英里,谁能帮助我 因此,如果 ema 个人在列出警告的数英里内,我一直在尝试使用 ST 缓冲区(以扩大搜索的多边形覆盖范围)但似乎无法正确处理?是否以米为单位 (3218.69)?我正在使用最新的 opengeo 套件。

SELECT DISTINCT ON (ema.name) 
ST_X(ema.geom),ST_Y(ema.geom),ema."name", torpoly.expire
FROM ema INNER JOIN torpoly ON ST_Within(ema.geom, ST_BUFFER(torpoly.geom) 
ORDER BY ema."name" 

【问题讨论】:

EMA 是点,torpoly 是 Polygon 是 geom,EPSG:4326 我认为我使用的是地图单位,而不是我今天试图弄清楚的米。 【参考方案1】:

您的选择是:

    为使用以米或英尺为单位的线性单位(UTM、州平面等)的区域使用适当的投影坐标系。 geometry 类型的所有距离计算都使用笛卡尔坐标系,既快速又简单。 使用geography 类型,它对具有EPSG:4326(纬度/经度)的对象进行距离计算,距离单位为米。如果您不想更改数据类型,可以使用 geom::geography 演员表,并可能在该演员表上创建索引。

并且永远不要为这种类型的分析执行 ST_Within(.., ST_Buffer())。它更慢且不完美。相反,使用ST_DWithin,它会找到所有geometry/geography 对象在彼此的距离阈值内,这就像一个缓冲区。此函数可能使用空间 GiST 索引(如果存在)。

【讨论】:

以上是关于在多边形查询中的点上缓冲多边形的主要内容,如果未能解决你的问题,请参考以下文章

在 WebGL 中的地图上(循环通过索引缓冲区)绘制单个多边形 - 建筑物、国家边界等

不相交多边形中的点

sp::over() 用于多边形分析中的点

斯威夫特:多边形中的点?如何检查用户的位置是不是在 Geo-JSON 多边形内?

当测试点位于多边形边缘时,多边形算法中的点返回真

多边形算法中的点有时会给出错误的结果[关闭]