Curso Georeferenciacion IL

Georreferenciación Temario Repaso de SQL ● Obtención de datos georeferenciales (API de Google) ● Bases de datos espaci

Views 78 Downloads 0 File size 10MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Georreferenciación

Temario Repaso de SQL ● Obtención de datos georeferenciales (API de Google) ● Bases de datos espaciales: Postgis ● Visualización de datos georeferenciales en aplicaciones: Qgis ● Tratamiento y presentación de información georeferencial con Pentaho ●

Bases de datos Definición y tipos de Bds Conjunto de datos pertenecientes a un mismo contexto almacenados sistemáticamente. Ejemplo: una biblioteca ●



Estáticas (Sólo lectura. Uso: proyección y análisis) Dinámicas (Cambian constantemente, se actualizan, se ingresan datos, se borran. Uso: manipulación y consulta)









Jerárquicas y de red (obsoletas) Transaccionales (optimizan operaciones) Relacionales (normalización) Multidimensionales (hechos y dimensiones)

Bases de datos Las bases de datos están integradas por: ●

Tablas



Columnas



Filas



Registros



Campos

Bases de datos Modelo relacional Características ●

Catálogos



Llaves primarias



Llaves foráneas





No admite redundancia Sistemas relacionales

Bases de datos Modelo dimensional Características ●

Tablas de dimensiones



Tablas de hechos



Llaves subrogadas



Admite redundancia



Datawarehouses y Datamarts

PostgreSQL ●





PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su código fuente disponible libremente. Es el sistema de gestión de bases de datos de código abierto más potente del mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases de datos comerciales. PostgreSQL utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilos para garantizar la estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará funcionando.

PostgreSQL ●

Antecedentes IBM había estado trabajando desde 1973 con los primeros conceptos, ideas y teorías sobre bases de datos relacionales. Su proyecto "System R" fue entre otras cosas la primera implementación del lenguaje SQL (Structured Query Language). Este proyecto, sus decisiones de diseño y muchos de los algoritmos usados, influenciaron muchos de los sistemas de bases de datos relacionales que aparecieron posteriormente.

El antecesor de PostgreSQL es el proyecto Ingres (INteractive Graphics REtrieval System) que estuvo activo de 1977 a 1985. Su creador, el profesor Michael Stonebraker de la Universidad de Berkeley se basó incialmente en el “System R”. Ingres compitió con Oracle por el mercado. En 1985 Stonebraker regresa a Berkeley e inicia el proyecto PostgreSQL. En 1994 los estudiantes Andrew Yu y Jolly Chen depuran el código para que fuera 100% en ANSI C, implementan un intérprete de lenguaje SQL y desarrollan la interfaz pgsql para las consultas. Lo liberaron en 1995 como PostgreSQL95. En 1996 se cambia a PostgreSQL y se crea el PostgreSQL Global Development Team.

PostgreSQL Características ●















Documentación completa. Licencia BSD (Admite el uso de su código fuente en software propietario). Disponible para Linux y UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) y Windows 32/64bit. Funciones/procedimientos almacenados (stored procedures) en numerosos lenguajes de programacion, entre otros PL/pgSQL (similar al PL/SQL de Oracle), PL/Perl, PL/Python y PL/Tcl. Numerosos tipos de datos y posibilidad de definir nuevos tipos. Además de los tipos estándares en cualquier base de datos, tenemos disponibles, entre otros, tipos geométricos, de direcciones de red, de cadenas binarias, UUID, XML, matrices, etc. Soporta el almacenamiento de objetos binarios grandes APIs para programar en C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, PHP, Lisp, Scheme, Qt y muchos otros.

PostgreSQL Instalación postgreSQL ●

Fuentes



Instalador Interfaces



psql



pgAdmin

http://www.postgresql. org/

PostgreSQL Instalación postgreSQL ●

psql

Seguir las instrucciones del archivo INSTALL ./configure gmake su gmake install adduser postgres --crea el usuario postgres mkdir /var/lib/pgsql/data --crea la carpeta de los datos chown postgres /var/lib/pgsql/data --otorga privilegios a postgres sobre los datos su - postgres /usr/local/pgsql/bin/initdb -D /var/lib/pgsql/data --inicializa el cluster /usr/local/pgsql/bin/postgres -D /var/lib/pgsql/data >logfile 2>&1 &

Descargar y descomprimir archivos fuente: ●

tar -xvzf postgresql-X.X.X.tar.gz

/usr/local/pgsql/bin/createdb test -- crea base de datos de prueba /usr/local/pgsql/bin/psql test --abre la base de datos de prueba

PostgreSQL ●

pgAdmin

PostgreSQL Iniciar y detener PosgreSQL Como superusuario sara@Naomi: sudo su Iniciar el servicio root@Naomi:/home/sara# /etc/init.d/postgresql start Detener el servicio root@Naomi:/home/sara# /etc/init.d/postgresql stop

Para configurar que el servidor de Postgres arranque al levantar el equipo debemos editar el archivo start.conf sara@Naomi: sudo su - postgres

[sudo]pwd: sara@Naomi: nano /etc/postgresql/9.3/main/start.conf

PostgreSQL Iniciar y detener PosgreSQL

PostgreSQL Comandos básicos de psql Entrar desde una terminal con:

sudo su - postgres

Como usuario postgres ejecutar la orden: ●

● ● ● ● ● ● ● ●

\?

psql [nombrebd]

muestra el listado de los comandos de psql (salir con q) \h muestra la lista de órdenes para generar sentencias \h [orden] muestra la sintaxis de las sentencias en PostgreSQL \q salir de psql \l enlistar bases de datos en el servidor \c [nombrebase] conectarse a la base de datos con ese nombre \c [nombrebase] - usuario \p mostrar el contenido del búfer de consulta \r reiniciar (limpiar) el búfer de consulta

PostgreSQL Comandos básicos de psql ●

\w [nombrearchivo] escribir el bufer de consulta en un archivo Los siguientes comandos con un S+ detallan la consulta:



● ● ● ● ● ● ●

\d [nombretabla o índice o vista] despliega el detalle de la tabla, el índice o la vista \d enlista las tablas, vistas y secuencias \dt enlista las tablas de la base de datos activa \di enlista los índices \dg enlista los roles \dv enlista las vistas \password [usuario] cambia el password de un usuario \copyright muestra la versión de PostgreSQL instalada

PostgreSQL Comandos básicos de psql ● ●





select current_user; select session_user;

indica quién es el usuario conectado permite saber qué usuarios están conectados set session authorization nuevousuario; permite cambiar de usuario de + a privilegios select version();

PostgreSQL Sentencias de SQL Básicas ● ● ● ● ● ● ● ●



CREATE DATABASE CREATE TABLE ALTER TABLE DROP TABLE INSERT UPDATE DELETE SELECT Cláusulas SELECT, FROM, INTO, WHERE Cláusulas GROUP BY, HAVING, ORDER BY Tipos de JOIN Subqueries

PostgreSQL Sentencias de SQL Básicas ●

CREATE DATABASE Las tablas se definen en tres pasos: –

Dar el nombre a la tabla.



Definir cada columna, incluyendo restricciones de columna: ●



● ●



Primary Key: especifica las columnas que conforman la clave primaria de la tabla. Foreign key: indica las columnas que constituyen una clave externa en la tabla. References: indica la tabla que provee la clave foránea. Check (P): especifica un predicado que debe satisfacer cada fila de la tabla

Definir las restricciones de la tabla.

PostgreSQL Sentencias de SQL Básicas ●

CREATE DATABASE CREATE DATABASE nombre-tabla [ [ WITH ] [ OWNER [=] nombre_de_usuario ] [ TEMPLATE [=] plantilla ] [ ENCODING [=] codificación ] [ TABLESPACE [=] nombre_de_tablespace ] [ CONNECTION LIMIT [=] límite_conexiones ] ] Nota, para crear tablas debemos conectarnos a la BD recién creada con \c nombreBD

Ejemplo:

CREATE DATABASE prueba1;

PostgreSQL Sentencias de SQL Básicas ●

CREATE TABLE CREATE TABLE nombre-tabla (campo1 (tipo tamaño / dominio) [NOT NULL], [campo2 (tipo tamaño / dominio) [NOT NULL]], [PRIMARY KEY (c1, c2, ..., cn)], [FOREIGN KEY (c1) REFERENCES tabla-x], [CHECK (P)])

CREATE TABLE clientes (id_cliente char(5) primary key not null, nombre text, direccion text);

PostgreSQL Sentencias de SQL Básicas ●

CREATE TABLE CREATE TABLE cuenta (id_cuenta char(10) PRIMARY KEY NOT NULL, id_cliente char(5) REFERENCES clientes(id_cliente), pagos char(10), saldo integer CHECK (saldo >= 0)); CREATE TABLE auxiliar (id_auxiliar integer PRIMARY KEY); CREATE INDEX mi_indice ON auxiliar (id_auxiliar ASC NULLS LAST);

PostgreSQL Sentencias de SQL Básicas ●

ALTER TABLE

ALTER TABLE nombre-tabla {ADD | MODIFY [COLUMN campo tipo [(tamaño)] [NOT NULL] [CONSTRAINT nombre-constraint tipo-constraint]] | [CONSTRAINT nombre-constraint tipo-constraint (campo, …)]} Adicionar un campo: ALTER TABLE clientes ADD COLUMN limite_credito numeric(15,2); Quitar el campo salario de una tabla: ALTER TABLE cuenta DROP COLUMN pagos;

PostgreSQL Sentencias de SQL Básicas ●

DROP TABLE

DROP {TABLE tabla | INDEX índice ON tabla} Ejemplo: eliminar el índice mi_Indice de la tabla auxiliar. DROP INDEX mi_indice; Ejemplo: eliminar una tabla. DROP TABLE auxiliar;

PostgreSQL Sentencias de SQL Básicas ●

INSERT INSERT [INTO] {table-name | view-name} [(column-list)] {VALUES | (values-list) | select-statement }

INSERT INTO clientes (id_cliente, nombre, direccion, limite_credito) VALUES ('A0001','Almacenes Estrada','Ayuntamiento No. 2132',50000); INSERT INTO clientes (id_cliente, nombre, direccion, limite_credito) VALUES ('A0002','Casa Rayo','Revolución No. 33',50000); INSERT INTO clientes (id_cliente, nombre, direccion, limite_credito) VALUES ('A0003','Miguel Nava','San Cristobal s/n',10000); INSERT INTO clientes (id_cliente, nombre, direccion, limite_credito) VALUES ('A0004','Waldos de México','Marina Nacional 9887',100000);

PostgreSQL Sentencias de SQL Básicas ●

INSERT INSERT INTO cuenta (id_cuenta, id_cliente, saldo) VALUES ('A09B00005','A0001',25416); INSERT INTO cuenta (id_cuenta, id_cliente, saldo) VALUES ('A09B00006','A0001',18950); INSERT INTO cuenta (id_cuenta, id_cliente, saldo) VALUES ('A09B00007','A0002',35000); INSERT INTO cuenta (id_cuenta, id_cliente, saldo) VALUES ('A09B00008','A0003',8750); INSERT INTO cuenta (id_cuenta, id_cliente, saldo) VALUES ('A09B00009','A0004',5600); INSERT INTO cuenta (id_cuenta, id_cliente, saldo) VALUES ('A09B00050','A0004',3420); INSERT INTO cuenta (id_cuenta, id_cliente, saldo) VALUES ('A09B00054','A0002',4970);

PostgreSQL Sentencias de SQL Básicas ●

UPDATE UPDATE {table-name | view-name} SET{column-list | variable-list | variable_and_column-list},….. [ WHERE { condition }]

UPDATE cuenta SET id_cuenta='A09B00050';

saldo=3975

WHERE

UPDATE clientes SET nombre='Aldos de México' WHERE id_cliente='A0004';

PostgreSQL Sentencias de SQL Básicas ●

DELETE

DELETE FROM {table-name | view-name} [WHERE {condition} ] DELETE FROM cuenta WHERE id_cuenta = 'A09B00050';

PostgreSQL Sentencias de SQL Básicas ●

SELECT Cláusulas SELECT, FROM, INTO, WHERE SELECT ... FROM ... WHERE SELECT lista los atributos a mostrar en el resultado de la consulta. FROM lista las relaciones (tablas) que se deben analizar. WHERE se refiere a las condiciones de búsqueda que deberán cumplir los atributos en las relaciones SELECT * FROM clientes; SELECT id_cliente, nombre, direccion, limite_credito FROM clientes WHERE limite_credito > 5000;

PostgreSQL Sentencias de SQL Básicas ●

SELECT La cláusula INTO, permite guardar los resultados intermedios de una consulta [SELECT ...] INTO tabla_into [FROM ...] Los alias son útiles para evitar escribir nombres muy largos cada vez. Sólo funcionan en la consulta activa. [SELECT…] FROM expresión tabla [as] t_alias [, ...]

PostgreSQL Sentencias de SQL Básicas SELECT Las condiciones de búsqueda pueden incluir: Operadores de Comparación (=, , < y >). ●

Porciones de cadenas de caracteres (SUBSTR)



Rangos (BETWEEN y NOT BETWEEN)



Listas (IN, NOT IN)



Patrones de caracteres (LIKE y NOT LIKE)



Valores desconocidos (IS NULL y IS NOT NULL)



Combinaciones con conjunciones (AND, OR)

PostgreSQL Sentencias de SQL Básicas SELECT Ejemplos de condiciones de búsqueda: ●







Operadores de comparación: WHERE SueldoBasico > 1000 WHERE SUBSTR(CodigoPostal, 1, 3)= “SAN” Rangos (BETWEEN / NOT BETWEEN): WHERE SueldoBásico BETWEEN 1000 AND 5000 Listas (IN / NOT IN): WHERE Departamento NOT IN ('ADM', 'SIS') Coincidencia de patrones o cadenas de caracteres (LIKE / NOT LIKE)) WHERE NombreCompleto LIKE “LET%”

PostgreSQL Sentencias de SQL Básicas ●

SELECT Cláusulas GROUP BY, HAVING, ORDER BY

SELECT {{columnas_de_agrupación,…}, {función_de_agregación,…}} FROM … [WHERE …] GROUP BY {columnas_de_agrupación,…} SELECT limite_credito FROM clientes GROUP BY limite_credito; SELECT id_cliente, SUM(saldo) FROM cuenta GROUP BY id_cliente;

PostgreSQL Sentencias de SQL Básicas ●

SELECT Cláusulas GROUP BY, HAVING, ORDER BY

SELECT {{columnas_de_agrupación,…}, {función_de_agregación,…}} FROM … [WHERE …] GROUP BY {columnas_de_agrupación,…} HAVING condiciones_de_búsqueda SELECT id_cliente, SUM(saldo) FROM cuenta GROUP BY id_cliente HAVING id_cliente LIKE 'A%' ORDER BY id_cliente;     

PostgreSQL Sentencias de SQL Básicas ●

SELECT Cláusulas GROUP BY, HAVING, ORDER BY

SELECT {columna 1, columna 2,…} FROM … [WHERE …] [GROUP BY...] [HAVING ...] ORDER BY columna 1 [ASC|DESC],... SELECT nombre, limite_credito FROM clientes ORDER BY nombre DESC;

PostgreSQL Sentencias de SQL Básicas ●



● ●





SELECT Los join sirven para combinar tablas, en PostgreSQL se definen tipos: CROSS JOIN SELECT ... FROM table1 CROSS JOIN table2 INNER JOIN LEFT OUTER JOIN SELECT ... FROM table1 LEFT OUTER JOIN table2 ON conditional_expression ... RIGHT OUTER JOIN SELECT ... FROM table1 RIGHT OUTER JOIN table2 ON conditional_expression ... FULL OUTER JOIN SELECT ... FROM table1 FULL OUTER JOIN table2 ON conditional_expression ...

PostgreSQL Representación gráfica de los tipos de Join

PostgreSQL Representación gráfica de los tipos de Join

PostgreSQL Representación gráfica de los tipos de Join

PostgreSQL Sentencias de SQL Básicas ●

SELECT EL join que se utiliza comunmente es el INNER JOIN: [SELECT] FROM

TABLA1 [INNER] JOIN TABLA2

ON TABLA1.COLUMNA1 = TABLA2.COLUMNA1 [WHERE] SELECT cl.nombre, cl.direccion, SUM(ct.saldo) FROM cuenta ct INNER JOIN clientes cl ON cl.id_cliente=ct.id_cliente GROUP BY cl.id_cliente ORDER BY cl.nombre;

PostgreSQL Sentencias de SQL Básicas ●

SELECT Subqueries SELECT cl.nombre, cl.limite_credito, ct.total_saldo FROM (SELECT id_cliente, SUM(saldo) total_saldo FROM cuenta GROUP BY id_cliente) ct INNER JOIN clientes cl ON cl.id_cliente= ct.id_cliente ORDER BY nombre;

PostgreSQL Sentencias de SQL Básicas ●

Operadores lógicos: AND, OR, NOT



Operadores matemáticos:

PostgreSQL Sentencias de SQL Básicas ●

Operadores de comparación

PostgreSQL Sentencias de SQL Básicas ●

Funciones de agregación

SUM([ALL|DISTINCT] Calcula el total de una expresión expresión) numérica para todas las filas o sólo las distintas. AVG([ALL|DISTINCT] Calcula el promedio de una expresión expresión) numérica para las filas involucradas. MIN([ALL|DISTINCT] Calcula el mínimo valor de una expresión) expresión numérica para las filas involucradas MAX([ALL|DISTINCT] Calcula el máximo valor de una expresión) expresión numérica para las filas involucradas. COUNT([ALL| Cuenta el número de veces que se DISTINCT] expresión) repite el valor de la expresión. COUNT(*) Cuenta las filas seleccionadas

PostgreSQL Sentencias de SQL Básicas ●

Funciones matemáticas

PostgreSQL Sentencias de SQL Básicas ●

Funciones para operar con cadenas

PostgreSQL Sentencias de SQL Básicas ●

Funciones para operar con fechas

Georreferenciación Es un término de reciente creación que se refiere al posicionamiento con el que se define la localización de un objeto espacial (representado mediante un punto, un vector, una línea, una superficie o un

volumen) en un sistema de coordenadas y un datum determinado, es decir, en un sistema de referencia espacial. Este proceso es utilizado frecuentemente en los Sistemas de Información Geográfica (SIG o GIS). La definición tecnocientífica de georreferenciación de objetos en un espacio físico implica el establecimiento de relaciones entre las imágenes de raster o vector sobre una proyección geográfica o sistema de coordenadas.

Datum

Georreferenciación

Un datum geodésico es un punto, superficie o eje fijo que sirve como referencia de las medidas tomadas. En geodesia un datum es un conjunto de puntos de referencia sobre la superficie terrestre que junto con un modelo asociado a la forma de la Tierra (elipsoide) permiten definir un sistema de coordenadas geográfico. Datums horizontales son utilizados para describir un punto sobre la superficie terrestre. Datums verticales miden elevaciones o profundidades (nivel del mar). Hay cientos de datums locales. Aunque el WGS84 se puede usar globalmente.

Georreferenciación Datum El origen del sistema de coordenadas de un datum local no se encuentra en el centro de la tierra. El centro del esferoide de un datum local está desplazado respecto al centro de la tierra. NAD 1927 y el Datum Europeo de 1950 (ED 1950) son datums locales. NAD 1927 se diseñó para que se ajustara a América del Norte razonablemente bien, mientras que ED 1950 se creó para su uso en Europa. Dado que un datum local alinea tan estrechamente su esferoide a una área determinada de la superficie de la tierra, no es adecuado para su uso fuera del área para la que se diseñó.

Georreferenciación Datos geodésicos ●



La geodesia es la ciencia que se encarga de la determinación de la forma y dimensiones de la Tierra, así como de la medición de las leves variaciones en el campo magnético terrestre. Los datos geodésicos se usan en topografía,

en navegación, en fotogrametría (aérea), permiten la representación cartográfica de territorios muy extensos.

Georreferenciación Sistemas de Referencia Espacial Los Sistemas de Referencia Espacial se clasifican en dos tipos según Sister (2003): ●



Indirectos toman como referencia objetos con una posición conocida tales como límites estatales, monumentos, etc.

Directos constan de un sistema coordenado y un datum.

El sistema de coordenadas de longitud y latitud global es un marco muy conocido para definir ubicaciones en el mundo real. Con sus diferentes proyecciones sobre el plano se hacen mapas; a los que se agregan retículas y marcas de graduación.

Georreferenciación Sistemas de Referencia Espacial Longitud ●

Medida en grados del ángulo entre el meridiano 0 y cualquier punto de la Tierra, con el centro del planeta como vértice.



Su rango va desde 0° hasta 180°



Se mide hacia el este (E) o hacia el oeste (W). Latitud



Medida en grados del ángulo entre el ecuador y cualquier punto de la Tierra, con el centro del planeta como vértice.



Su rango va desde 0° (el ecuador) hasta 90° (los polos).



Se mide hacia el norte (N) o hacia el sur (S).

Georreferenciación Sistemas de Coordenadas El primer sistema de coordenadas que aprendemos en la escuela es el Cartesiano (x,y) bidimensional, y (x,y,z) en tres dimensiones. Pero también conocemos las coordenadas polares (r,θ), las esféricas (r,θ,φ) y las cilíndricas (r,θ,z).

Georreferenciación Proyecciones Las proyecciones son transformaciones entre sistemas de coordenadas, los mapas son proyecciones de una superficie esférica sobre un plano, la más conocida es la Mercator (s. XVI).

Georreferenciación Proyecciones

Tipos de proyección en función de la propiedad que conservan: conformes (ángulos), equivalentes (superficies), equidistantes (distancias), afilácticos (minimizan distorsión).

Georreferenciación Proyecciones Dependiendo de nuestro interés podemos preservar los ángulos, las distancias o las superficies de la esfera original al plano.

Georreferenciación Proyecciones En en toda proyección de una esfera a un plano habrá distorsiones ya sea en la forma, las distancias, las direcciones o las escalas.

Georreferenciación Proyecciones En el Tratado de Tordesilla el Papa Alejandro VI decició que del meridiano 48° de Greenwich, los territorios recién descubiertos al Este eran para España, y al Oeste para Portugal.

Georreferenciación Mapas Las propiedades de un mapa son: •La escala

•La proyección

•Las coordenadas geográficas

La estructura matemática de un mapa le da la precisión y exactitud para hacer cálculos y mediciones. La generalización en un mapa significa que se debe representar de la misma manera los objetos de iguales características. Cuando elaboramos un mapa debemos considerar: ●

La selección de los elementos útiles



La simplificación de los datos



Utilizar una simbología clara y universal



Clasificar ordenadamente la información que se va a mostrar



Omitir la información innecesaria

Georreferenciación Sistema de Información Geográfica (SIG ó GIS) El National Center for Geographic Information and Analysis de USA define: “Es un sistema de hardware, software y procedimientos elaborados para facilitar la obtención, la gestión, la manipulación, el análisis, el modelado, la representación y la salida de datos espacialmente referenciados para resolver problemas complejos de planificación y gestión” (NCGIA, 1990).

Georreferenciación Sistema de Información Geográfica (SIG ó GIS) Los GIS integran, almacenan, editan, analizan, comparten y muestran información geográficamente referenciada. A través de aplicaciones de escritorio y para dispositivos móviles los usuarios pueden hacer consultas interactivas sobre mapas. Los gobiernos pueden diseñar estrategias logísticas para atender a la población, las empresas pueden descubrir nichos de mercado, un conductor puede conocer la ruta para llegar a su destino.

Georreferenciación Antecedentes históricos En 1854 el Dr. John Snow fue el primero en marcar sobre un mapa la incidencia de casos de cólera en el distrito de Soho en Londres. Con esa información pudo identificar un pozo de agua contaminado como origen del brote. En 1962 el Departamento Federal de Silvicultura y Desarrollo Rural en Otawa creó el primer GIS para hacer el inventario de tierras de Canadá. Fue más que una aplicación cartográfica pues permitía superponer capas de información, realizar mediciones y llevar a cabo la digitalización y escaneo de datos. El CGIS operó hasta los años noventa.

Georreferenciación Antecedentes históricos En la década de los años ochenta Integraph, ESRI y CARIS ofertaron software comercial para GIS (Sistemas de Información Geográfica). El Departamento de Defensa de los EU desarrolla GRASS para la supervisión y gestión medioambiental de territorios. En los años noventa se generaliza esta tecnología a nivel del usuario doméstico gracias a las PCs.

Durante los inicios del s. XXI surge el concepto de visualización de datos GIS a través de internet y diferentes dispositivos locales y móviles lo que mueve a la necesidad de una estandarización de formatos.

Georreferenciación Análisis que debe realizar un GIS ●









Contigüidad: Encontrar áreas en una región determinada. Coincidencia: Análisis de superposición de puntos, líneas, polígonos y áreas. Conectividad. Análisis sobre entidades gráficas que representen redes de conducción, tales como: Apareamiento de direcciones: Acople de información de direcciones a las entidades gráficas. Análisis digital del terreno: Análisis de la información de superficie para el modelado de fenómenos geográficos continuos. Con los modelos digitales de terreno (DTM: la representación de una superficie por medio de coordenadas X, Y, Z) que son la información básica para el análisis de superficies.

Georreferenciación Análisis que debe realizar un GIS ●









Enrutamiento: Cómo se mueve el elemento conducido a lo largo de la red. Radio de acción: Alcance del movimiento del elemento dentro de la red. Operación sobre mapas: Uso de expresiones lógicas y matemáticas para el análisis y modelado de atributos geográficos. Estas operaciones son soportadas de acuerdo con el formato de los datos (raster o vectorial) Geometría de coordenadas: Operaciones geométricas para el manejo de coordenadas terrestres por medio de operadores lógicos y aritméticos. Algunas de esas operaciones son: proyecciones terrestres de los mapas, transformaciones geométricas (rotación, traslación, cambios de escala), precisión de coordenadas, corrección de errores. Salida y representación de la información

Georreferenciación Aplicaciones PLANIFICACIÓN, GESTIÓN Y POLÍTICA URBANA

CIENCIAS MEDIOAMBIENTALES ●



zonificación



adquisición de terrenos



desarrollo económico



● ●



aplicación de códigos programas de renovación de viviendas



respuesta a emergencias



análisis de crímenes



tasación tributaria







vigilancia del riesgo medioambiental modelado de escorrentías (corrientes de agua rebosadas) gestión de cuencas, llanuras aluviales, humedales, acuíferos análisis de impacto medioambiental instalaciones para materiales tóxicos modelado de aguas subterráneas y rastreo de contaminación

Georreferenciación Aplicaciones CIENCIA POLÍTICA

COMERCIO



nueva división en distritos





análisis de resultados electorales





modelado de previsiones

INGENIERÍA CIVIL/SERVICIOS ●





ubicación de instalaciones subterráneas diseño de trazado para autopistas, tránsito coordinación en el mantenimiento de infraestructuras



análisis demográfico penetración del mercado / análisis de acciones selección de ubicaciones

GESTIÓN DE LA EDUCACIÓN ●

mantenimiento del área de asistencia



proyecciones de matrícula



ruta del autobús escolar

Georreferenciación Aplicaciones BIENES INMUEBLES ●

precios del terreno en vecindades



análisis del impacto del tráfico



determinación del mejor uso

ASISTENCIA SANITARIA ●

epidemiología



análisis de necesidades



inventario de servicios

Georreferenciación Aplicaciones: GPS El Sistema Global de Navegación por Satélite (GNSS) permite determinar en todo el mundo la posición de un objeto, una persona o un vehículo con una precisión hasta de centímetros (si se utiliza GPS diferencial), aunque lo habitual son unos pocos metros de precisión. El sistema fue desarrollado, instalado y empleado por el Departamento de Defensa de los Estados Unidos. El sistema GPS está constituido por 24 satélites y utiliza la triangulación para determinar en todo el globo la posición con una precisión de más o menos metros. El GPS funciona mediante una red de 24 satélites en órbita sobre el planeta tierra, a 20 200 km, con trayectorias sincronizadas para cubrir toda la superficie de la Tierra.

Cuando se desea determinar la posición, el receptor que se utiliza para ello localiza automáticamente como mínimo tres satélites de la red, de los que recibe unas señales indicando la identificación y la hora del reloj de cada uno de ellos. Por triangulación el receptor determina los tiempos y con ello las distancias para cada satélite, y con las coordenadas de ubicación de los satélites determina su propia posición.

Georreferenciación Creación de datos digitales El método más utilizado es la digitalización, donde a partir de un mapa impreso o con información tomada en campo se transfiere a un medio digital por el empleo de un programa de Diseño Asistido por Ordenador (DAO o CAD) con capacidades de georreferenciación. Con esta información se integran los datasets de los GIS. Dada la amplia disponibilidad de imágenes orto-rectificadas (tanto de satélite como aéreas), la digitalización por esta vía se está convirtiendo en la principal fuente de extracción de datos geográficos. Esta forma de digitalización implica la búsqueda de datos geográficos directamente en las imágenes aéreas en lugar del método tradicional de la localización de formas geográficas sobre un tablero de digitalización.

Georreferenciación ●

Base de datos espacial: Sistema administrador de BD que maneja datos espaciales. Requieren de un Sistema de Referencia Espacial (SRE) para definir la localización y la relación entre objetos. Los SRE pueden ser georreferenciados (sus valores se proyectan sobre la superficie terrestre) y no georreferenciados. La estructura de la BD se organiza en capas temáticas (geográficas).

Georreferenciación ●

Capas geográficas: Son las características geográficas del evento o área que se desea modelar (división política, hidrología, caminos, contornos, etc.), las capas se deben almacenar en archivos separados porque representan atributos diferentes.

Georreferenciación ●





Entidad: es un objeto, distinguible de lo que le rodea; formalmente es una representación digital del componente descriptivo de un rasgo geográfico (ejemplos: carretera, presa, línea de trasmisión, área agrícola). Representación geométrica: Representación digital del componente espacial de un rasgo geográfico. Existen 3 tipos básicos de representación geométrica: punto, línea y área. Datos espaciales (geográficos): Representan información sobre la geografía como lo son las formas geométricas, redes, superficies (áreas), ubicaciones e imágenes de los objetos. Estos objetos pueden ser ubicaciones puntuales u objetos de mayor extensión como lo son países, carreteras o cuerpos de agua.

Georreferenciación Datawarehouse espacial ●

Es una colección de datos que añade la geografía de los datos para la toma de decisiones, extiende la definición tradicional de un DWH y es Geo-Relacional, es decir, combina e integra los datos espaciales con los datos descriptivos en su estructura.

PostGIS Tipos de datos Los datos en una BDG (Base de datos geográfica) se clasifican en tres tipos: ●





Vectorial. Comprende los datos de las cartas geográficas a diferentes escalas. Ráster. Contiene información tipo imagen, tal como las ortofotos digitales y los modelos digitales de elevación (matriz de celdas en espacio continuo). Alfanumérico. Comprende los datos provenientes de los reportes de campo.

PostGIS ●

Tipos de datos

Vectorial. Comprende los datos de las cartas geográficas a diferentes escalas. ●









Almacenamiento de información discreta Información compacta y con mejor compatibilidad con bases de datos relacionales, fácil de actualizar Representa los objetos por puntos, líneas y polígonos Formatos: shp, dwg, dxf, gml Desventaja: es más difícil de analizar y y dar mantenimiento a su estructura

PostGIS ●

Tipo de dato vectorial

El shapefile es probablemente el formato más popular para datos vectoriales. ●

Cada shapefile tiene tres componentes (archivos) indispensables: ●





Un archivo con extensión .SHP– Es el principal y almacena la geometría. Un archivo con extensión .SHX– Índice para la geometría. Un archivo con extensión .DBF– Base de datos que almacena la información de los atributos.

PostGIS ● ●



Tipo de dato vectorial Puede haber archivos opcionales .PRJ (¡Muy importante! Tiene la información sobre la proyección y demás elementos cartográficos).



.SBN y .SBX (Otros índices espaciales).



.ATX (Índice sobre los atributos no espaciales).



.SHP.XML (Metadatos)

(Véase la carpeta “shapefiles” de qgis_sample_data)

Otros formatos ●

PostGIS

KML (Key Hole Markup Language)/KMZ – Es un formato muy apropiado para usarse en aplicaciones web. – Está estandarizado por el OGC (Open GeoSpatial Consortium). – Popularizado por Google Earth y Google Maps. – KMZ es una versión comprimida de KML.



GML (Geography Markup Language) – Estándar del OGC basado en XML.



GeoJSON – Estándar para datos geográficos basado en JSON.

PostGIS Tipos de datos Ráster. Contiene información tipo imagen. ●





Divide los objetos de la base de datos en una retícula o malla regular de pequeñas celdas (a las que se denomina pixeles) y atribuye un valor numérico a cada celda como representación de su valor temático. Cuanto mayor sea el tamaño de las celdas, menor es la precisión o detalle en la representación del espacio geográfico (resolución). La estructura de los datos es simple y las operaciones de superposición son sencillas.



Formatos: tiff, ecw, jpg, MrSID, etc.



Representación continua.



Desventaja: menor resolución y mayor uso de memoria.

PostGIS ●

Tipo de dato ráster Su gran ventaja es la simplicidad, tanto en términos de administración de datos como de algoritmos de análisis y modelado, incluyendo el álgebra raster (o álgebra de mapas)

PostGIS Instalación de PostgreSQL 9.3, PostGIS 2.1 PGAdmin 1.18 para Ubuntu 12.04-13.10



Agregar el repositorio a sources.list desde una terminal ejecutar las instrucciones: sudo sh -c 'echo "deb http://apt.postgresql.org/pub/r epos/apt/ precise-pgdg main" >> /etc/apt/sources.list' wget --quiet -O http://apt.postgresql.org/pub/r epos/apt/ACCC4CF8.asc | sudo apt-key add sudo apt-get update

PostGIS Instalación de PostgreSQL 9.3, PostGIS 2.1 PGAdmin 1.18 para Ubuntu 12.04-13.10



Instalar (incuyendo el adminpack) sudo apt-get install Postgresql-9.3-postgis pgadmin3 postgresql-contrib



Habilitar el adminpack (usando la consola psql) sudo -u postgres psql CREATE EXTENSION adminpack; \q (salir del psql)

PostGIS Instalación de PostgreSQL 9.3, PostGIS 2.1 PGAdmin 1.18 para Ubuntu 12.04-13.10



Crear otro superusuario para postgreSQL sudo su – postgres createuser -d -E -i -l -P -r -s yourUserName





Capturar el password deseado dos veces exit (cerrar terminal)

PostGIS Instalación sólo de PostGIS 2.1 para Ubuntu 12.04-13.10



Instalación sudo add-apt-repository ppa:ubuntugis/ubuntugisunstable sudo apt-get update sudo apt-get install postgis



Habilitar las bases de datos espaciales CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology;

PostGIS Cambio de contraseña al usuario postgres para ubuntu



Desde una terminal ejecutar sudo su postgres psql



Ejecutar desde la terminal psql alter user postgres with password 'passwd';



Si aparece el mensaje 'ALTER ROLE' la contraseña se ha modificado correctamente

PostGIS Instalación de PostGIS Fedora, RedHat ● ●







Configurar repositorio: Abrir y editar archivos >sudo gedit /etc/yum.repos.d/fedora.repo (en línea 10 insertar exclude=postgresql* ) >sudo gedit /etc/yum.repos.d/fedoraupdates.repo (en línea 9 insertar exclude=postgresql* )









Descargar e instalar PGDG RPM (verificar versión en página http://yum.postgresql.org/rep opackages.php) >curl -O http://yum.postgresql.org/9.2/f edora/fedora-16-i386/pgdgfedora92-9.2-5.noarch.rpm >sudo rpm -ivh pgdgfedora92-9.2-5.noarch.rpm Instalar PostGIS >sudo yum install postgis2_92

PostGIS ¿Qué es PostGis? PostGIS: Es una extensión al sistema de base de datos objeto-relacional PostgreSQL. Permite el uso de objetos GIS(Geographic information systems). PostGIS incluye soporte para índices GiST basados en R-Tree, y funciones básicas para el análisis de objetos GIS. Fue creado por Refractions Research Inc, como un proyecto de investigación de tecnologías de bases de datos espaciales. Ha sido publicado bajo licencia GNU. Con PostGIS podemos usar todos los objetos que aparecen en la especificación OpenGIS como puntos, líneas, polígonos, multilíneas, multipuntos, y colecciones geométricas.

PostGIS Habilitar PostGIS SELECT name, default_version,installed_version FROM pg_available_extensions WHERE name LIKE ’postgis %’ ; postgres=# CREATE EXTENSION postgis; CREATE EXTENSION postgres=# CREATE EXTENSION postgis_topology; CREATE EXTENSION postgres=# CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgres=# CREATE EXTENSION postgis_tiger_geocoder; CREATE EXTENSION

PostGIS Verificar instalación de PostGIS postgres=# Select na.address, na.streetname, na.streettypeabbrev, na.zip FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na; address | streetname | streettypeabbrev | zip ---------+------------+------------------+------1 | Devonshire | Pl | 02109 (1 fila)

PostGIS Objetos GIS Representados en modo texto son: ●



POINT(0 0 0)

→ POINT(X Y Z)

LINESTRING(0 1,3 2,4 5) → LINESTRING(X1 Y1,X2 Y2,...,XN YN)



MULTIPOINT(1 1 ,2 4,4 1)



POLYGON [una o más líneas cerradas simples]

PostGIS Objetos GIS Representados en modo texto son: ●



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

PostGIS Objetos GIS Representados en modo texto son: ●









GEOMETRYCOLLECTION(POINT(2 3 9),LINESTRING((2 3 4,3 4 5)) CIRCULARSTRING(0 0, 1 1, 1 0) COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1)) CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)) MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))

PostGIS Objetos GIS Representados en modo texto son: ●



MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)),((10 10, 14 12, 11 10, 10 10),(11 11, 11.5 11, 11 11.5, 11 11))) Rasters y sus colecciones. PostGIS admite coordenadas en 2D, 3D y 4D.

PostGIS Forma canónica y forma estándar OpenGIS define dos formas de representar los objetos espaciales: 1. (WKT)Well-Know Text es una codificación o sintaxis en formato ASCII diseñada para describir objetos espaciales expresados de forma vectorial. Esta sintaxis es un estándar del OGC (Open Geospatial Consortium) que se usa para especificar los componentes de un SRS y sus respectivos valores. Muchas de las bases de datos espaciales, y en especial PostgreSQL a través de su extensión para el almacenamiento y análisis espacial PostGIS, utiliza esta codificación.

PostGIS Forma canónica y forma estándar 2. (WKB)Well-Know Binary. Esta representación de valores geométricos está definida por la especificación OpenGIS. También está definida en el estándar ISO “SQL/MM Part 3: Spatial”. WKB se utiliza para intercambiar datos como cadenas binarias representadas por valores BLOB que contienen información geométrica WKB. WKB utiliza enteros sin signo de un byte, enteros sin signo de cuatro bytes, y números de ocho bytes de doble precisión (formato IEEE 754). Un byte son ocho bits.

PostGIS Forma canónica y forma estándar

Esta sentencia lee EWKT y regresa HEXEWKB en el proceso de una entrada/salida de canónico (ascii) a estándar (binario). SELECT 'SRID=4;POINT(0 0)'::geometry;

PostGIS SRID Cada instancia espacial tiene un IDentificador de Referencia eSpacial (SRID) dada la especificación OpenGIS. El SRID corresponde a un sistema de referencia espacial basado en el elipsoide concreto usado para la creación de mapas de tierra plana o de tierra redonda. El SRID es requerido cuando insertamos un objeto espacial en la base de datos. Por ejemplo, la función GeometryFromText requiere un numero SRID.

PostGIS Hay dos tablas de meta-datos en la especificación OpenGIS SPATIAL_REF_SYS: Contiene un identificador numérico y una descripción textual del sistema de coordenadas espacial de la base de datos. CREATE TABLE SPATIAL_REF_SYS( SRID INTEGER NOT NULL PRIMARY KEY, AUTH_NAME VARCHAR(256), AUTH_SRID INTEGER, SRTEXT VARCHAR(2048), PROJ4TEXT VARCHAR(2048) )

PostGIS Las columnas de las tablas son la siguientes: SRID: Valor entero que identifica el sistema de referencia espacial. AUTH_NAME: El nombre del estándar para el sistema de referencia. Por ejemplo: EPSG. AUTH_SRID: El identificador según el estándar AUTH_NAME. En el ejemplo anterior es el id según EPSG. SRTEXT: Una Well-Know Text representación para el sistema de referencia espacial. (V. ejemplo en la siguiente lámina) PROJ4TEXT: Proj4 es una librería que usa PostGIS para transformar coordenadas . Esta columna contiene una cadena con definición de las coordenadas de Proj4 para un SRID dado.

PostGIS Contenido de spatial_ref_sys SELECT srid,auth_name, auth_srid, srtext, proj4text FROM spatial_ref_sys LIMIT 100; Hay más de 3000 sistemas de referencia espaciales en el catálogo de la OGC. La columna proj4text tiene la cadena de definición de coordenadas para el SRID particular: +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m

PostGIS http://spatialreference.org/

PostGIS Por ejemplo, el SRS WGS84 se representa en WKT como: PROJCS[“NAD83/UTM Zone 10N”, GEOGCS[“NAD83”,DATUM[“North_American_Datum_1983”, SPHEROID[“GRS 1980”,6378137,298.257222101]], PRIMEM[“Greenwich”,0],UNIT[“degree”,0.0174532925199433]], PROJECTION[“Transverse_Mercator”], PARAMETER[“latitude_of_origin”,0], PARAMETER[“central_meridian”,-123], PARAMETER[“scale_factor”,0.9996], PARAMETER[“false_easting”,500000], PARAMETER[“false_northing”,0], UNIT[“metre”,1]]

PostGIS Para México central tenemos el SRS NAD27: PROJCS["NAD27 / New Mexico Central", GEOGCS["NAD27", DATUM["North_American_Datum_1927", SPHEROID["Clarke 1866",6378206.4,294.9786982138982, AUTHORITY["EPSG","7008"]],AUTHORITY["EPSG","6267"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4267"]],

PostGIS Para México central tenemos el SRS NAD27: UNIT["US survey foot",0.3048006096012192, AUTHORITY["EPSG","9003"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",31], PARAMETER["central_meridian",-106.25], PARAMETER["scale_factor",0.9999], PARAMETER["false_easting",500000], PARAMETER["false_northing",0], AUTHORITY["EPSG","32013"], AXIS["X",EAST],

AXIS["Y",NORTH]]

PostGIS Para México central tenemos el SRS NAD27: INSERT into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext) values ( 932013, 'epsg', 32013, '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs ', 'PROJCS["NAD27 / New Mexico Central",GEOGCS["NAD27",DATUM["North_American_Datum_1927", SPHEROID["Clarke 1866",6378206.4,294.9786982138982,AUTHORITY["EPSG","7008"]], AUTHORITY["EPSG","6267"]],PRIMEM["Greenwich",0,AUTHORITY[" EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY[" EPSG","9122"]],AUTHORITY["EPSG","4267"]],UNIT["US survey foot",0.3048006096012192,AUTHORITY["EPSG","9003"]],PROJECTI ON["Transverse_Mercator"],PARAMETER["latitude_of_origin",31],PAR AMETER["central_meridian",106.25],PARAMETER["scale_factor",0.9999],PARAMETER["false_east ing",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","3 2013"],AXIS["X",EAST],AXIS["Y",NORTH]]');

PostGIS Los códigos EPSG ●





Son códigos que hacen referencia a una gran cantidad de SRS y a otros objetos cartográficos como elipsoides y datums. La European Petroleum Survey Group (EPSG) era una organización científica relacionada con la industria europea del petróleo. Como parte de sus actividades recopiló la lista de objetos cartográficos que luego se convirtió en un estándar. Fue absorbida en 2005 por la International Association of Oil & Gas Producers (OGP). Algunos códigos EPSG de uso común son: 4326. Del SRS WGS84; 3857. Del SRS WGS84/Pseudo Mercator, usado por los principales servicios de mapas en Internet (Google Maps, OpenStreetMap, Bing Maps y otros). Puede encontrarse con el código alterno 900913.

PostGIS La 2a tabla de meta-datos en la especificación OpenGIS es GEOMETRY_COLUMNS: 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 )

PostGIS La 2a tabla de meta-datos en la especificación OpenGIS es F_TABLE_CATALOG,F_TABLE_SCHEMA,F_TABLE_NAME. Distingue totalmente la tabla de características que contiene la columna geométrica. F_GEOMETRY_COLUMN: Nombre de la columna geométrica en la tabla de características. COORD_DIMENSION: Dimensión espacial de la columna(2D o 3D). SRID: Es una clave foránea que referencia SPATIAL_REF_SYS. TYPE: Tipo de objeto espacial. POINT, LINESTRING, POLYGON, MULTYPOINT, GEOMETRYCOLLECTION. Para un tipo heterogéneo debo usar el tipo GEOMETRY.

PostGIS ● ●

Crear una base de datos espacial Desde la terminal como usuario postgres: postgres@Naomi:~$ createdb -E UTF8 -O postgres -U postgres demo



demo=# CREATE EXTENSION postgis;



demo=# CREATE EXTENSION postgis_topology;



demo=# CREATE EXTENSION fuzzystrmatch;



demo=# CREATE EXTENSION postgis_tiger_geocoder;

PostGIS Carga de un script en psql Como usuario postgres ejecutar las siguientes instrucciones: psql -d demo -f /home/sara/Documentos/scripts_1/city.sql psql -d demo -f /home/sara/Documentos/scripts_1/country.sql psql -d demo -f /home/sara/Documentos/scripts_1/river.sql psql -d demo -f /home/sara/Documentos/scripts_1/street.sql psql -d demo -f /home/sara/Documentos/scripts_1/water.sql

PostGIS Creación de una tabla con datos espaciales CREATE TABLE city ( gid int4 , AREA float8, PERIMETER float8, CITIES_ numeric(38,9), CITIES_ID numeric(38,9), CITY_NAME varchar, GMI_ADMIN varchar, ADMIN_NAME varchar, FIPS_CNTRY varchar, CNTRY_NAME varchar, STATUS varchar, POP_RANK int4, POP_CLASS varchar, PORT_ID int4); SELECT AddGeometryColumn( 'public','city','the_geom','-1','POINT',2);

PostGIS Creación de una tabla con datos espaciales CREATE TABLE country( gid serial, area float8, perimeter float8, cntry_ numeric,cntry_id numeric, fips_cntry varchar, gmi_cntry varchar, cntry_name varchar, sovereign varchar, pop_cntry float8, curr_type varchar, curr_code varchar, landlocked varchar, color_map varchar, sovereign_ varchar); SELECT AddGeometryColumn('','country','the_geom','1','MULTIPOLYGON',2);

PostGIS Creación de una tabla con datos espaciales CREATE TABLE river ( gid int4 , NAME varchar, DIAK_CDE varchar, NAME2 varchar, DIAK_CDE2 varchar, TYPE varchar, STATUS varchar, NAVIG varchar); SELECT AddGeometryColumn('public','river','the_geom', '-1','MULTILINESTRING',2);

PostGIS Creación de una tabla con datos espaciales CREATE TABLE street (gid int4 , TYPE varchar); SELECT AddGeometryColumn('public','street','the_geom', '-1','MULTILINESTRING',2);

PostGIS Creación de una tabla con datos espaciales CREATE TABLE water ( gid int4 , AREA float8, PERIMETER float8, AA_HYDROP_ numeric(38,9), NAME varchar, DIAK_CDE varchar, NAME2 varchar, DIAK_CDE2 varchar, TYPE varchar, STATUS varchar, NAVIG varchar); SELECT AddGeometryColumn('public','water','the_geom', '-1','MULTIPOLYGON',2);

PostGIS Inserción en una tabla con datos espaciales INSERT INTO city values ('0','0.000','0.000','20.000000000','53.000000000', 'Bismarck','USA-NDA','North Dakota','US', 'United States','Provincial capital','7', 'Less than 50,000','0', ST_GeometryFromText('POINT (-100.7833025517 46.79999918311)',-1) );

PostGIS

Inserción en una tabla con datos espaciales INSERT INTO "country" (gid,"area","perimeter","cntry_","cntry_id","fips_cntry","gmi_cntry","cntr y_name","sovereign","pop_cntry","curr_type","curr_code","landlocked", "color_map","sovereign_", "the_geom") VALUES ('1','1694.022','2210.580','252.000000000','252.000000000','CA','CAN', 'Canada','Canada','28402320.0000','Dollar','CAD','N','4','Canada',ST_G eometryFromText('MULTIPOLYGON(((-101.004056 48.999968 ,101.004056 51.5941 ,-85.908544 51.5941 ,-85.908544 47.340395 ,86.014725 47.383881 ,-86.051392 47.39888 ,-86.46666 47.567215 ,86.568893 47.60833 ,-86.884445 47.734718 ,-87.201401 47.860275 ,87.341675 47.915543 ,-87.444717... 49.371658 ,-95.152786 49.376656 ,-95.154175 49.366386 ,-95.154449 49.333328 ,95.153961 48.999435 ,-99.835556 49 ,-100.002228 49 ,-100.501953 48.999718 ,-101.004056 48.999968 )))',-1) );

PostGIS Inserción en una tabla con datos espaciales ALTER TABLE ONLY country ADD CONSTRAINT country_pkey PRIMARY KEY (gid); SELECT setval ('country_gid_seq', 1, true); END; (modifica manualmente el valor secuencial country_gid_seq)

PostGIS Inserción en una tabla con datos espaciales INSERT INTO river VALUES('0','Manistee',NULL,NULL,NULL,'stream', 'secondary','nonnavigable', ST_GeometryFromText('MULTILINESTRING ((86.350807 44.252991 ,-86.179604 44.221001 ,86.079018 44.244381 ,-85.914146 44.22971 ,85.908544 44.229205 ))', -1) );

PostGIS Inserción en una tabla con datos espaciales INSERT INTO street VALUES('0','main road', ST_GeometryFromText('MULTILINESTRING ((85.908544 42.224331 ,-86.046608 42.216167 ,86.197639 42.164886 ,-86.320732 42.152447 ))',-1) );

PostGIS Inserción en una tabla con datos espaciales INSERT INTO water VALUES('1','0.730','10.304','283.000000000','Winnipegosis', NULL,NULL,NULL,'lake','main','nonnavigable', ST_GeometryFromText('MULTIPOLYGON(((-99.8019008837 51.59410028077 ,-99.7277768837 51.59410028077 ,-99.7280578837 51.59360928077 ,-99.7375028837 51.58193928077 ,-99.7430568837 51.57749128077 ,-99.7569578837 51.57305128077 ,-99.7727808837 51.57138028077 ,-99.7911068837 51.57249028077 ,-99.7986068837 51.57915928077 ,-99.7997288837 51.58916128077 ,-99.8019008837 51.59410028077 )))',-1) );

PostGIS ALTER TABLE: Agregar constraint de validación de datos espaciales a la tabla ALTER TABLE river ADD CONSTRAINT geometry_valid_check CHECK (ST_IsValid(the_geom)); Modificar el SRID de un objeto en la tabla SELECT UpdateGeometrySRID(’river’,’the_geom’,4326); O su equivalente ALTER TABLE river ALTER COLUMN the_geom TYPE geometry(MULTILINESTRING, 4326) USING ST_SetSRID(the_geom,4326);

PostGIS Consulta de una tabla con datos espaciales SELECT gid, type, GeometryType(the_geom), ST_AsText(the_geom) FROM street; SELECT gid, GeometryType(the_geom), ST_AsText(the_geom) FROM water; SELECT gid, GeometryType(the_geom), ST_NPoints(the_geom) FROM water WHERE ST_NPoints(the_geom)> 25; SELECT gid FROM street WHERE The_geom~=ST_GeometryFromText('LINESTRING(19123 2 243118,191108 243242)',-1);

PostGIS Consulta de una tabla con datos espaciales SELECT ci.gid, ci.city_name, ci.cntry_name, ci.area, ci.pop_rank from city ci; SELECT gid, name, area, perimeter, ST_NumInteriorRings(the_geom) AS numholes FROM water; SELECT gid, area, perimeter, ST_NPoints(the_geom) AS points FROM country; SELECT gid, name, area, perimeter, ST_Area(the_geom), ST_Perimeter(the_geom) FROM water;

PostGIS Consulta de una tabla con datos espaciales SELECT gid, ST_AsText(the_geom), ST_AsEwkt(the_geom), ST_X(the_geom), ST_Y(the_geom) FROM city; Encontrar ciudades cercanas a ríos select c1.city_name,r1.name from city c1, river r1 where st_distance(c1.the_geom,r1.the_geom) > all (select st_distance(c2.the_geom,r2.the_geom) from city c2, river r2 where c1.city_name c2.city_name); Encontrar ciudades que son atravesadas por ríos select r.name,c.cntry_name from river r, country c where st_crosses(r.the_geom,c.the_geom)='T' ;

PostGIS ●

Funciones

Para restricciones espaciales tenemos los siguientes operadores: && Indica cuando la caja que contiene una geometría se superpone a la caja de otra. Es True si se intersectan 2 cajas. ~= Me dice si dos geometrías son idénticas. Como 'POLYGON((0 0,1 1,1 0,0 0))'~=''POLYGON((0 0,1 1,1 0,0 0))' Indica si las cajas circunscritas de dos geometrías = son iguales. Para usar estos operadores debemos cambiar la representación del formato de texto a geometrías usando la función ST_GeometryFromText() Cuando usamos el operador &&, podemos especificar como característica de comparación una BOX3D o una GEOMETRY.

PostGIS ●

Funciones

AddGeometryColumn(varchar,varchar,varchar,integer, varchar,integer) Sintaxis: AddGeometryColumn(,,,,,) Añade una columna geométrica a una tabla existente. SRID debe ser un valor entero que referencia una valor en la tabla SPATIAL_REF_SYS. El tipo debe ser una cadena en mayúsculas que indica el tipo de geometría, como, 'POLYGON' o 'MULTILINESTRING'.

PostGIS ●

Funciones

DropGeometryColumn(varchar,varchar,varchar) Sintaxis:DropGeometryColumn(,,) Elimina una columna geométrica de una tabla espacial. ST_AsBinary(geometry) Devuelve la geometría pasándola a formato well-knownbinary de OGC, usando la codificación endian del servidor donde se ejecuta la base de datos. ST_Dimension(geometry) Devuelve 2 si la geometría es de 2D y 3 si es 3D.



Funciones

PostGIS

ST_Envelope(geometry) Retorna un POLYGON que representa la caja circunscrita de la geometría. ST_GeometryType(geometry) Retorna el tipo de geometría como 'LINESTRING', 'POLYGON','MULTIPOINT',etc. Ejemplo: Una cadena. ST_X(geometry) Encuentra y devuelve la coordenada X del primer punto de geometry. Devuelve NULL si no hay puntos. ST_Y(geometry) Encuentra y devuelve la coordenada Y del primer punto de geometry. Devuelve NULL si no hay puntos.

PostGIS ●

Funciones

ST_Z(geometry) Encuentra y devuelve la coordenada Z del primer punto de geometry. Devuelve NULL si no hay puntos. ST_NumPoints(geometry) Busca y devuelve el numero de puntos del primer linestring en la geometry. Devuelve NULL sino hay linestring. ST_PointN(geometry,integer) Devuelve el punto enésimo en el primer linestring de geometry. Y NULL sino hay ningún linestring.

PostGIS ●

Funciones

ST_ExteriorRing(geometry) Devuelve el circulo exterior del primer polygon en la geometry. Y nulo sino hay polígonos. ST_NumInteriorRings(geometry) Devuelve el número de círculos interiores del primer polígono de la geometría, NULL sino hay ningún polígono. ST_InteriorRingN(geometry,integer) Devuelve el enésimo circulo interior del primer polígono en la geometry. Y NULL sino hay polígonos. ST_IsClosed(geometry) Devuelve cierto si punto final = punto inicial de la geometría.

PostGIS ●

Funciones

ST_NumGeometries(geometry) Si geometry es una GEOMETRYCOLLECTION devuelve el número de geometrías que la componen. En caso contrario devuelve NULL. ST_Distance(geometry,geometry) Devuelve la distancia cartesiana entre dos geometrías en unidades proyectadas. ST_AsText(geometry) Devuelve una representación textual de una geometría. Ejemplo: POLYGON(0 0,0 1,1 1,1 0,0 0)

PostGIS ●

Funciones

ST_SRID(geometry) Devuelve un número entero que es el identificador del sistema de referencia espacial de una geometría. ST_GeometryFromText(varchar,integer) Sintaxis: GeometryFromText(,) convierte un objeto de la representación textual a un objeto geometría. ST_GeomFromText(varchar,integer) Igual a ST_GeometryFromText ST_SetSRID(geometry) Establece el valor del SRID de una geometría al entero dado. Usado en la construcción de cajas circunscritas para consultas.

PostGIS ●

Funciones

ST_EndPoint(geometry) Devuelve un objeto punto que representa el último punto en la geometría. ST_StartPoint(geometry) Devuelve un objeto punto que representa el primer punto en la geometría. ST_Centroid(geometry) Devuelve un punto que representa el centroide de la geometría.

PostGIS ●

Otras funciones AB Devuelve verdadero si la caja que circunscribe a A superpone o esta a la izquierda de la de B. AB Devuelve verdadero si la caja que circunscribe a A esta estrictamente a la izquierda de la de B. A~=B Es equivalente al operador “igual que”. Compara las 2 geometrías característica por característica y si todas coinciden devuelve verdadero. A~B Devuelve verdadero si la caja circunscrita de A esta contenida en la de B.

PostGIS ●

Otras funciones A&&B Si la caja circunscrita de A se superpone a la de B devuelve Verdadero. ST_Area(geometry) Devuelve el área de una geometría si es un POLYGON o MULTIPOLYGON. ST_AsBinary(geometry,'NDR') Devuelve la geometría en el formato binario de OGC, usando codificacion little-endian. Se usa para sacar datos de la bd sin convertirlos a texto.

PostGIS ●

Otras funciones ST_AsBinary(geometry,'XDR') Devuelve la geometría en el formato binario de OGC, usando codificación big-endian. Se usa para sacar información de la base datos sin convertirla a texto. Box2D (geometry)

Box3D(geometry)

Devuelve una BOX3D que representa la máxima extensión de la geometría. ST_distance_spheroid(point,point,spheroid) Devuelve la distancia lineal entre 2 latitud/longitud puntos dados de un spheroid. Ver el apartado length_spheroid().

PostGIS ●

Otras funciones

ST_Collect(geometry) Devuelve un objeto GEOMETRYCOLLECTION a partir de un conjunto de geometrías. Es una función de Agregación en la terminología de PostgreSQL. Ejemplo: SELECT COLLECT(GEOM) FROM GEOTABLE GROUP BY ATTRCOLUMN Devuelve una colección separada para cada valor distinto de ARRTCOLUMN. ST_Extent(geometry) Es una función de Agregación en la terminología de PostgreSQL. Trabaja sobre una lista de datos, de la misma manera que las funciones sum() y mean().

PostGIS ●

Otras funciones

find_srid(varchar,varchar,varchar) Sintaxis: find_srid(,,) Devuelve el SRID de una columna dada buscando esta en la tabla GEOMETRY_COLUMNS. Si la columna geométrica no ha sido añadida con la función AddGeometryColumns() no funcionará. ST_force_collection(geometry) Convierte una geometría en una GEOMETRYCOLLECTION. Esto se hace para simplificar la representación WKB .

PostGIS ●

Otras funciones

ST_Force_2d(geometry) Fuerza la geometría a 2D así la representación de salida tendrá solo las coordenadas X e Y. Se usa porque OGC solo especifica geometrías 2D. ST_Force_3d(geometry) Fuerza la geometría a 3D. Así la todas las representaciones tendrán 3 coordenadas X,Y y Z. ST_Length2d(geometry) Devuelve la longitud 3d de la geometría si es una linestring o multilinestring.

PostGIS ●

Otras funciones

ST_length3d(geometry) Devuelve la longitud 2d de la geometría si es una linestring o multilinestring. ST_length_spheroid(geometry,spheroid) Calcula la longitud de una geometría en un elipsoide. Se usa si las coordenadas de la geometría están en latitud/longitud. El elipsoide es un tipo separado de la base de datos y se puede construir como: SPHEROID [“GRS_1980”,6378137,298,257222101]

ST_max_distance(linestring,linestring) Devuelve la distancia mas larga entre dos linestring.

PostGIS ●

Otras funciones

ST_mem_size(geometry) Retorna el tamaño en bytes de la geometría. ST_npoints(geometry) Devuelve el numero de puntos en la geometría. ST_nrings(geometry) Si la geometría es un polígono o multipolígono devuelve el numero de círculos de la geometría. num_sub_objects(geometry) Devuelve el numero de objetos almacenados en la geometría. Se usa en Multigeometrías y GEOMETRYCOLLECTIONs.

PostGIS ●

Otras funciones

ST_perimeter2d(geometry) Devuelve el perímetro 2d de la geometría, si esa geometría es un polígono o un multipolígono. ST_perimeter3d(geometry) Devuelve el perímetro 3d de la geometría, si esa geometría es un polígono o un multipolígono. ST_point_inside_circle(geometry,float,float,float) Sintaxis:point_inside_circle(,,< circle_center_y>,) Devuelve verdadero si la geometría es un punto y está dentro del círculo.

PostGIS ●

Otras funciones

postgis_version() Devuelve la versión de las funciones postgis instaladas en la bases de datos. ST_summary(geometry) Devuelve un resumen en texto del contenido de esa geometría. ST_transform(geometry,integer) Devuelve una nueva geometría con sus coordenadas transformadas la SRID dada por el parámetro integer. SRID debe existir en la tabla SPATIAL_REF_SYS.

PostGIS ●

Otras funciones

ST_translate(geometry,float8,float8,float8) Traslada la geometría a la nueva localización usando los valores pasados como desplazamientos X,Y,Z. truly_inside(geometryA,geometryB) Devuelve verdadero si alguna parte de B esta dentro de la caja circunscrita de A. ST_xmin(box3d) ST_ymin(box3d) ST_zmin(box3d) Devuelve la mínima coordenada de la caja circunscrita. ST_xmax(box3d) ST_ymax(box3d) ST_zmax(box3d) Devuelve la máxima coordenada de la caja circunscrita.

PostGIS Ejemplos del uso de funciones Para cambiar la proyección que estamos usando a otra transformación: ALTER TABLE street ALTER COLUMN the_geom TYPE geometry(MULTILINESTRING, 3857) USING ST_Transform(ST_SetSRID(the_geom ,4326),3857) ; Consultas SELECT ST_GeomCollFromText('GEOMETRYCOLLECTION( POINT(1 2),LINESTRING(1 2, 3 4))'); SELECT ST_PointFromText('POINT(-71.064544 42.28787)', 4326); (hace una geometría en WKB del SRID)

PostGIS Ejemplos del uso de funciones Mostrar último punto del objeto o geometría SELECT ST_AsText(ST_EndPoint('LINESTRING(1 1, 2 2, 3 3)'::geometry)); Mostrar polígono que “envuelve” una geometría SELECT ST_AsText(ST_Envelope('LINESTRING(0 0, 1 3)'::geometry)); Ver si un objeto encierra una superficie SELECT ST_IsClosed('LINESTRING(0 0, 1 1)'::geometry);

PostGIS Ejemplos del uso de funciones Ver si la geometría es un anillo, cerrada o simple SELECT ST_IsRing(the_geom), ST_IsClosed(the_geom), ST_IsSimple(the_geom) FROM (SELECT 'LINESTRING(0 0, 0 1, 1 0, 1 1, 0 0)'::geometry AS the_geom) AS foo; Mostrar pero si movemos el orden en los puntos SELECT ST_IsRing(the_geom), ST_IsClosed(the_geom), ST_IsSimple(the_geom) FROM (SELECT 'LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)'::geometry AS the_geom) AS foo;

PostGIS Ejemplos del uso de funciones SELECT ST_Y(ST_Centroid(ST_GeomFromEWKT('LINESTRING(1 2 3 4, 1 1 1 1)'))); SELECT ST_Summary(ST_GeomFromText('LINESTRING(0 0, 1 1)')) as geom, ST_Summary(ST_GeogFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))')) geog; SELECT ST_AsText(ST_PointN(ST_GeomFromText(’CIRCULARST RING(1 2, 3 2, 1 2)’),2));

PostGIS Ejemplos del uso de funciones Ver el sumario de un objeto SELECT ST_Summary(ST_GeogFromText(' LINESTRING(0 0 1, 1 1 1)')) As geog_line, ST_Summary(ST_GeomFromText('SRID=4326; POLYGON((0 0 1, 1 1 2, 1 2 3, 1 1 1, 0 0 1)) ')) As geom_poly; SELECT tbl1.column1, tbl2.column1, tbl1.column2 && tbl2.column2 AS overlaps FROM ( VALUES (1, 'LINESTRING(0 0, 3 3)'::geometry), (2, 'LINESTRING(0 1, 0 5)'::geometry)) AS tbl1, ( VALUES (3, 'LINESTRING(1 2, 4 6)'::geometry)) AS tbl2;

QGIS Instalación



Menús y funciones Ejemplos ●



$ sudo apt-addrepository ppa:ubuntugis/ubuntu gis-unstable $ sudo apt-get update $ sudo apt-get install qgis

QGIS Quantum GIS ●









El Quantum GIS es un Sistema de Información Geográfica Open Source. El proyecto inició en mayo de 2002. QGIS corre en la mayoría de plataformas Linux, Windows y OS X QGIS permite el uso de tablas PostgreSQL con soporte para PostGIS. QGIS también soporta formatos vectoriales de la biblioteca OGR (ESRI), MapInfo, SDTS y GML entre otros. En formato ráster soporta la biblioteca GDAL (GeoTiff, ArcInfo Ascii, JPEG, PNG)

QGIS Quantum GIS ●









QGIS permite crear, editar, manejar y exportar mapas vectoriales en distintos formatos. Se puede hacer análisis de datos espaciales con PostgreSQL/PostGIS Se pueden exportar datos a un archivo de mapa para publicarlos en un servidor WEB. Se pueden crear nuevas aplicaciones utilizando Python La base de ejemplo es de Alaska Albers Equal Area (unit feet [unidades en pies]) datos EPSG Code 2964

QGIS Menús y funciones La interfaz del QGIS tiene 6 áreas: 1. Barra de menús (encabezado superior) 2. Barra de herramientas 3. Explorador y capas 4. Mapa 5. Vista general del mapa 6. Barra de estado (parte inferior)

QGIS Menús y funciones 1

2 3

4

6 5

QGIS Menús y funciones Opciones del menú “Proyectos” Abrir: buscar proyectos Guardar, Guardar como (formato Qgis) Guardar como imagen:

QGIS Menús y funciones Opciones del menú “Edición” ●







Deshacer y rehacer Copiar, cortar, pegar Rotar Añadir y borrar objetos

QGIS Menús y funciones Opciones del menú “Ver” Permite acercar y alejar la imagen Tiene varios submenús: ●

Seleccionar



Medir



Ilustraciones



Páneles



Barras de herramientas

QGIS Menús y funciones Seleccionar

Medir Ilustraciones

Páneles

Barras de herramientas

QGIS Menús y funciones Opciones del menú “Capa” Permite abrir y añadir todo tipo de capas: vectoriales, ráster, etc. Duplicar, eliminar y guardar capas. Modificar sus propiedades.

QGIS Menús y funciones Opciones del menú “Configuración”

QGIS Menús y funciones Opciones del menú “Configuración”

QGIS Menús y funciones “Configuración”

QGIS Menús y funciones “Configuración”

QGIS Menús y funciones Opciones del menú “Complementos”

QGIS Menús y funciones Opciones del menú “Complementos”

QGIS Menús y funciones

Análisis

Menú “Vectorial” Investigación

Gestión de datos

Geoproceso Geometría

QGIS Menús y funciones Opciones del menú “Ráster”

Proyecciones: Conversión:

Extracción: Miscelánea:

Análisis:

QGIS Menús y funciones Opciones del menú “Base de datos”

Pestaña de información general de la BD

QGIS Menús y funciones Vista preeliminar de datos

QGIS Menús y funciones Opciones del menú “Procesado”

QGIS Menús y funciones Opciones del menú “Procesado”

En la ventana de comandos se presentan opciones para su ejecución

QGIS Menús y funciones Opciones del menú “Ayuda” Aquí se puede consultar la documentación (manuales y tutoriales)

QGIS Menús y funciones Agregar capa raster Seleccionar el archivo de imagen landcover.img

QGIS Menús y funciones Agregar capas: Especificar el SRC NAD27.

QGIS Menús y funciones Agregar capa vectorial Seleccionar el archivo dando clic en explorar elegir la codificación UTF-8

Menús y funciones Agregar capa vectorial desde archivo.

QGIS

QGIS Menús y funciones Propiedades capa raster

QGIS Menús y funciones Propiedades capa raster

QGIS Menús y funciones Propiedades capa vectorial

QGIS Menús y funciones Propiedades capa vectorial

QGIS Menús y funciones Propiedades capa vectorial

QGIS Menús y funciones Propiedades capa vectorial

QGIS Menús y funciones Propiedades capa vectorial

QGIS Menús y funciones Atributos de una capa vectorial

QGIS Menús y funciones Atributos capa vectorial

QGIS Menús y funciones Guardar mapa

QGIS Conectar una base de datos

Al agregar una capa PostGIS es necesario establecer una conexión a una Base de Datos. Antes de dar OK, pruebe la conexión dando clic en el botón Probar conexión

QGIS Menús y funciones Agregar capas postgreSQL

QGIS Menús y funciones Agregar capas postgreSQL

QGIS Menús y funciones Ejemplo de mapa con capas seleccionadas.

QGIS Menús y funciones Agregar capas postgreSQL

QGIS Menús y funciones Mostrar propiedades de objetos en las capas (Se selecciona primero la capa deseada). Capa: country

QGIS Menús y funciones Mostrar propiedades de objetos en las capas (Se selecciona primero la capa deseada). Capa: city

QGIS Menús y funciones Agregar un filtro (consulta SQL) a las capas. A través de la opción filtro del menú sobre la capa deseada.

QGIS Menús y funciones Agregar un filtro (consulta SQL) a las capas, utilizando la opción de agregar expresión SQL

QGIS Menús y funciones Agregar un filtro (consulta SQL) a las capas. El resultado se muestra identificando con icono amarillo las ciudades que cumplen la condición de la expresión SQL

QGIS Menús y funciones Descargar datos de OpenStreetMap Ir a http://www.openstreetmap.org/export#map=13/47.3668/8.5359 Y dar coordenadas para descargar datos 8.4698,47.336,8.6098,47.3965

QGIS Menús y funciones Descargar datos de OpenStreetMap Usar complemento de QGIS para descargar Y dar coordenadas para descargar datos 8.4698,47.336,8.6098,47.3965