SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
Curso Modelo de datos para SIG (720145M )




                                          Clase 6
                                                          Fabio Andrés Herrera
                                                          fandresherrera@hotmail.com



                                http://cursomdsig.blogspot.com

FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )




                                          Trigger



FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )




            CREATE TABLE nodos(punto_x int, punto_y int,
                the_geom geometry);




FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )




  CREATE OR REPLACE FUNCTION calcular_punto()
   RETURNS "trigger" AS
   $BODY$
   BEGIN
    NEW.the_geom:=SetSRID(MakePoint(new.punto_x,
  new.punto_y), -1) ;
   RETURN NEW;
   END
   $BODY$
  LANGUAGE 'plpgsql' VOLATILE;


FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )




         CREATE TRIGGER insert_nodes_geom
          BEFORE INSERT OR UPDATE
          ON nodos
          FOR EACH ROW
         EXECUTE PROCEDURE calcular_punto();




FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )




      INSERT INTO nodos (punto_x, punto_y) VALUES (1,2);




FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )




   SELECT punto_x,punto_y,astext(the_geom) FROM nodos ;




FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )




                                   PL/PGSQL



FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )



           CREATE OR REPLACE FUNCTION dms2dd( D integer, M integer, S double
           precision , HEMI character varying(1) )
             RETURNS double precision AS $$
             DECLARE
               ret double precision;
                  dir integer;
             BEGIN
                  dir := 1; --init to 1 for default positive return
                  ret := 0; --init to zero.
                  --ONLY S or W will trip this. Any other letter or NULL will result in positive return
           value
                  IF UPPER(HEMI) = 'S' OR UPPER(HEMI) = 'W' THEN
                 dir := -1; --then southern or western hemisphere
                  END IF;
                  --SOME data has negative values in minutes and seconds as well as degrees.
           Use ABS to standardize all three.
                  ret := (ABS(CAST(D as double precision)) + (ABS((CAST(M as double
           precision) + (ABS((CAST(S as double precision))/60)))/60)));
                  ret := ret * dir;
                RETURN ret;
            END;
            $$ LANGUAGE plpgsql;



        SELECT dms2dd(76,32,26.39,'W') as latitude, dms2dd(3,27,78.69,'N') as longitude

FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
Curso Modelo de datos para SIG (720145M )


          CREATE OR REPLACE FUNCTION azimuth(geometry, geometry)
            RETURNS float8 AS
          '
          DECLARE
            geom1 ALIAS FOR $1;
            geom2 ALIAS FOR $2;
            geom2trans geometry;

          BEGIN
           IF geom1 IS NULL OR geom2 IS NULL THEN
             RETURN NULL;
           ELSE
             IF isempty(geom1) OR isempty(geom2) OR geometrytype(geom1) != ''POINT'' OR geometrytype(geom2) != ''POINT'' THEN
               RETURN NULL;
             END IF;
           END IF;

           IF srid(geom1) != -1 AND srid(geom2) != srid(geom1) THEN
             geom2trans := transform(geom2, srid(geom1));
           ELSE
             geom2trans := geom2;
           END IF;

           IF x(geom1) = x(geom2trans) AND y(geom1) < y(geom2trans) THEN
             RETURN 0;
           ELSIF x(geom1) = x(geom2trans) AND y(geom1) > y(geom2trans) THEN
             RETURN 180;
           ELSIF y(geom1) = y(geom2trans) AND x(geom1) < x(geom2trans) THEN
             RETURN 90;
           ELSIF y(geom1) = y(geom2trans) AND x(geom1) > x(geom2trans) THEN
             RETURN 270;
           ELSIF x(geom1) < x(geom2trans) AND y(geom1) < y(geom2trans) THEN
             RETURN degrees(atan(abs(x(geom1) - x(geom2trans)) / abs(y(geom1) - y(geom2trans))));
           ELSIF x(geom1) < x(geom2trans) AND y(geom1) > y(geom2trans) THEN
             RETURN degrees(atan(abs(y(geom1) - y(geom2trans)) / abs(x(geom1) - x(geom2trans)))) + 90;
           ELSIF x(geom1) > x(geom2trans) AND y(geom1) > y(geom2trans) THEN
             RETURN degrees(atan(abs(x(geom1) - x(geom2trans)) / abs(y(geom1) - y(geom2trans)))) + 180;
           ELSIF x(geom1) > x(geom2trans) AND y(geom1) < y(geom2trans) THEN
             RETURN degrees(atan(abs(y(geom1) - y(geom2trans)) / abs(x(geom1) - x(geom2trans)))) + 270;
           ELSE
             RETURN 0;
           END IF;

          END;
          '
                                                          select azimuth( makepoint(0,0) , makepoint(1,0));
          LANGUAGE 'plpgsql' VOLATILE;


FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA

Contenu connexe

Tendances (18)

Integral definida
Integral definidaIntegral definida
Integral definida
 
Operaciones con naturales
Operaciones con naturalesOperaciones con naturales
Operaciones con naturales
 
Tomo II: Problema 74
Tomo II: Problema 74Tomo II: Problema 74
Tomo II: Problema 74
 
Operaciones con funciones
Operaciones con funcionesOperaciones con funciones
Operaciones con funciones
 
Seno_coseno_10202
Seno_coseno_10202Seno_coseno_10202
Seno_coseno_10202
 
Calculo varias variables
Calculo varias variablesCalculo varias variables
Calculo varias variables
 
INTEGRALES DOBLES
INTEGRALES DOBLESINTEGRALES DOBLES
INTEGRALES DOBLES
 
Integrales multiples
Integrales multiplesIntegrales multiples
Integrales multiples
 
Operaciones con funciones
Operaciones con funcionesOperaciones con funciones
Operaciones con funciones
 
Caso problema eje 3
Caso problema eje 3Caso problema eje 3
Caso problema eje 3
 
Capitulo 7.5 integracion mult
Capitulo 7.5   integracion multCapitulo 7.5   integracion mult
Capitulo 7.5 integracion mult
 
5.1 consistencia de datos de lluvia
5.1 consistencia de datos de lluvia5.1 consistencia de datos de lluvia
5.1 consistencia de datos de lluvia
 
7 Operaciones Con Funciones
7  Operaciones Con Funciones7  Operaciones Con Funciones
7 Operaciones Con Funciones
 
Integrales Dobles
Integrales DoblesIntegrales Dobles
Integrales Dobles
 
Examen Temas 5,6 De 1º2007
Examen Temas 5,6 De 1º2007Examen Temas 5,6 De 1º2007
Examen Temas 5,6 De 1º2007
 
Integrales dobles
Integrales doblesIntegrales dobles
Integrales dobles
 
Grafos y Digrafos Estructuras Discretas
Grafos y Digrafos Estructuras DiscretasGrafos y Digrafos Estructuras Discretas
Grafos y Digrafos Estructuras Discretas
 
Prac 8 cubas
Prac 8 cubasPrac 8 cubas
Prac 8 cubas
 

En vedette

Conclusiones sobre base de datos aidaly
Conclusiones  sobre base de datos aidalyConclusiones  sobre base de datos aidaly
Conclusiones sobre base de datos aidalyaidalyb2
 
Soluciones ejercicios clase2
Soluciones ejercicios clase2Soluciones ejercicios clase2
Soluciones ejercicios clase2t763rm3n
 
Base de Datos
Base de DatosBase de Datos
Base de DatosFRDO
 
Proyecto Final Base De Datos
Proyecto Final Base De DatosProyecto Final Base De Datos
Proyecto Final Base De Datosguestcde16b
 
Creación de Bases de Datos con Access 2010 desde cero
Creación de Bases de Datos con Access 2010 desde ceroCreación de Bases de Datos con Access 2010 desde cero
Creación de Bases de Datos con Access 2010 desde ceroangelamadohi
 
Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)Felipe Duarte Camacho
 
Ejemplos base de datos
Ejemplos base de datosEjemplos base de datos
Ejemplos base de datosAydamf
 
PROYECTO DE BASE DE DATOS
PROYECTO DE BASE DE DATOSPROYECTO DE BASE DE DATOS
PROYECTO DE BASE DE DATOSjaimeizq
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datosGusttavo Nipas
 

En vedette (16)

Clase4
Clase4Clase4
Clase4
 
Clase3
Clase3Clase3
Clase3
 
Conclusiones sobre base de datos aidaly
Conclusiones  sobre base de datos aidalyConclusiones  sobre base de datos aidaly
Conclusiones sobre base de datos aidaly
 
Soluciones ejercicios clase2
Soluciones ejercicios clase2Soluciones ejercicios clase2
Soluciones ejercicios clase2
 
Ejercicios de sig
Ejercicios de sigEjercicios de sig
Ejercicios de sig
 
Clase2
Clase2Clase2
Clase2
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Del Modelo Entidad-Relación al Modelo relacional
Del Modelo Entidad-Relación al Modelo relacionalDel Modelo Entidad-Relación al Modelo relacional
Del Modelo Entidad-Relación al Modelo relacional
 
Proyecto base de datos 2
Proyecto base de datos 2Proyecto base de datos 2
Proyecto base de datos 2
 
Proyecto Final Base De Datos
Proyecto Final Base De DatosProyecto Final Base De Datos
Proyecto Final Base De Datos
 
Creación de Bases de Datos con Access 2010 desde cero
Creación de Bases de Datos con Access 2010 desde ceroCreación de Bases de Datos con Access 2010 desde cero
Creación de Bases de Datos con Access 2010 desde cero
 
Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)
 
Ejemplos base de datos
Ejemplos base de datosEjemplos base de datos
Ejemplos base de datos
 
Ejemplos base de datos
Ejemplos base de datosEjemplos base de datos
Ejemplos base de datos
 
PROYECTO DE BASE DE DATOS
PROYECTO DE BASE DE DATOSPROYECTO DE BASE DE DATOS
PROYECTO DE BASE DE DATOS
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datos
 

Similaire à Clase6 (20)

Clase5
Clase5Clase5
Clase5
 
Clase4 practica
Clase4 practicaClase4 practica
Clase4 practica
 
Parte02
Parte02Parte02
Parte02
 
Clase6
Clase6Clase6
Clase6
 
Clase5 y practica
Clase5 y practicaClase5 y practica
Clase5 y practica
 
Lugar de las raices
Lugar de las raicesLugar de las raices
Lugar de las raices
 
Lugar geométrico de las raíces
Lugar geométrico de las raícesLugar geométrico de las raíces
Lugar geométrico de las raíces
 
Trabajo - Uso de la Calculadora Cientifica
Trabajo - Uso de la Calculadora Cientifica Trabajo - Uso de la Calculadora Cientifica
Trabajo - Uso de la Calculadora Cientifica
 
Análisis espacial con R (asignatura de Master - UPM)
Análisis espacial con R (asignatura de Master - UPM)Análisis espacial con R (asignatura de Master - UPM)
Análisis espacial con R (asignatura de Master - UPM)
 
Sig t02-analisis espacial y gestion de objetos
Sig t02-analisis espacial y gestion de objetosSig t02-analisis espacial y gestion de objetos
Sig t02-analisis espacial y gestion de objetos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Cuadratura gaussiana-deducción
Cuadratura gaussiana-deducciónCuadratura gaussiana-deducción
Cuadratura gaussiana-deducción
 
EJEMPLO
EJEMPLOEJEMPLO
EJEMPLO
 
EVALUACIONSPS.RESULTADOS.PDF
EVALUACIONSPS.RESULTADOS.PDFEVALUACIONSPS.RESULTADOS.PDF
EVALUACIONSPS.RESULTADOS.PDF
 
Parte03
Parte03Parte03
Parte03
 
Semana 6x
Semana 6xSemana 6x
Semana 6x
 
CLASE 3 - Geometria.pptx
CLASE 3 - Geometria.pptxCLASE 3 - Geometria.pptx
CLASE 3 - Geometria.pptx
 
Algebra lineal 27 exactas e ingenieria
Algebra lineal 27 exactas e ingenieriaAlgebra lineal 27 exactas e ingenieria
Algebra lineal 27 exactas e ingenieria
 

Plus de t763rm3n

Copaso modificada presentacion
Copaso modificada presentacionCopaso modificada presentacion
Copaso modificada presentaciont763rm3n
 
Contenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsigContenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsigt763rm3n
 
Notas curso i2011_26abril_2011
Notas curso i2011_26abril_2011Notas curso i2011_26abril_2011
Notas curso i2011_26abril_2011t763rm3n
 
Ejercicio 3
Ejercicio 3Ejercicio 3
Ejercicio 3t763rm3n
 
Soluciones ejemplo
Soluciones ejemploSoluciones ejemplo
Soluciones ejemplot763rm3n
 
Ejercicio grupo1 grupo2
Ejercicio grupo1 grupo2Ejercicio grupo1 grupo2
Ejercicio grupo1 grupo2t763rm3n
 
Ejemplo infopolicial
Ejemplo infopolicialEjemplo infopolicial
Ejemplo infopolicialt763rm3n
 
Postgres tutorial
Postgres tutorialPostgres tutorial
Postgres tutorialt763rm3n
 
Ejercicio 3
Ejercicio 3Ejercicio 3
Ejercicio 3t763rm3n
 
Ejercicio grupo1 grupo2_grupo3
Ejercicio grupo1 grupo2_grupo3Ejercicio grupo1 grupo2_grupo3
Ejercicio grupo1 grupo2_grupo3t763rm3n
 
Clase1 - MDSIG 2010
Clase1 - MDSIG 2010Clase1 - MDSIG 2010
Clase1 - MDSIG 2010t763rm3n
 
Practica 1 - MDSIG 2010
Practica 1 - MDSIG 2010Practica 1 - MDSIG 2010
Practica 1 - MDSIG 2010t763rm3n
 
Contenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsigContenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsigt763rm3n
 

Plus de t763rm3n (18)

Copaso modificada presentacion
Copaso modificada presentacionCopaso modificada presentacion
Copaso modificada presentacion
 
Contenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsigContenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsig
 
Notas curso i2011_26abril_2011
Notas curso i2011_26abril_2011Notas curso i2011_26abril_2011
Notas curso i2011_26abril_2011
 
Clase3
Clase3Clase3
Clase3
 
Ejercicio 3
Ejercicio 3Ejercicio 3
Ejercicio 3
 
Clase4
Clase4Clase4
Clase4
 
Clase1
Clase1Clase1
Clase1
 
Soluciones ejemplo
Soluciones ejemploSoluciones ejemplo
Soluciones ejemplo
 
Clase2
Clase2Clase2
Clase2
 
Ejercicio grupo1 grupo2
Ejercicio grupo1 grupo2Ejercicio grupo1 grupo2
Ejercicio grupo1 grupo2
 
Ejemplo infopolicial
Ejemplo infopolicialEjemplo infopolicial
Ejemplo infopolicial
 
Practica4
Practica4Practica4
Practica4
 
Postgres tutorial
Postgres tutorialPostgres tutorial
Postgres tutorial
 
Ejercicio 3
Ejercicio 3Ejercicio 3
Ejercicio 3
 
Ejercicio grupo1 grupo2_grupo3
Ejercicio grupo1 grupo2_grupo3Ejercicio grupo1 grupo2_grupo3
Ejercicio grupo1 grupo2_grupo3
 
Clase1 - MDSIG 2010
Clase1 - MDSIG 2010Clase1 - MDSIG 2010
Clase1 - MDSIG 2010
 
Practica 1 - MDSIG 2010
Practica 1 - MDSIG 2010Practica 1 - MDSIG 2010
Practica 1 - MDSIG 2010
 
Contenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsigContenido curso 720145_m_mdsig
Contenido curso 720145_m_mdsig
 

Clase6

  • 1. Curso Modelo de datos para SIG (720145M ) Clase 6 Fabio Andrés Herrera fandresherrera@hotmail.com http://cursomdsig.blogspot.com FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 2. Curso Modelo de datos para SIG (720145M ) Trigger FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 3. Curso Modelo de datos para SIG (720145M ) CREATE TABLE nodos(punto_x int, punto_y int, the_geom geometry); FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 4. Curso Modelo de datos para SIG (720145M ) CREATE OR REPLACE FUNCTION calcular_punto() RETURNS "trigger" AS $BODY$ BEGIN NEW.the_geom:=SetSRID(MakePoint(new.punto_x, new.punto_y), -1) ; RETURN NEW; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 5. Curso Modelo de datos para SIG (720145M ) CREATE TRIGGER insert_nodes_geom BEFORE INSERT OR UPDATE ON nodos FOR EACH ROW EXECUTE PROCEDURE calcular_punto(); FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 6. Curso Modelo de datos para SIG (720145M ) INSERT INTO nodos (punto_x, punto_y) VALUES (1,2); FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 7. Curso Modelo de datos para SIG (720145M ) SELECT punto_x,punto_y,astext(the_geom) FROM nodos ; FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 8. Curso Modelo de datos para SIG (720145M ) PL/PGSQL FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 9. Curso Modelo de datos para SIG (720145M ) CREATE OR REPLACE FUNCTION dms2dd( D integer, M integer, S double precision , HEMI character varying(1) ) RETURNS double precision AS $$ DECLARE ret double precision; dir integer; BEGIN dir := 1; --init to 1 for default positive return ret := 0; --init to zero. --ONLY S or W will trip this. Any other letter or NULL will result in positive return value IF UPPER(HEMI) = 'S' OR UPPER(HEMI) = 'W' THEN dir := -1; --then southern or western hemisphere END IF; --SOME data has negative values in minutes and seconds as well as degrees. Use ABS to standardize all three. ret := (ABS(CAST(D as double precision)) + (ABS((CAST(M as double precision) + (ABS((CAST(S as double precision))/60)))/60))); ret := ret * dir; RETURN ret; END; $$ LANGUAGE plpgsql; SELECT dms2dd(76,32,26.39,'W') as latitude, dms2dd(3,27,78.69,'N') as longitude FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA
  • 10. Curso Modelo de datos para SIG (720145M ) CREATE OR REPLACE FUNCTION azimuth(geometry, geometry) RETURNS float8 AS ' DECLARE geom1 ALIAS FOR $1; geom2 ALIAS FOR $2; geom2trans geometry; BEGIN IF geom1 IS NULL OR geom2 IS NULL THEN RETURN NULL; ELSE IF isempty(geom1) OR isempty(geom2) OR geometrytype(geom1) != ''POINT'' OR geometrytype(geom2) != ''POINT'' THEN RETURN NULL; END IF; END IF; IF srid(geom1) != -1 AND srid(geom2) != srid(geom1) THEN geom2trans := transform(geom2, srid(geom1)); ELSE geom2trans := geom2; END IF; IF x(geom1) = x(geom2trans) AND y(geom1) < y(geom2trans) THEN RETURN 0; ELSIF x(geom1) = x(geom2trans) AND y(geom1) > y(geom2trans) THEN RETURN 180; ELSIF y(geom1) = y(geom2trans) AND x(geom1) < x(geom2trans) THEN RETURN 90; ELSIF y(geom1) = y(geom2trans) AND x(geom1) > x(geom2trans) THEN RETURN 270; ELSIF x(geom1) < x(geom2trans) AND y(geom1) < y(geom2trans) THEN RETURN degrees(atan(abs(x(geom1) - x(geom2trans)) / abs(y(geom1) - y(geom2trans)))); ELSIF x(geom1) < x(geom2trans) AND y(geom1) > y(geom2trans) THEN RETURN degrees(atan(abs(y(geom1) - y(geom2trans)) / abs(x(geom1) - x(geom2trans)))) + 90; ELSIF x(geom1) > x(geom2trans) AND y(geom1) > y(geom2trans) THEN RETURN degrees(atan(abs(x(geom1) - x(geom2trans)) / abs(y(geom1) - y(geom2trans)))) + 180; ELSIF x(geom1) > x(geom2trans) AND y(geom1) < y(geom2trans) THEN RETURN degrees(atan(abs(y(geom1) - y(geom2trans)) / abs(x(geom1) - x(geom2trans)))) + 270; ELSE RETURN 0; END IF; END; ' select azimuth( makepoint(0,0) , makepoint(1,0)); LANGUAGE 'plpgsql' VOLATILE; FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL Y GEOMÁTICA