[Spanish] Triggers en PostGIS

Luis Franco Vázquez luis.frvz at gmail.com
Tue Feb 24 05:01:08 PST 2015


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> 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> 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> 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
>>> Tel.: 0034 943 304 255
>>> 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 listhttp://lists.osgeo.org/mailman/listinfo/spanishhttp://es.osgeo.orghttp://twitter.com/osgeoes
>>
>>
>>
>> _______________________________________________
>> Spanish mailing list
>> http://lists.osgeo.org/mailman/listinfo/spanish
>> http://es.osgeo.org
>> http://twitter.com/osgeoes
>>
>
>
>
> _______________________________________________
> Spanish mailing listhttp://lists.osgeo.org/mailman/listinfo/spanishhttp://es.osgeo.orghttp://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/e8c2791c/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/e8c2791c/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/e8c2791c/attachment-0003.jpe>


More information about the Spanish mailing list