<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Olá Alexandre boa tarde,<br><br>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.<br><br>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.<br><br><br>Seria possível demonstrar-me como o fazer ?<br> TABLE papeleira<br>(pap_cod integer NOT NULL ,<br>  pap_freg Text,<br>  geom geometry,)<br><br> TABLE freguesias<br>(freg_cod integer NOT NULL ,<br> freg_nome Text,<br>
  geom geometry,)<br><br><br>Grato pela sua comprensão.<br>____________________________________________________________ //______________________________________________<br><br><div class="container"><div class="line number1 index0 alt2"><code class="sql keyword">CREATE</code> <code class="sql color1">OR</code> <code class="sql color2">REPLACE</code> <code class="sql keyword">FUNCTION</code> <code class="sql plain">update_geometry_fields()</code></div><div class="line number2 index1 alt1"><code class="sql plain"><code class=</code><code class="sql string">"sql keyword"</code><code class="sql plain">></code><code class="sql keyword">RETURNS</code><code class="sql plain"></code> <code class=</code><code class="sql string">"sql keyword"</code><code class="sql plain">></code><code class="sql keyword">trigger</code><code class="sql plain"></code> <code class=</code><code class="sql string">"sql keyword"</code><code class="sql plain">></code><code class="sql keyword">AS</code><code class="sql plain"></code></code></div><div class="line number3 index2 alt2"><code class="sql plain">$BODY$</code></div><div class="line number4 index3 alt1"><code class="sql keyword">DECLARE</code></div><div class="line number5 index4 alt2"><code class="sql plain">lat_long TEXT;</code></div><div class="line number6 index5 alt1"><code class="sql keyword">BEGIN</code></div><div class="line number7 index6 alt2"><code class="sql comments">-- Cálculo da área da geometria</code></div><div class="line number8 index7 alt1"><code class="sql plain">NEW.area = st_area(NEW.geom);</code></div><div class="line number9 index8 alt2"> </div><div class="line number10 index9 alt1"><code class="sql comments">-- Cálculo da latitude e longitude do centroíde da geometria em graus minutos e segundos</code></div><div class="line number11 index10 alt2"><code class="sql plain">lat_long := ST_AsLatLonText(st_transform(st_centroid(NEW.geom), 4326));</code></div><div class="line number12 index11 alt1"><code class="sql plain">NEW.latitude = split_part(lat_long,</code><code class="sql string">' '</code><code class="sql plain">,1);</code></div><div class="line number13 index12 alt2"><code class="sql plain">NEW.longitude = split_part(lat_long,</code><code class="sql string">' '</code><code class="sql plain">,2);</code></div><div class="line number14 index13 alt1"> </div><div class="line number15 index14 alt2"><code class="sql keyword">RETURN</code> <code class="sql plain">NEW;</code></div><div class="line number16 index15 alt1"><code class="sql keyword">END</code><code class="sql plain">;</code></div><div class="line number17 index16 alt2"><code class="sql plain">$BODY$</code></div><div class="line number18 index17 alt1"><code class="sql plain">LANGUAGE plpgsql VOLATILE<br><br><br></code><div class="container"><div class="line number1 index0 alt2"><code class="sql keyword">CREATE</code> <code class="sql keyword">TRIGGER</code> <code class="sql plain">update_epvu_sgev_geom_fields</code></div><div class="line number2 index1 alt1"><code class="sql plain">BEFORE </code><code class="sql keyword">INSERT</code> <code class="sql color1">OR</code> <code class="sql keyword">UPDATE</code> <code class="sql keyword">OF</code> <code class="sql plain">geom</code></div><div class="line number3 index2 alt2"><code class="sql keyword">ON</code> <code class="sql plain">epvu.sgev</code></div><div class="line number4 index3 alt1"><code class="sql keyword">FOR</code> <code class="sql plain">EACH ROW</code></div><div class="line number5 index4 alt2"><code class="sql keyword">EXECUTE</code> <code class="sql keyword">PROCEDURE</code> <code class="sql plain">update_geometry_fields();</code></div></div><br></div></div><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div><hr id="stopSpelling">Date: Tue, 12 Aug 2014 11:14:28 +0100<br>From: senhor.neto@gmail.com<br>To: qgis-pt@lists.osgeo.org<br>Subject: Re: [QGIS-pt] Função automática para devolver um dado atributo com a georeferenciação<br><br><div dir="ltr">Bom dia Carlos,<div><br></div><div>Esssa função pode ser implementada directamente no Postgis com o recurso a triggers.</div><div><br></div><div>Há uns tempos escrevi um post sobre como usar os triggers. Pode ser que o ajude:</div>
<div><br></div><div><a href="http://sigsemgrilhetas.wordpress.com/2013/12/03/triggers-para-que-vos-quero/" target="_blank">http://sigsemgrilhetas.wordpress.com/2013/12/03/triggers-para-que-vos-quero/</a><br></div><div><br></div><div>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.</div>
<div><br></div><div>Cumprimentos,</div><div><br></div><div>Alexandre Neto</div></div><div class="ecxgmail_extra"><br><br><div class="ecxgmail_quote">2014-08-12 10:18 GMT+01:00 Carlos Jacinto <span dir="ltr"><<a href="mailto:carlosjacinto@hotmail.com" target="_blank">carlosjacinto@hotmail.com</a>></span>:<br>
<blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex;">


<div><div dir="ltr">Bom dia,<br><br>Já faz algum tempo que gostaria de implementar uma função automática para devolver um dado atributo com a georeferenciação.<br><br>Ex: Tenho um projecto em qgis com dois layers. Um layer de pontos "papeleira" e um segundo layer do tipo poligonal "freguesias".<br>
<br>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.<br>
<br><br>Aqui fica a estrutura exemplificativa das tabelas:<br><br> TABLE papeleira<br>(pap_cod integer NOT NULL ,<br>  pap_freg Text,<br>  geom geometry,)<br><br> TABLE freguesias<br>(freg_cod integer NOT NULL ,<br> freg_nome Text,<br>
  geom geometry,)<br><br><br><br>Já realizei várias tentativas de expressões e funções mas sem sucesso, ficaria muito grato pelo vosso apoio.<br><br>Cumprimentos,<br><br>Carlos Jacinto<br><br><br><br><br><br><br>                                       </div>
</div>
<br>_______________________________________________<br>
QGIS-pt mailing list<br>
<a href="mailto:QGIS-pt@lists.osgeo.org">QGIS-pt@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________
QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt</div>                                       </div></body>
</html>