Jaime Casanova escribió: > 2013/5/16 jvenegasperu . <jvenegasp...@gmail.com>:
> > y esta otra función > > > > CREATE OR REPLACE FUNCTION geographyforgoogle() > > RETURNS trigger AS > > $BODY$ > > DECLARE > > BEGIN > > -- NEW.long_xy := round(cast(st_length(NEW.the_geom) as numeric),2); > > NEW.geography := transform(NEW.the_geom_origen,4326); > > NEW.latitud:= substring(st_astext(NEW.geography) from position('-8' in > > st_astext(NEW.geography)) for > > char_length(st_astext(NEW.geography))-position('-8' in > > st_astext(NEW.geography))); > > NEW.longitud:= substring(st_astext(NEW.geography) from 7 for position('-' > > in substring(st_astext(NEW.geography) from 8 for > > char_length(st_astext(NEW.geography))))-1); > supongo que dire lo mismo, si estas en 9.1 o superior esto solo > necesita ser ejecutado si insertas o actualizas > ahora, personalmente veo cuestionable que tengas tantos "datos > calculados" (datos que obviamente dependen de otra columna, violan una > de las formas normales. aunque no recuerdo cual). El problema que le veo a esto no es tanto que viole formas normales (lo cual puede ser aceptable porque quizás encontrar latitud y longitud a partir de un dato puede ser caro), sino que el método que está usando seguramente no es de lo mejor. Primero convierte la geometría a texto, luego recorre el texto completo para saber el largo total, luego lo recorre otra vez para contar caracteres. Yo creo que debe ser más inteligente usar ST_AsLatLonText o algo. http://www.postgis.org/docs/ST_AsLatLonText.html -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda