[Spanish] Triggers en PostGIS
Luis Franco Vázquez
luis.frvz at gmail.com
Tue Feb 24 09:28:50 PST 2015
No sé si ha sonado muy borde mi respuesta pero no era la intención. Era un
recordatorio para evitar malas costumbres. Pensaba que mi " ;) " final
suavizaba el tono pero me han dicho por aquí atrás que había sonado como un
gruñón.
El 24 de febrero de 2015, 18:01, Luis Franco Vázquez <luis.frvz en gmail.com>
escribió:
> No sé qué estás empleando para insertar desde QGIS pero lo que te está
> diciendo es que en la geometría no tienes un punto. ¿Qué proceso estás
> siguiendo?.
> Y de paso te voy a dar un ligero tirón de orejas: en las listas no debes
> escribir correos como este último. No los dirijas a mi ni a nadie salvo
> para seguir un hilo. Si te surge una duda o problema exponlo a todos. En mi
> caso colaboro siempre que puedo pero el asesoramiento personalizado lo
> cobro porque profesionalmente me dedico a esto. Y cuando se trate de un
> problema, por cortesía asegúrate de haber buscado en internet o donde sea
> la respuesta antes de preguntar. ;)
>
> El 24 de febrero de 2015, 16:58, Mikel <m.ayesta en gislan.com> escribió:
>
> Hola Luis,
>>
>> Tengo otro problema con otra tabla. En este caso, lo que quiero hacer es
>> que al introducir manualmente el punto desde QGIS, me rellene las
>> coordenadas x, y, longitud y latitud. La tabla está en srid 25830 y al
>> introducir el punto en QGIS, me da el siguinete error: Argument to X() must
>> be a point.
>>
>> Gracias de antemano.
>>
>> El código es el siguiente:
>>
>> CREATE OR REPLACE FUNCTION public.errepide_intz_koord()
>> RETURNS trigger AS
>> $BODY$
>> DECLARE
>>
>> BEGIN
>>
>> NEW.x:=ST_X(NEW.geom);
>> NEW.y:=ST_Y(NEW.geom);
>> NEW.lon:=ST_X(ST_Transform(NEW.geom, 4326));
>> NEW.lat:=ST_Y(ST_Transform(NEW.geom, 4326));
>>
>> RETURN NEW;
>> END;
>> $BODY$
>> LANGUAGE plpgsql VOLATILE
>> COST 100;
>> ALTER FUNCTION public.errepide_intz_koord()
>> OWNER TO postgres;
>>
>>
>>
>>
>> 2015/02/24 15:19(e)an, Mikel igorleak idatzi zuen:
>>
>> 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> 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
>>>
>>
>>
>>
>> _______________________________________________
>> Spanish mailing listhttp://lists.osgeo.org/mailman/listinfo/spanishhttp://es.osgeo.orghttp://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/27ba9b3e/attachment-0001.html>
------------ 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/27ba9b3e/attachment-0002.jpe>
------------ 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/27ba9b3e/attachment-0003.jpe>
More information about the Spanish
mailing list