我有几个包含多个多边形的表。我需要在这些多边形中找到可以在我的java测试类中使用的点。我一直在做的是发送一个查询来返回所有多边形,选择一个顶点作为一个点,大多数时候它都有效。
然而,这些表格代表风险数据,百分之一,百分之二,等等,因此一些点在表之间共享(较高风险的多边形由较低风险封装)。我可以使用什么查询来返回1个表中1个多面内的点,但不是我指定的任何其他点?
表格为river_100_1k,river_200_1k和river_1000_1k
答案 0 :(得分:1)
你可以做多次左连接:
SELECT a.gid, a.the_geom FROM pointsTable a
LEFT JOIN river_100_1k b
ON ST_Intersects(a.the_geom, b.the_geom)
LEFT JOIN
river_200_1k c
ON NOT ST_Intersects(a.the_geom, c.the_geom) -- Not Intersects
LEFT JOIN
river_1000_1k d
ON NOT ST_Intersects(a.the_geom, d.the_geom) -- Not Intersects
WHERE
AND c.gid IS NULL AND d.gid IS NULL AND b.gid=2 AND c.gid=2 AND d.gid=2 ;
我不确定我是否理解正确,但这是你应该采取的道路。
答案 1 :(得分:0)
使用ST_PointOnSurface(polygon)
获取多边形内的点。