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

Responder a