我有200分(=土着社区),我在每个地块的中心绘制了3个缓冲区(=生态系统服务需求区)。我真正需要的是第二个和第三个缓冲区不是从圆周中心开始,而是从它结束前一个缓冲区开始,就像一个环而不是一个圆周:
BUFFER 1 = 0到8 km
BUFFER 2 = 8到14 km(不是0-14)
BUFFER 3 = 14到18 km(不是0-18)
缓冲区是超级的,所以当我使用“擦除”功能时,我不会得到一个好结果:在它们之间切割Rrings,如图所示...... This is the bad result!!
我试图在QGIS中使用以下代码在POSTGRESQL中执行此操作,但未成功:
CREATE TABLE maria.buffer_km14_erase AS
SELECT gid, buff_dist, id_comu, ST_DIFFERENCE (the_geom,
(SELECT ST_UNION (the_geom) FROM maria.buffer_km08)) AS the_geom
FROM maria.buffer_km14;
我想我需要添加一个通过ID“个性化”每个擦除功能的子句,但我不知道该怎么做!有什么建议吗?
非常感谢!!!!
答案 0 :(得分:1)
@Alex
我使用循环制作...以下是代码:
首先,我创建了一个空表:
CREATE TABLE maria.buffer_km14_erase (id_comu int, the_geom geometry(Polygon,96842)) -- col names & type
其次,我应用了循环!
DO
$do$
BEGIN
FOR i IN 1..202 LOOP -- 202 is the maximum n
INSERT INTO maria.buffer_km14_erase (id_comu, the_geom) -- empty table and col names
(SELECT id_comu, ST_DIFFERENCE (the_geom,
(SELECT the_geom FROM maria.buffer_km08 WHERE id_comu=i)) AS the_geom
FROM maria.buffer_km14
WHERE id_comu=i);
END LOOP;
END;
$do$;
感谢!!!