1

我在表中有点数据和多面数据。如何使用 postgis 和 geodjango 找到位于多多边形边界上的点?

4

3 回答 3

1

我无法帮助你解决 geodjango,但我可以给你一个 PostGIS 查询。

SELECT ST_Contains(ST_Boundary(ST_GeomFromText('POLYGON((1 1,0 0, -1 1, 1 1))')),
                               ST_GeomFromText(points.g))
FROM UNNEST(ARRAY['POINT(1 1)', 'POINT(0 1)']) points (g)

关键是用来ST_Boundary获取多边形的边界并检查它是否包含该点。

于 2013-02-26T23:58:18.620 回答
0

我猜你可以只使用 PostGIS SQL:

SELECT points,area from points_table,area WHERE 
area_geometry && points 
AND ST_Contains(area_geometry,points)
于 2012-11-27T07:02:48.610 回答
0

使用 ST_Covers 它包含自己的边界。但是在这种情况下要小心,一个点可以被许多(多)多边形包含。

SELECT ST_Covers(ST_GeomFromText('POLYGON((1 1,0 0, -1 1, 1 1))'),
                               ST_GeomFromText(points.g))
FROM UNNEST(ARRAY['POINT(1 1)', 'POINT(0 1)', 'POINT(0 0.5)']) points (g)
于 2015-07-20T12:52:24.910 回答