[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