在多边形查询中的点上缓冲多边形
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 中的地图上(循环通过索引缓冲区)绘制单个多边形 - 建筑物、国家边界等