gpt4 book ai didi

polygon - 在PostGIS中,如何找到多边形内的所有点?

转载 作者:行者123 更新时间:2023-12-02 08:54:03 28 4
gpt4 key购买 nike

我使用 PostgreSQL 和 GIS 扩展来存储 map 数据,以及 OpenLayers、GeoServer 等。给定一个多边形,例如对于一个邻域,我需要找到存储在多边形内的某个表(例如交通灯、餐馆)中的所有纬度/经度点。或者,给定一组多边形,我想找到每个多边形内的点集(如 GROUP BY 查询,而不是迭代每个多边形)。

这些函数是我需要编程的东西,还是可用的功能(作为扩展 SQL)?请详细说明。

另外,对于我拥有的简单 2D 数据,我实际上需要 GIS 扩展(GPL 许可证是一个限制)还是 PostgreSQL 就足够了?

谢谢!

最佳答案

在 PostGIS 中,您可以使用边界框运算符来查找候选对象,这非常有效,因为它使用 GiST 索引。然后,如果需要严格匹配,请使用 contains 运算符。

类似的东西

SELECT 
points,neighborhood_name from points_table,neighborhood
WHERE
neighborhood_poly && points /* Uses GiST index with the polygon's bounding box */
AND
ST_Contains(neighborhood_poly,points); /* Uses exact matching */

是否需要这个,取决于你的要求。为了使上述工作正常进行,您当然需要安装 PostGIS 和 GEOS。但是,如果边界框匹配就足够了,您可以简单地用 SQL 进行编码,而不需要 PostGIS。

如果需要精确匹配,则包含的算法是公开可用的,但要有效地实现它们,需要付出一些努力在库中实现它,然后从 SQL 调用该库(就像 GEOS)。

关于polygon - 在PostGIS中,如何找到多边形内的所有点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873083/

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