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 <[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
_______________________________________________
Spanish mailing list
http://lists.osgeo.org/mailman/listinfo/spanish
http://es.osgeo.org
http://twitter.com/osgeoes