嗯,我有2个表,一个表示多边形,第二个表。我想知道两件事,第一件是第一张表的多边形区域,第二件是2个几何图形的交叉区域: 1)第一个表的多边形区域 2)位于多边形内部的点周围150米半径缓冲区的并集区域。
我做了查询,但出了点问题,因为如果我设置WHERE
子句只选择第一个表中的一个多边形,那么一切正常,但是如果我想要所有的数据多边形,然后我得到错误:“执行交集时出错:TopologyException:输入geom 0无效:自相交点或附近点12.20304662098798 46.117661703823636 at 12.20304662098798 46.117661703823636”
第一个有效的查询是:
SELECT residenziali.code,
ST_Area(residenziali.the_geom::geography, true) as area_zona,
ST_Area(ST_Intersection(residenziali.the_geom,
(ST_Union(ST_Buffer(fermate.the_geom::geography, 150)::geometry)))::geography,true) as intersect
FROM residenziali
JOIN fermate ON st_contains(residenziali.the_geom , fermate.the_geom)
WHERE residenziali.id = '969'
GROUP BY residenziali.code,residenziali.the_geom
当我删除WHERE
子句时,它不再起作用,错误是什么?
两个表的几何列都是“the_geom”,第一个表是“residenziali”,第二个表是“fermate”,两者都使用WGS84。感谢!!!