You are on page 1of 57

Diseo y Planeamiento de la BD de un SIG

REALIDAD FSICA
Fenmenos: -Propiedades -Conexiones

MODELO DEL MUNDO REAL


Entidades: -Tipos -Atributos MODELO DE DATOS -Relaciones

GEOGRFICO

Objetos: -Tipos -Atributos -Relaciones -Geometra

BASE DE DATOS GEOGRFICA


Objetos: -Tipos -Atributos -Relaciones -Geometra

MAPAS / REPORTES
Smbolos, lneas, texto, etc.
32

32

Diseo y Planeamiento de la BD de un SIG


REALIDAD FSICA
Fenmenos: -Propiedades -Conexiones

MODELO DEL MUNDO REAL


Entidades: -Tipos -Atributos MODELO DE DATOS -Relaciones

GEOGRFICO

Modelo Conceptual: -Definicin de datos y especificaciones. -Determinacin de entidades, atributos y relaciones. -Por ejemplo: Modelo E-R

Objetos: -Tipos -Atributos -Relaciones -Geometra

BASE DE DATOS GEOGRFICA


Objetos: -Tipos -Atributos -Relaciones -Geometra

MAPAS / REPORTES
Smbolos, lneas, texto, etc.
33

33

Diseo y Planeamiento de la BD de un SIG


REALIDAD FSICA
Fenmenos: -Propiedades -Conexiones

MODELO DEL MUNDO REAL


Entidades: -Tipos -Atributos MODELO DE DATOS -Relaciones

Modelo Lgico: -Determinacin de los tipos de geometra. -Definicin de las relaciones. -Especificacin de los atributos de los objetos -Anlisis de posibles consultas

GEOGRFICO

Objetos: -Tipos -Atributos -Relaciones -Geometra

BASE DE DATOS GEOGRFICA


Objetos: -Tipos -Atributos -Relaciones -Geometra

MAPAS / REPORTES
Smbolos, lneas, texto, etc.
34

34

Diseo y Planeamiento de la BD de un SIG


REALIDAD FSICA
Fenmenos: -Propiedades -Conexiones

MODELO DEL MUNDO REAL


Entidades: -Tipos -Atributos MODELO DE DATOS -Relaciones

GEOGRFICO

Modelo Fsico: -Organizacin del sistema de elementos. -Creacin de elementos. -Asignar Sistemas de Coordenadas -Definicin de asociaciones topolgicas. -Definicin de relaciones y reglas.

Objetos: -Tipos -Atributos -Relaciones -Geometra

BASE DE DATOS GEOGRFICA


Objetos: -Tipos -Atributos -Relaciones -Geometra

MAPAS / REPORTES
Smbolos, lneas, texto, etc.
35

35

Diseo y Planeamiento de la BD de un SIG


REALIDAD FSICA
Fenmenos: -Propiedades -Conexiones

MODELO DEL MUNDO REAL


Entidades: -Tipos -Atributos MODELO DE DATOS -Relaciones

GEOGRFICO

Objetos: -Tipos -Atributos -Relaciones -Geometra

BASE DE DATOS GEOGRFICA


Objetos: -Tipos -Atributos -Relaciones -Geometra

MAPAS / REPORTES
Smbolos, lneas, texto, etc.
36

36

Construccin de Base de Datos Espaciales: PostgreSQL + PostGIS

Software Libre. (http://postgis.refractions.net/) Mdulo que aade soporte de objetos geogrficos a la BD objeto-relacional PostgreSQL para su utilizacin en un GIS. Importante componente para los GIS y los proyectos Open Source con componente espacial.
37

37

PostGIS

Sigue las especificaciones del Open Geospatial Consortium (OGC) para datos espaciales (SFS: Simple Features Specifications). Implementa un esquema SQL para el acceso a informacin georreferenciada en una BD espacial.

38

38

PostGIS: Tipos Espaciales Soportados


Geometra

ColeccinGeomtrica

Punto

Multipunto

Lnea

Multilnea

Polgono

Multipolgono

39

39

PostGIS: Representacin de Tipos Espaciales Bsicos


Punto Lnea Polgono

POINT(0 0) LINESTRING(0 0,1 1) LINESTRING(0 0,1 1,1 2) POLYGON(0 0,4 0,4 4,0 4,0 0)

OpenGIS define dos formas de representar los objetos espaciales: 1. (WKT) Well-known text Ambas guardan informacin del 2. (WKB) Well-known binary tipo de objeto y sus coordenadas.
WKT: formato tipo texto plano que la mayora de programas SIG pueden entender
40

40

PostGIS: Representacin de Tipos Espaciales Combinados .

Multipunto Multilnea Multipolgono Coleccin Geomtrica

MULTIPOINT(0 0,1 2) MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) MULTIPOLYGON((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1),(1 -1,-1 -2,-2 -2,-2 -1,-1 1))

GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(3 4,4 5))

41

41

Well-known text y Well-known binary


OpenGIS define dos formas de representar los objetos espaciales: 1. (WKT)Well-known text Ambas guardan informacin del 2. (WKB)Well-known binary tipo de objeto y sus coordenadas.
WKT: formato tipo texto plano que la mayora de programas SIG pueden entender

Ejemplo: Un valor WKB que corresponde a un POINT(1 1) consiste en esta secuencia de 21 bytes (cada uno representado aqu por dos dgitos hexadecimales): 0101000000000000000000F03F000000000000F03F La secuencia puede descomponerse en los siguientes componentes: Orden de byte: 01 Tipo WKB: 01000000 X: 000000000000F03F Y: 000000000000F03F
42

42

PostGIS: Creacin de Tablas


Una tabla espacial se construye en dos etapas
Creamos una tabla no espacial en la Base de Datos Sintaxis: CREATE TABLE <table_name> (AT1 tipo1, AT2 tipo2) Ejemplos: CREATE TABLE CALLES (ID int4, NOMBRE varchar(25)) CREATE TABLE MANZANAS (ID int4, INFO_CATASTRAL varchar(100))
CALLES ID

MANZANAS ID

NOMBRE

INFO_CATASTRAL

43

43

PostGIS: Creacin de Tablas


2. Aadimos una columna (campo) espacial a la tabla usando la funcin AddGeometryColumn de OpenGIS. Sintaxis: Select AddGeometryColumn(<db_name>,<table_name>, <column_name>,<srid>,<type>,<dimension>)
ID del sistema de referencia espacial

SRID debe ser un valor entero que referencia a un registro de la tabla SPATIAL_REF_SYS (puede ser -1 para casos genricos). El tipo debe ser una cadena en maysculas que indica el tipo de geometra (WKT): POLYGON, MULTILINESTRING, etc.
44

44

Ejemplo de creacin de campo geomtrico


Ejemplo: SELECT AddGeometryColumn(bd_callejero,'calles','geom',4326, 'LINESTRING',2) SELECT AddGeometryColumn(bd_callejero,manzanas','geom', 4326, POLYGON',2)
CALLES ID

MANZANAS GEOM
ID INFO_CATASTRAL GEOM
45

NOMBRE

45

Ejemplo de insercin de datos


INSERT INTO CALLES(ID,NOMBRE,GEOM) VALUES (1,San Martin,GeometryFromText(LINESTRING(1 1,1 2, 1 3),4326))
CALLES ID NOMBRE 1 GEOM San Martin LINESTRING(1 1,1 2,1 3)

INSERT INTO MANZANAS(ID,INFO_CATASTRAL,GEOM) VALUES (815,Info,GeometryFromText(POLYGON(1 1,1 2, 2 2, 2 1, 1 1),4326)


MANZANAS ID INFO_CA 815 Info GEOM POLYGON(1 1,1 2, 2 2, 2 1,1 1)
46

46

Eliminacin de campo geomtrico


DropGeometryColumn(varchar,varchar,varchar)
Sintaxis: Select DropGeometryColumn(<nombre_db>,<nombre_Tabla>, <nombre_columna>) Elimina una columna geomtrica de una tabla espacial. Ejemplo: Select DropGeometryColumn(bd_callejero,calles,geom)
47

47

ndices en BD Espaciales
Los ndices son utilizados en una base de datos espacial para hacer posible el manejo de grandes conjuntos de datos. Sin el manejo de ndices, cualquier bsqueda requerir de un escaneo secuencial de cada registro en la base de datos. Utilizando ndices se aumenta la velocidad de bsqueda organizando los datos en una bsqueda en rbol, que puede ser rpidamente atravesado para encontrar un registro en particular.
48

48

ndices soportados por PostGreSQL


Los rboles B: cuando se pueden almacenar los datos en un slo eje; por ejemplo, nmeros, letras, fechas. Los datos GIS no pueden ser racionales, ordenados a lo largo de un eje (cul es mayor, (0,0) o (0,1) o (1,0)?) el ndice en rboles B no es til. Los rboles R: rompen los datos en rectngulos y subrectngulos y en sub-sub rectngulos, etc. Los ndices en rboles R son utilizados por algunas bases de datos espaciales para indexar los datos GIS. Los ndices GiST (Generalized Search Trees) rompen los datos en cosas de un lado, cosas que se sobreponen, cosas que estn adentro y pueden ser utilizados en un gran rango de tipos de datos, incluyendo datos GIS. PostGIS utiliza un ndice de rboles R implementado sobre un ndice GiST para indexar los datos GIS. 49
49

PostGIS: Utilizacin ndice GiST


Cuando construimos una consulta es importante recordar que slo las operaciones basadas en la caja envolvente (&&) pueden tomar ventaja de los ndices espaciales GiST. Funciones como distance() no pueden usar el ndice para optimizar sus operaciones. Por ejemplo la siguiente consulta puede ser algo lenta en una tabla muy grande:

SELECT the_geom FROM geom_table WHERE distance(the_geom, GeomFromText( 'POINT(100000 200000)', -1) ) < 100
50

50

PostGIS: Utilizacin ndice GiST


La consulta ser lenta debido a que se est calculando la distancia de cada punto en la tabla con el especificado, es decir un clculo de distancia por cada registro en la tabla. Se puede evitar esto utilizando el operador && para reducir el nmero de clculo de distancias requeridos:

SELECT the_geom FROM geom_table WHERE the_geom && 'BOX3D(90900 190900, 100100 200100)'::box3d AND distance(the_geom, GeomFromText('POINT(100000 200000)', 1)) < 100
Se genera una caja de consulta que evita la evaluacin de las distancias para TODOS los registros de la tabla.
51

51

PostGIS: Utilizacin ndice GiST


La consulta selecciona las mismas geometras, en una forma ms eficiente. Asumiendo que existe un ndice GiST en la tabla geom, el planeador de consultas reconocer que usando el ndice reducir el nmero de registros, antes de calcular el resultado de la funcin de distancia. Observar que la geometra BOX3D que es utilizada en la operacin && es un rectngulo unitario de 200 unidades centrado en el punto original "caja de consulta". El operador && utiliza el ndice para rpidamente reducir el conjunto de resultados a slo aquellas geometras que tienen cajas envolventes que traslapen la "caja de consulta". Asumiendo que la caja de consulta es mucho menor en gran medida que las geometras de la tabla, se reducir el nmero de distancias calculadas necesarias para realizarlo.
52

52

PostGIS: Creacin de ndices


PostGIS utiliza la forma genrica de indexado denominada GiST (Generalized Search Tree) para acelerar las consultas.
Sintaxis: CREATE INDEX [nombreindice] ON [nombretabla] USING GIST ( [campogeomtrico] GIST_GEOMETRY_OPS) Ejemplo:
CREATE INDEX Index_Calles ON Calles USING GIST (Geom GIST_GEOMETRY_OPS)
53

53

PostGIS: Instalacin sobre PostGreSQL

54

54

PostGIS: Herramienta de Administracin

55

55

Objetos que se crean en la instalacin de PostgreSQL + PostGIS

Por defecto se crean postgres y template_postgis, BD con soporte geoespacial

56

56

Objetos que se crean en la instalacin de PostgreSQL + PostGIS

Instancia de BD espacial que contiene las funciones, procedimientos, tipos de datos y ms objetos necesarios para manejar informacin vectorial georreferenciada.

57

57

Objetos que se crean en la instalacin de PostgreSQL + PostGIS

Contenedores de informacin de una instancia de la BD. Por defecto se crea uno public para cada BD que es creada
58

58

Objetos que se crean en la instalacin de PostgreSQL + PostGIS

Unidades contenedoras de informacin dentro de un esquema.


59

59

Objetos que se crean en la instalacin de PostgreSQL + PostGIS

Tabla con informacin sobre las tablas que contienen alguna columna con geometras georeferenciadas
60

60

Objetos que se crean en la instalacin de PostgreSQL + PostGIS

Tabla con informacin sobre los sistemas de referencia empleados en la georeferenciacin de las geometras

61

61

PostGIS: Tablas de Metadatos


SPATIAL_REF_SYS Contiene un identificador numrico y una descripcin textual de los sistemas de coordenadas espaciales. GEOMETRY_COLUMNS Caractersticas de las columnas geomtricas de la BD.

62

62

SPATIAL_REF_SYS: Definicin
CREATE TABLE SPATIAL_REF_SYS ( SRID INTEGER NOT NULL PRIMARY KEY, AUTH_NAME VARCHAR(256), AUTH_SRID INTEGER, SRTEXT VARCHAR(2048), PROJ4TEXT VARCHAR(2048) )
63

63

SPATIAL_REF_SYS: Definicin

AUTH_SRID: El identificador segn el estndar

PROJ4TEXT: Proj4 es una SRTEXT: Una usa librera que AUTH_NAME: SRID: Valor entero que transformar El nombre del coordenadas. representacin estndar para well-known text identifica el el sistema de para el sistema de sistema de referencia referencia espacial referencia espacial

Proj4 es una librera que usa PostGIS para transformar PostGIS para coordenadas

64

64

GEOMETRY_COLUMNS: Definicin
CREATE TABLE GEOMETRY_COLUMNS ( F_TABLE_CATALOG VARCHAR(256) NOT NULL, F_TABLE_SCHEMA VARCHAR(256) NOT NULL, F_TABLE_NAME VARCHAR(256) NOT NULL, F_GEOMETRY_COLUMN VARCHAR(256) NOT NULL, COORD_DIMENSION INTEGER NOT NULL, SRID INTEGER NOT NULL, TYPE VARCHAR(30) NOT NULL )

65

65

GEOMETRY_COLUMNS: Definicin

Nombre completo de la tabla que contiene la geometra.

Dimensin espacial de la columna de la geometra.

Tipo del objeto espacial (Punto, Polgono)

Nombre del campo que contiene la geometra en la tabla en cuestin

ID del Sist. Ref. Espacial usada por la geometra en dicha tabla.

66

66

GEOMETRY_COLUMNS: Definicin
F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME: Distinguen totalmente la tabla de caractersticas que contiene la columna geomtrica. F_GEOMETRY_COLUMN: Nombre de la columna geomtrica en la tabla. COORD_DIMENSION: Dimensin espacial de la columna (2D o 3D). SRID: Es una clave fornea que referencia a la tabla SPATIAL_REF_SYS. TYPE: Tipo de objeto espacial. POINT, LINESTRING, POLYGON, MULTIPOINT, GEOMETRYCOLLECTION. Para un tipo heterogneo se utiliza el tipo GEOMETRY.
67

67

Funciones OpenGIS
AsBinary(geometry): Devuelve la geometra pasndola a
formato well-known-binary de OGC, usando la codificacin endian del servidor donde se ejecuta la base de datos.

Dimension(geometry): Devuelve 2 si la geometra est


representada en 2 dimensiones 3 si lo est en 3 dimensiones.

Envelope(geometry): Retorna un POLYGON que representa


la caja circunscrita de la geometra.

GeometryType(geometry): Retorna el tipo de geometra


como una cadena WELL-KNOWN TEXT. Por ejemplo: LINESTRING', 'POLYGON', 'MULTIPOINT', etc.
68

68

Funciones OpenGIS

X(geometry): Encuentra y devuelve la coordenada X del primer


punto de geometry. Devuelve NULL si no hay puntos.

Y(geometry): Encuentra y devuelve la coordenada Y del primer


punto de geometry. Devuelve NULL si no hay puntos.

Z(geometry): Encuentra y devuelve la coordenada Z del primer


punto de geometry. Devuelve NULL si no hay puntos.

69

69

Funciones OpenGIS

IsClosed(geometry): Devuelve TRUE si punto final = punto


inicial de la geometra.

NumGeometries(geometry): Si geometry es una


GEOMETRYCOLLECTION devuelve el nmero de geometras que la componen. En caso contrario devuelve NULL.

Distance(geometry,geometry): Devuelve la distancia


cartesiana entre dos geometras.

AsText(geometry): Devuelve una representacin textual de una


geometra. Por ejemplo: POLYGON(0 0,0 1,1 1,1 0,0 0).

70

70

Funciones OpenGIS

max_distance(linestring,linestring): Devuelve la distancia ms larga entre dos linestring. mem_size(geometry): Retorna el tamao en bytes de la geometra. npoints(geometry): Devuelve el nmero de puntos en la geometra.

71

71

Funciones OpenGIS
perimeter2d(geometry): Devuelve el permetro de la geometra, si esa geometra es un polgono o un multipolgono. point_inside_circle(geometry,circle_center_x,circle_center _y,radius): Devuelve verdadero si la geometra es un punto y est dentro del crculo. postgis_version(): Devuelve la versin de las funciones postgis instaladas en la bases de datos. summary(geometry): Devuelve un resumen en texto del contenido de esa geometra.

72

72

Funciones OpenGIS

transform(geometry,integer): Devuelve una nueva geometra con sus coordenadas transformadas a la SRID dada por el parmetro integer. SRID debe existir en la tabla SPATIAL_REF_SYS. translate(geometry,float8,float8,float8): Traslada la geometra a la nueva localizacin usando los valores pasados como desplazamientos de X,Y,Z. truly_inside(geometryA,geometryB): Devuelve verdadero si alguna parte de B est dentro de la caja circunscrita de A.
73

73

Funciones OpenGIS
SRID(geometry): Devuelve un nmero entero que es el identificador del sistema de referencia espacial de una geometra. SetSRID(geometry): Establece el valor del SRID de una geometra al entero dado. GeometryFromText(geometry,integer): Sintaxis: GeometryFromText(<geom>,<SRID>) convierte un objeto de la representacin textual a un objeto geometra. GeomFromText(varchar,integer): Igual que GeometryFromText.
74

74

Funciones OpenGIS

EndPoint(geometry): Devuelve un objeto punto que representa el ltimo punto en la geometra. StartPoint(geometry): Devuelve un objeto punto que representa el primer punto en la geometra. Centroid(geometry): Devuelve un punto que representa el centroide de la geometra.

75

75

PostGIS: Relaciones Topolgicas


Se pueden utilizar expresiones SQL simples para determinar relaciones espaciales y operaciones espaciales.

Contains Inside

Covers Covered By

Touch

Overlaps Boundaries Intersect

Overlaps Boundaries Disjoint

Equal

Disjoint

76

76

PostGIS: Operadores Topolgicos


equals(geometry, geometry) son iguales las geometras? disjoint(geometry, geometry) no comparten las geometras un punto comn? intersects(geometry, geometry) intersectan? touches(geometry, geometry) intersectan sus bordes? contains(geometry, geometry) contiene una geometra completamente a la otra? relate(geometry, geometry) hay intersecciones entre el interior, bordes o exterior de las geometras?
77

77

PostGIS: Operadores Topolgicos


overlaps(geometry1, geometry2) presentan una superposicin espacial? (entre elementos del mismo tipo)

78

78

PostGIS: Operadores Topolgicos


crosses(geometry1, geometry2) presentan un cruce espacial?

79

79

PostGIS: Operadores de conjunto


intersection(geometry,geometry): geometra de puntos comunes geomUnion(geometry,geometry): geometra conteniendo todos los puntos de ambas geometras. symdifference(geometry,geometry): geometra conteniendo los puntos distintos entre ambas geometras.

difference(geometry,geometry): geometra conteniendo los puntos que estn slo en la primera de las geometras.

80

80

Ejemplo:

Union(P1,P4)

Intersection(P1,P4)
81

81

SymDifference(P1,P4)

Difference(P1,P4)

Difference(P4,P1)

82

82

PostGIS: Validacin (verifica si la geometra posee auto-intersecciones)


isSimple(geometry)

PostGIS: Operadores mtricos


area(geometry) perimeter(geometry)

PostGIS: Operaciones con caja envolvente


A&&B: Devuelve verdadero si la caja circunscrita de A se superpone a la de B A<&B: Devuelve verdadero si la caja que circunscribe a A superpone o est a la derecha de la de B. A&>B: Devuelve verdadero si la caja que circunscribe a A superpone o est a la izquierda de la de B.
83

83

PostGIS: Operadores Espaciales


A<<B: Devuelve verdadero si la caja que circunscribe a A est estrictamente a la derecha de la de B. A>>B: Devuelve verdadero si la caja que circunscribe a A est estrictamente a la izquierda de la de B. A~=B: Es equivalente al operador igual que. Compara las 2 geometras caracterstica por caracterstica y si todas coinciden devuelve verdadero. A~B: Devuelve verdadero si la caja circunscrita de A est contendida en la de B.
84

84

85

85

Predio Wal-Mart

estacionamiento

supermercado

acceso supermercado

cines

patio de comidas

86

86

Predio Wal-Mart

estacionamiento

supermercado

acceso supermercado

cines

patio de comidas

87

87

Generar una BD y tabla espacial en Postgis para representar el predio mostrado y resolver las siguientes consultas espaciales:

1- Cul es el rea total del predio? 2- Cul es el rea de interseccin del cine con el patio de comidas? 3- Cul es el rea total de espacio cubierto? 4- Qu reas intersectan entre s? 5- Cul es el permetro de cada rea? 6- Cul es el rea descubierta? 7- Cul es el nombre y rea de la parte ms chica? 8- Cul es la distancia entre el cine y el supermercado? 9- Borrar la tabla generada para representar el predio.
88

88