Olá Alexandre boa tarde,
Encontro-me familiarizado com os triggers , faço uso dos mesmos para registar utilizadores que criam ou alteram registos e respectivas datas de criação e modificação.
No entanto a partir do exemplo que me indicou não consigo perceber como poderei adaptar para obter o nome da freguesia que é atributo do poligono.
Seria possível demonstrar-me como o fazer ?
TABLE papeleira
(pap_cod integer NOT NULL ,
pap_freg Text,
geom geometry,)
TABLE freguesias
(freg_cod integer NOT NULL ,
freg_nome Text,
geom geometry,)
Grato pela sua comprensão.
____________________________________________________________ //______________________________________________
CREATE
OR
REPLACE
FUNCTION
update_geometry_fields()
<code class=``"sql keyword"``>``RETURNS``</code> <code class=``"sql keyword"``>``trigger``</code> <code class=``"sql keyword"``>``AS``</code>
$BODY$
DECLARE
lat_long TEXT;
BEGIN
-- Cálculo da área da geometria
NEW.area = st_area(NEW.geom);
-- Cálculo da latitude e longitude do centroíde da geometria em graus minutos e segundos
lat_long := ST_AsLatLonText(st_transform(st_centroid(NEW.geom), 4326));
NEW.latitude = split_part(lat_long,``' '``,1);
NEW.longitude = split_part(lat_long,``' '``,2);
RETURN
NEW;
END``;
$BODY$
LANGUAGE plpgsql VOLATILE
CREATE
TRIGGER
update_epvu_sgev_geom_fields
BEFORE ``INSERT
OR
UPDATE
OF
geom
ON
epvu.sgev
FOR
EACH ROW
EXECUTE
PROCEDURE
update_geometry_fields();
Date: Tue, 12 Aug 2014 11:14:28 +0100
From: senhor.neto@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] Função automática para devolver um dado atributo com a georeferenciação
Bom dia Carlos,
Esssa função pode ser implementada directamente no Postgis com o recurso a triggers.
Há uns tempos escrevi um post sobre como usar os triggers. Pode ser que o ajude:
http://sigsemgrilhetas.wordpress.com/2013/12/03/triggers-para-que-vos-quero/
O código do primeiro exemplo pode ser alterado de forma a fazer a intersecção entre as geometrias das tabelas que refere e obter o nome da freguesia.
Cumprimentos,
Alexandre Neto
2014-08-12 10:18 GMT+01:00 Carlos Jacinto <carlosjacinto@hotmail.com>:
Bom dia,
Já faz algum tempo que gostaria de implementar uma função automática para devolver um dado atributo com a georeferenciação.
Ex: Tenho um projecto em qgis com dois layers. Um layer de pontos “papeleira” e um segundo layer do tipo poligonal “freguesias”.
Pretendia que ao georeferenciar uma “papeleira” a coluna ‘pap_freg’ fosse automaticamente prenchida através de uma função de intersecção com o poligono “freguesias” e com o seu atributo ‘freg_nome’ correspondente.
Aqui fica a estrutura exemplificativa das tabelas:
TABLE papeleira
(pap_cod integer NOT NULL ,
pap_freg Text,
geom geometry,)
TABLE freguesias
(freg_cod integer NOT NULL ,
freg_nome Text,
geom geometry,)
Já realizei várias tentativas de expressões e funções mas sem sucesso, ficaria muito grato pelo vosso apoio.
Cumprimentos,
Carlos Jacinto
QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt
_______________________________________________ QGIS-pt mailing list QGIS-pt@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt