SlideShare una empresa de Scribd logo
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

Más contenido relacionado

La actualidad más candente

Integral definida
Integral definidaIntegral definida
Integral definida
Dulce Nombre Lendínez
 
Operaciones con naturales
Operaciones con naturalesOperaciones con naturales
Operaciones con naturales
Jaime Mayhuay
 
Tomo II: Problema 74
Tomo II: Problema 74Tomo II: Problema 74
Tomo II: Problema 74
carlos21gt
 
Operaciones con funciones
Operaciones con funcionesOperaciones con funciones
Operaciones con funciones
Beatriz Espinoza Peralta
 
Seno_coseno_10202
Seno_coseno_10202Seno_coseno_10202
Seno_coseno_10202
Julianchoo Elml Achicanoy
 
Calculo varias variables
Calculo varias variablesCalculo varias variables
Calculo varias variables
Luis Alberto Hernández
 
INTEGRALES DOBLES
INTEGRALES DOBLESINTEGRALES DOBLES
INTEGRALES DOBLES
claualemana
 
Integrales multiples
Integrales multiplesIntegrales multiples
Integrales multiples
Andres Parra
 
Operaciones con funciones
Operaciones con funcionesOperaciones con funciones
Operaciones con funciones
Crstn Pnags
 
Caso problema eje 3
Caso problema eje 3Caso problema eje 3
Caso problema eje 3
Jefferson Esquivel Hincapie
 
Capitulo 7.5 integracion mult
Capitulo 7.5   integracion multCapitulo 7.5   integracion mult
Capitulo 7.5 integracion mult
Israel Matorras Rojas
 
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
Fátima Lds
 
7 Operaciones Con Funciones
7  Operaciones Con Funciones7  Operaciones Con Funciones
7 Operaciones Con Funciones
Alfa Velásquez Espinoza
 
Integrales Dobles
Integrales DoblesIntegrales Dobles
Integrales Dobles
David Vargas
 
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
César Oliva
 
Integrales dobles
Integrales doblesIntegrales dobles
Integrales dobles
Fernando Calderon Beingolea
 
Grafos y Digrafos Estructuras Discretas
Grafos y Digrafos Estructuras DiscretasGrafos y Digrafos Estructuras Discretas
Grafos y Digrafos Estructuras Discretas
KennethPia
 
Prac 8 cubas
Prac 8 cubasPrac 8 cubas
Prac 8 cubas
Silvina Cubas Muñoz
 

La actualidad más candente (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
 

Destacado

Clase4
Clase4Clase4
Clase4
t763rm3n
 
Clase3
Clase3Clase3
Clase3
t763rm3n
 
Conclusiones sobre base de datos aidaly
Conclusiones  sobre base de datos aidalyConclusiones  sobre base de datos aidaly
Conclusiones sobre base de datos aidaly
aidalyb2
 
Soluciones ejercicios clase2
Soluciones ejercicios clase2Soluciones ejercicios clase2
Soluciones ejercicios clase2
t763rm3n
 
Ejercicios de sig
Ejercicios de sigEjercicios de sig
Ejercicios de sig
Wilo Montero Sandoval
 
Clase2
Clase2Clase2
Clase2
t763rm3n
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
FRDO
 
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
Luis Eduardo Pelaez Valencia
 
Proyecto base de datos 2
Proyecto base de datos 2Proyecto base de datos 2
Proyecto base de datos 2
Evelyn Galicia Maeve
 
Proyecto Final Base De Datos
Proyecto Final Base De DatosProyecto Final Base De Datos
Proyecto Final Base De Datos
guestcde16b
 
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
angelamadohi
 
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 datos
Froilan Tapara Quispe
 
Ejemplos base de datos
Ejemplos base de datosEjemplos base de datos
Ejemplos base de datos
Aydamf
 
PROYECTO DE BASE DE DATOS
PROYECTO DE BASE DE DATOSPROYECTO DE BASE DE DATOS
PROYECTO DE BASE DE DATOS
jaimeizq
 
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
Gusttavo Nipas
 

Destacado (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
 

Similar a Clase6

Clase5
Clase5Clase5
Clase5
t763rm3n
 
Clase4 practica
Clase4 practicaClase4 practica
Clase4 practica
t763rm3n
 
Parte02
Parte02Parte02
Clase6
Clase6Clase6
Clase6
t763rm3n
 
Clase5 y practica
Clase5 y practicaClase5 y practica
Clase5 y practica
t763rm3n
 
Lugar de las raices
Lugar de las raicesLugar de las raices
Lugar de las raices
Henry Alvarado
 
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
Carlos Alfredo Ventura Tepizila
 
Trabajo - Uso de la Calculadora Cientifica
Trabajo - Uso de la Calculadora Cientifica Trabajo - Uso de la Calculadora Cientifica
Trabajo - Uso de la Calculadora Cientifica
Cliffor Jerry Herrera Castrillo
 
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)
Vladimir Gutierrez, PhD
 
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
Gabriel Parodi
 
Grafos
GrafosGrafos
Grafos
guest987d67
 
Grafos
GrafosGrafos
Grafos
guest987d67
 
Grafos
GrafosGrafos
Grafos
guest987d67
 
Cuadratura gaussiana-deducción
Cuadratura gaussiana-deducciónCuadratura gaussiana-deducción
Cuadratura gaussiana-deducción
Nayla Euan
 
EJEMPLO
EJEMPLOEJEMPLO
EJEMPLO
julio_eduardo
 
EVALUACIONSPS.RESULTADOS.PDF
EVALUACIONSPS.RESULTADOS.PDFEVALUACIONSPS.RESULTADOS.PDF
EVALUACIONSPS.RESULTADOS.PDF
Andrefloress
 
Parte03
Parte03Parte03
Semana 6x
Semana 6xSemana 6x
CLASE 3 - Geometria.pptx
CLASE 3 - Geometria.pptxCLASE 3 - Geometria.pptx
CLASE 3 - Geometria.pptx
HernanAriel1
 
Algebra lineal 27 exactas e ingenieria
Algebra lineal 27 exactas e ingenieriaAlgebra lineal 27 exactas e ingenieria
Algebra lineal 27 exactas e ingenieria
gerly diaz
 

Similar a 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
 

Más de t763rm3n

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

Más 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