Dados Geográfico PostGIS

Documentos relacionados
TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Operadores topológicos SQL ST_RELATE

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

PostGIS. Lubia Vinhas

Banco de dados geográficos 03/09/2010

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

A U L A 8 C O N S U L T A S U N I N D O D U A S O U M A I S T A B E L A S P A R T E 2

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

Programação em Banco de dados

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo

TRABALHO DE BANCO DE DADOS

Banco de Dados I Introdução SQL

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Introdução ao PostgreSQL

Fundamentos de Banco de Dados Postgre com Sql

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Utilizando o Postgres - comandos SQL para a manipulação de dados

BANCO DE DADOS SQL. Aprendendo a manipular dados. Banco de dados utilizado: PostgreSQL.

Sistema de Controle de Estoque

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Banco de Dados Espaciais

Comandos SQL. Exercícios com o MySQL ou MaridaDB. Prof. Emiliano S. Monteiro

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

BANCO DE DADOS II CONVENIÊNCIA

Disciplina: Banco de Dados Tema: SQL Parte 2

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

A U L A 9 F U N Ç Õ E S A G R E G A D A S E C Á L C U L O S

Treinamento PostgreSQL - Aula 03

Modelagem e consultas espaciais

GIS & CAD Integrando os Processos

drop database escola; CREATE DATABASE escola; USE escola; CREATE TABLE curso ( numcurso int NOT NULL, nome varchar(40), totalcreditos int,

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

CURSO DE SISTEMAS DE INFORMAÇÃO

Tarefa Orientada 17 Scripts

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Banco de Dados. Professora: Luciana Faria

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

SQL (Tópicos) Structured Query Language

Considere as Relações Funcionários (F) e Dependentes (D), com o seguinte esquema simplificado:

Teste Exemplo Revisão da tentativa 1

IMPLEMENTAÇÃO DE BANCO DE DADOS

PSI Linguagem de Definição de dados. Módulo 15

BANCO DE DADOS. Vinícius Pádua

Linguagem de Consulta Estruturada (SQL)

Introdução ao SQL. Aécio Costa

Aula 06 Sistemas Embarcados LT38C

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'pessoas';

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Administração de Banco de Dados

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

AGENDA. Introdução Geometrias Suportadas Estrutura dos Dados Manipulação Indexação Funções Espaciais Exercícios

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)


SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

BCD29008 Banco de dados

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Introdução à linguagem SQL

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

Professor: Claudio Maximiliano Zaina Aluno: Alef Vinicius Cardoso e Silva Prontuário: Aluno: Protuário: BANCO DE DADOS II

Triggers(Gatilhos) Tiago Alves de Oliveira

Prova de Tecnologia da Informação

TUTORIAL DE CRIAÇÃO DE BANCO DE DADOS ESPACIAL

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

BANCO DE DADOS GEOGRÁFICOS SENSORIAMENTO REMOTO INPE

Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Linguagem SQL. Comandos Básicos

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

BCD29008 Banco de dados

Transcrição:

CAP-349 Bancos de Dados Geográficos Aplicação de Rede em Banco de Dados Geográfico PostGIS Fernando Bagnara Mussio fmussio@gmail.com 3 de Setembro de 2010

Objetivos Criar um modelo de rede para armazenar dados de arruamento; Utilizar o banco de dados PostgreSQL com extensão PostGIS para armazenar os dados, fazer a importação de arquivos ESRI Shapefile e processar geometrias; Criar uma aplicação exemplo capaz de recuperar e visualizar os dados do modelo de dados criado;

Importação do arquivo ESRI Shapefile

Seleção do mapa vetorizado

Importação do arquivo ESRI Shapefile

Importação do arquivo ESRI Shapefile

Eliminar GEOMETRYCOLLECTION As ruas do ShapeFile tem geometria descrita em MULTILINESTRING SELECT ST_AsText(the_geom) FROM alvorada; Exemplo de resultado: "MULTILINESTRING((-45.9146741183431-23.2197785460771,- 45.9148251721218-23.2200902639533)) Muitas operações topológicas do PostGIS não suportam GEOMETRYCOLLECTION. A função ST_Dump quebra uma GEOMETRYCOLLECTION em GEOMETRY SELECT ST_AsText((ST_Dump(the_geom)).geom) FROM alvorada; Exemplo de resultado: "LINESTRING(-45.9146741183431-23.2197785460771,- 45.9148251721218-23.2200902639533)"

Mais Pré-Processamento Por quê isto foi necessário? UPDATE SET alvorada dumped_geom = ST_GeometryFromText( ); ST_AsText(dumped_geom)

Diagrama do Modelo de Dados NODE ID (PK) NODEGEOM EDGE ID (PK) EDGEGEOM ID_FROM (FK) ID_TO (FK) EDGE_DATA ID (PK) EDGE_ID (FK) NAME LEN NUM_IE NUM_FE NUM_ID NUM_FD NODE EDGE NODE

Criar Tabela de NÓS Contém a localização dos cruzamentos de ruas. CREATE TABLE NODE ( ); ID SERIAL PRIMARY KEY, NODEGEOM GEOMETRY

Criar Tabela de ARESTAS Contém a geometria e estrutura das ruas. CREATE TABLE EDGE ( ); ID SERIAL PRIMARY KEY, EDGEGEOM GEOMETRY, FROM_ID INT, TO_ID INT

Criar Tabela de Dados da ARESTA Contém dados adicionais das ruas. CREATE TABLE EDGE_DATA ( ); ID SERIAL PRIMARY KEY, EDGE_ID INT, NAME VARCHAR(60), NUM_IE INT, NUM_FE INT, NUM_ID INT, NUM_FD INT, LEN NUMERIC

Processamento dos NÓS Usar as funções ST_StartPoint e ST_EndPoint para obter uma lista dos pontos que sejam início/fim de ruas e avenidas, estes pontos serão NÓS do grafo. SELECT DISTINCT ST_StartPoint(the_geom) AS startpoint FROM alvorada; SELECT ST_EndPoint(the_geom) AS endpoint FROM alvorada WHERE ST_EndPoint(the_geom) NOT IN ( SELECT DISTINCT ST_StartPoint(the_geom) AS startpoint FROM alvorada );

Processamento das ARESTAS Para cada NÓ de início distinto encontrado (startpoint), buscar as arestas que se conectam àquele determinado NÓ e o NÓ da outra extremidade; SELECT dumped_geom AS aresta, ST_EndPoint(dumped_geom) AS endpoint, name, num_ie, num_fe, num_id, num fd FROM alvorada WHERE ST_Equals([startpoint]::Geometry, ST_StartPoint(dumped_geom) ); [startpoint] é o WKT de um ponto, poderia ser, por exemplo POINT(-45.9118829606849-23.2229230218845)

Processamento das ARESTAS Buscar o ID do nó endpoint na tabela NODE, se não existir, criar o nó e guardar o valor do ID para referenciá-lo no campo NODE_TO da tabela EDGE. SELECT ID AS id_endpoint FROM NODE WHERE ST_Equals(NODEGEOM, [endpoint]::geometry); INSERT INTO NODE (NODEGEOM) VALUES ( [endpoint]::geometry); (depois repetir o SELECT para buscar o ID)

Processamento das ARESTAS Inserir os dados da aresta encontrada dos campos da tabela EDGE. INSERT INTO EDGE (EDGEGEOM, FROM_ID, TO_ID) VALUES ( [aresta]::geometry, [startpoint_id], [endpoint_id]); (depois fazer um SELECT para buscar o ID)

Processamento das ARESTAS Inserir os dados da aresta encontrada dos campos da tabela EDGE_DATA. INSERT INTO EDGE_DATA VALUES (EDGE_ID, NAME, NUM_IE, NUM_FE, NUM_ID, NUM_FD, LEN) ([edge_id], [num_ie], [num_fe], [num_id], [num_fd], [len]);

Recuperação e Visualização da Rede http://www.prefuse.org/

Exemplo de Aplicação Dados dois endereços, determinar um retângulo envolvente que contenha os dois. 1 2 Fazer uma busca pelas ARESTAS e NÓS que estejam contidos na região de interesse

Exemplo de Aplicação Endereço: CAMPOS ELISEOS, 717 SELECT ST_AsText(EDGEGEOM) AS address FROM EDGE JOIN EDGE_DATA ON EDGE.ID = EDGE_DATA.EDGE_ID WHERE EDGE_DATA.NAME = 'CAMPOS ELISEOS' AND ( ); ((NUM_IE < 717) AND (NUM_FE > 717)) OR ((NUM_ID < 717) AND (NUM_FD > 717))

Exemplo de Aplicação Tendo buscado a geometria dos dois endereços, fazer a busca pelos elementos (NÓS e ARESTAS) contidos no retângulo envolvente das duas geometrias. SELECT * FROM NODE WHERE ST_Contains( ST_Envelope(ST_Union( ST_GeomFromText('LINESTRING(-45.91.21094)'), ST_GeomFromText('LINESTRING(-45.912.3715)') )), NODEGEOM); (fazer o mesmo para EDGE)

Exemplo de Aplicação Reconstruir o grafo parcial a partir dos elementos encontrados. Buscar pelo menor caminho entre dois endereços no grafo, utilizando por exemplo o algorítmo de Dijkstra.

Referências High Performance Multimodal Networks Erik G. Hoel, Wee-Liang Heng, Dale Honeycutt REDES EM SISTEMAS DE INFORMAÇÃO GEOGRÁFICA, Gilberto Ribeiro de Queiroz PostGIS Manual1.5.1