[Spanish] Triggers en PostGIS

Mikel m.ayesta at gislan.com
Tue Feb 24 06:19:31 PST 2015


Hola Luis,

Gracias! Funciona perfectamente.

Mikel

2015/02/24 14:01(e)an, Luis Franco Vázquez igorleak idatzi zuen:
> Pues es muy simple. Suponiendo que tus nuevos campos x e y se llaman 
> x_25830 e y_25830 (adáptalos a tu gusto), solo tienes que añadir dos 
> líneas y reemplazar la función ejecutando lo que sigue:
> CREATE OR REPLACE FUNCTION errepide_intz()
> RETURNS trigger AS
> $BODY$
> DECLARE
> BEGIN
> NEW.geom:=ST_transform(ST_SetSRID(ST_MakePoint(NEW.lon,NEW.lat),4326),25830);
> NEW.x_25830 := ST_X(NEW.geom);
> NEW.y_25830 := ST_Y(NEW.geom);
> RETURN NEW;
> END;
> $BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
>
> Prueba y cuentas. Deberías echarle un vistazo al manual de postgresql.
> Si quieres actualizar los registros que ya tienes haces:
> UPDATE tu_tabla SET x_25830 = ST_X(geom), y_25830 = ST_Y(geom);
>
> Muy simple, la verdad.
>
> El 24 de febrero de 2015, 13:47, Mikel <m.ayesta en gislan.com 
> <mailto:m.ayesta en gislan.com>> escribió:
>
>     Hola Luis,
>
>     Aquí te pego la función.
>
>     CREATE OR REPLACE FUNCTION errepide_intz()
>       RETURNS trigger AS
>     $BODY$
>         DECLARE
>         BEGIN
>     NEW.geom:=ST_transform(ST_SetSRID(ST_MakePoint(NEW.lon,NEW.lat),4326),25830);
>         RETURN NEW;
>         END;
>     $BODY$
>       LANGUAGE plpgsql VOLATILE
>       COST 100;
>     ALTER FUNCTION errepide_intz()
>       OWNER TO postgres;
>
>     Gracias de antemano,
>
>     Mikel
>
>
>     2015/02/24 13:44(e)an, Luis Franco Vázquez igorleak idatzi zuen:
>>     Vale. Ahora lo he entendido.
>>     Si me pegas aquí la función disparadora que ya tienes te digo
>>     como hacerlo.
>>
>>
>>
>>     El 24 de febrero de 2015, 13:19, Mikel <m.ayesta en gislan.com
>>     <mailto:m.ayesta en gislan.com>> escribió:
>>
>>
>>         Hola Luis,
>>         El disparador lo que hace es crear el punto en el sistema de
>>         referencia 25830 partiendo de las coordenadas geográficas que
>>         introduzco en el sistema 4326. Lo que necesito es que me
>>         rellene los campos X e Y en el sistema 25830 de manera
>>         automática.
>>
>>         He intentando poner por defecto en el campo X el valor ST_X
>>         (geom) pero me da error...
>>
>>         Gracias.
>>
>>
>>         2015/02/24 12:29(e)an, Luis Franco Vázquez igorleak idatzi zuen:
>>>         Disculpa, no te he entendido. ¿Ya tienes un disparador que
>>>         crea el punto y quieres obtener las coordenadas que tú mismo
>>>         estás introduciendo?. Tengo que haberlo entendido muy mal.
>>>         ¿O es que estás introduciendo coordenadas en un sistema de
>>>         referencia distinto al 25830 (por ejemplo epsg 4326) y lo
>>>         que hace tu disparador es rellenar un atributo de tipo punto
>>>         con srid 25830 a partir de un par x, y en otro sistema de
>>>         referencias?. Si me das más datos puedo concretar algo.
>>>         En general: postgis no tiene disparadores. Quien los tiene
>>>         es postgresql. Postgis es una extensión espacial de
>>>         postgresql, por lo tanto debes consultar la documentación de
>>>         postgresql.
>>>         Y sobre como obtener coordenadas x e y, mira
>>>         http://postgis.net/docs/manual-2.1/ST_X.html y
>>>         http://postgis.net/docs/manual-2.1/ST_Y.html
>>>
>>>         El 24 de febrero de 2015, 11:56, Mikel <m.ayesta en gislan.com
>>>         <mailto:m.ayesta en gislan.com>> escribió:
>>>
>>>             Hola a tod en s,
>>>
>>>             Tengo una duda con PostGIS. ¿Hay alguna manera de que se
>>>             rellenen automáticamente dos campos de la tabla con las
>>>             coordenadas del elemento introducido?
>>>
>>>             Me explico. Tengo una tabla en la que introduzco los
>>>             puntos con coordenadas geográficas y mediante un
>>>             disparador, me situa el punto en las coordenadas
>>>             introducidas. El sistema de referencia es EPSG: 25830,
>>>             por lo que en el disparador realizo la transformación de
>>>             coordenadas. La cuestión es que necesito que se me
>>>             rellenen los campos X e Y de forma automática. ¿Hay
>>>             algún valor por defecto que se puede introducir (como en
>>>             el caso de la fecha, now()), o por el contrario hay que
>>>             programar algún disparador? y si es la segunda opción,
>>>             ¿cómo?
>>>
>>>             Gracias de antemano.
>>>
>>>             Un cordial saludo,
>>>             <http://www.gislan.com> 	<http://www.gislan.com/node/107>
>>>             *Mikel Ayestaran Olano*
>>>             GISLAN GEOGRAPHIC APPLICATIONS S.L
>>>             m.ayesta en gislan.com <mailto:m.ayesta en gislan.com>
>>>             Tel.: 0034 943 304 255
>>>             www.gislan.com <http://www.gislan.com>
>>>
>>>             *Lege oharra:* Mezu elektroniko honetan, eta, hala
>>>             badagokio, bere fitxategi erantsietan, hartzaileari
>>>             soilik zuzendutako isilpeko informazioa dago. Debekatuta
>>>             dago informazio hori zabaldu, kopiatu eta beste
>>>             pertsonen artean banatzea, Gaindegiaren baimen idatzirik
>>>             gabe. Akatsen batengatik mezu hau jaso baduzu,
>>>             jakinarazi mesedez, mezua igorlearen helbidera
>>>             birbidaliz. DBLOn ezarritakoaren arabera, Gaindegiak
>>>             datu pertsonalen isilpeko tratamendua bermatzeko
>>>             beharrezko neurriak hartzen ditu. Halaber, zure datuak
>>>             fitxategi batean daudela jakinarazi nahi dizugu, zure
>>>             harremana mantentzeko. Eskubidea daukazu datuok
>>>             begiratu, zuzendu, ezabatu eta aurka egiteko, helbide
>>>             honetan: Martin Ugalde Kultur Parkea, 20140 Andoain.
>>>             *Nota:* "Este correo electrónico y, en su caso,
>>>             cualquier fichero anexo al mismo, contiene información
>>>             de carácter confidencial exclusivamente dirigida a su
>>>             destinatario. Queda prohibida su divulgación, copia o
>>>             distribución a terceros sin la previa autorización
>>>             escrita de Gaindegia. En el caso de haber recibido este
>>>             correo electrónico por error, se ruega notifíquese
>>>             inmediatamente esta circunstancia mediante reenvío a la
>>>             dirección electrónica del remitente. De conformidad con
>>>             lo establecido en la LOPD Gaindegia garantiza la
>>>             adopción de las medidas necesarias para asegurar el
>>>             tratamiento confidencial de los datos de carácter
>>>             personal. Así mismo le informamos de inclusión de sus
>>>             datos en un fichero con la finalidad de mantener su
>>>             relación con Gaindegia y de la posibilidad de ejercer
>>>             los derechos de acceso, rectificación, cancelación y
>>>             oposición en la siguiente dirección: Martin Ugalde
>>>             Kultur Parkea, 20140 Andoain.”
>>>
>>>
>>>
>>>             _______________________________________________
>>>             Spanish mailing list
>>>             http://lists.osgeo.org/mailman/listinfo/spanish
>>>             http://es.osgeo.org
>>>             http://twitter.com/osgeoes
>>>
>>>
>>>
>>>
>>>         _______________________________________________
>>>         Spanish mailing list
>>>         http://lists.osgeo.org/mailman/listinfo/spanish
>>>         http://es.osgeo.org
>>>         http://twitter.com/osgeoes
>>
>>
>>         _______________________________________________
>>         Spanish mailing list
>>         http://lists.osgeo.org/mailman/listinfo/spanish
>>         http://es.osgeo.org
>>         http://twitter.com/osgeoes
>>
>>
>>
>>
>>     _______________________________________________
>>     Spanish mailing list
>>     http://lists.osgeo.org/mailman/listinfo/spanish
>>     http://es.osgeo.org
>>     http://twitter.com/osgeoes
>
>
>     _______________________________________________
>     Spanish mailing list
>     http://lists.osgeo.org/mailman/listinfo/spanish
>     http://es.osgeo.org
>     http://twitter.com/osgeoes
>
>
>
>
> _______________________________________________
> Spanish mailing list
> http://lists.osgeo.org/mailman/listinfo/spanish
> http://es.osgeo.org
> http://twitter.com/osgeoes

------------ pr?xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.osgeo.org/pipermail/spanish/attachments/20150224/4d7bdc63/attachment-0001.html>
------------ pr?xima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: image/jpeg
Size: 38723 bytes
Desc: no disponible
URL: <http://lists.osgeo.org/pipermail/spanish/attachments/20150224/4d7bdc63/attachment-0002.jpe>
------------ pr?xima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: image/jpeg
Size: 34450 bytes
Desc: no disponible
URL: <http://lists.osgeo.org/pipermail/spanish/attachments/20150224/4d7bdc63/attachment-0003.jpe>


More information about the Spanish mailing list