[Portugal] Intersectar tabelas Postgis
Pedro Venâncio
pedrongvenancio at yahoo.com
Thu Jul 14 10:53:51 EDT 2011
Olá boa tarde,
Muito obrigado pelas dicas! Consegui avançar, mas há qualquer coisa que ainda falta.
Com esta função consigo chegar ao objectivo
UPDATE plantas_emitidas
SET dicofre_plantas = (SELECT dicofre
FROM caop_2010
WHERE st_contains(caop_2010.the_geom, plantas_emitidas.the_geom));
Aqui fiquei com uma dúvida, se for para actualizar duas colunas de uma tabela, com duas da outra (em vez de uma), como ficaria? Fiz várias tentativas, mas todas elas deram erro...
Depois criei a função trigger
CREATE OR REPLACE FUNCTION preenche_dicofre_plantas()
RETURNS TRIGGER AS
$BODY$
BEGIN
SELECT dicofre INTO NEW.dicofre_plantas
FROM caop_2011
WHERE st_contains(caop_2010.the_geom, plantas_emitidas.the_geom);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
E defini a trigger na tabela plantas_emitidas, com o pgAdmin.
No QGIS acrescento novos pontos, mas quando vou guardar aparece-me este erro
ERROR: relation "caop_2011" does not exist
LINE 1: SELECT dicofre FROM caop_2011 WHERE st_contains(caop_2010.th...
^
QUERY: SELECT dicofre FROM caop_2011 WHERE st_contains(caop_2010.the_geom, plantas_emitidas.the_geom)
CONTEXT: PL/pgSQL function "preenche_dicofre_plantas" line 2 at SQL statement
Que relação é necessário estabelecer?
Obrigado pelo apoio!
Pedro
----- Original Message -----
From: Jorge Gustavo Rocha
Olá,
Se tens uma tabela caop e uma tabela de pontos, para preencheres o
concelho e freguesia, ou preencheres o DICOFRE, basta algo do género:
update pontos
set dcf = (select dicofre
from caop
where st_contains(wkb_geometry, pontos.wkb_geometry));
Para não teres que fazer isso sempre que alteras a tabela pontos, cria
um trigger que faça essa actualização automaticamente. Primeiro crias a
"função de trigger" e depois associas essa função aos eventos insert e
update. Vê se te safas com a explicação em
http://geobox.geospot.pt/pt/index.php/Cria%C3%A7%C3%A3o_de_triggers
Bom trabalho,
Jorge
Qui, 2011-07-14 às 04:53 -0700, Pedro Venâncio escreveu:
> Olá boa tarde,
>
> Tenho 2 layers Postgis, uma de pontos e outra de polígonos (CAOP2010). O que eu gostava de fazer era "preencher" automaticamente 2 campos (concelho e freguesia) na tabela de pontos, sempre que crio um novo ponto, com base na intersecção com a CAOP.
>
>
> Não sei se este procedimento é muito complexo ou não, se alguém me conseguir dar umas dicas, agradeço!
>
> Cumprimentos,
> Pedro Venâncio
>
> _______________________________________________
> Portugal mailing list
> Portugal lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal
--
Jorge Gustavo Rocha
Departamento de Informática
Universidade do Minho
4710-057 Braga
Tel: 253604430 (Geral), 253604479 (Gabinete)
Fax: 253604471
Móvel: 910333888
_______________________________________________
Portugal mailing list
Portugal lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/portugal
More information about the Portugal
mailing list