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 <[email protected] <mailto:[email protected]>> 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 <[email protected]
    <mailto:[email protected]>> 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 <[email protected]
        <mailto:[email protected]>> escribió:

            Hola a tod@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
            [email protected] <mailto:[email protected]>
            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

_______________________________________________
Spanish mailing list
http://lists.osgeo.org/mailman/listinfo/spanish
http://es.osgeo.org
http://twitter.com/osgeoes

Responder a