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

Documentos relacionados
BANCO DE DADOS GEOGRÁFICOS E WEBMAPPING. Prof. Angelo Augusto Frozza, M.Sc.

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

PostGIS. Lubia Vinhas

SIG SIG. WKT Postgis (SQL) Alisson Fernando Coelho do Carmo

TUTORIAL DE CRIAÇÃO DE BANCO DE DADOS ESPACIAL

Operadores topológicos SQL ST_RELATE

UNIVERSIDADE FEDERAL FLUMINENSE DIOGO DE SANTANA CANDIDO MANIPULAÇÃO DE OPERADORES ESPACIAIS

Bancos de Dados Geográficos Projeto Físico de BDG. Clodoveu Davis. Clodoveu Davis

Sistemas de Informação Geográfica Prof. Tiago Eugenio de Melo, MSc.

Sistemas de Informação Geográfica Prof. Tiago Eugenio de Melo, MSc.

Mapserver e Bancos de Dados

GeoDjango. Christiano Anderson

Bancos de Dados Geográficos Armazenamento Extensões Espaciais ao SQL - PostGIS. Clodoveu Davis DCC/UFMG Escola de Verão DCC/UFMG

Dados Geográfico PostGIS

Palavras-chave: PostGIS. PostgreSQL. Webmapping. GeoExt. OpenLayers. GeoServer.

PostGIS. SGBD espacial Extensões espaciais para SQL. Clodoveu Davis

Spatial Database Systems. Karine Reis Ferreira

Sistemas de Informação Geográfica e Banco de Dados Geográficos

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

Modelagem e consultas espaciais

Banco de dados geográficos 03/09/2010

Banco de Dados Geográficos

BANCO DE DADOS GEOGRÁFICOS SENSORIAMENTO REMOTO INPE

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

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

SFS Simple Feature SQL

MANIPULAÇÃO DE DADOS GEOGRÁFICOS EM BANCOS DE DADOS NoSQL - resultados preliminares

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

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

SISTEMAS DE INFORMAÇÃO

de Dados Geográficos Lubia Vinhas São José dos Campos, 21 de junho de 2012

Projeto Físico de BDG

C A P I T U L O 10 F U N Ç Õ E S I N T E R N A S P H P P A R A B A N C O D E D A D O S

Rápida revisão do Modelo Relacional

GIS & CAD Integrando os Processos

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

STRUCTURED QUERY LANGUAGE (SQL)

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

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


MIRTH CRIANDO MENSAGENS HL7 A PARTIR DE UMA BASE DE DADOS

Introdução ao PostgreSQL

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

Bancos de Dados Geográficos

Banco de Dados Espaciais

Spatial Database Systems. Karine Reis Ferreira

Introdução ao PostgreSQL

Guia de apoio à utilização. de serviços WFS, através do software GeoMedia

Banco de Dados. Professora: Luciana Faria

BCD29008 Banco de dados

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Documentos 68. ISSN Maio, 2008

SQL. Prof. Roger Cristhian Gomes

BANCO DE DADOS EM SISTEMAS DE INFORMAÇÕES GEOGRÁFICAS

MANIPULAÇÃO DE DADOS GEOGRÁFICOS UTILIZANDO A BIBLIOTECA GEOTOOLS

BANCO DE DADOS PARA WEB

CONTEÚDO. Geoprocessamento COTIC DIRAF

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

Nesta parte da aula estamos interessados na representação vetorial dos dados.

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Como criar um banco de dados usando o mysql

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Sistemas de Informação Geográfica Prof. Tiago Eugenio de Melo, MSc.

Tutorial 4. Para se obter estas estatísticas é necessário primeiramente atualizar as Tabelas de Atributos de cada Dataframe.

Tabelas. Banco de Dados I MySQL

Banco de Dados I Introdução SQL

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

APLICAÇÃO DA TECNOLOGIA DE BANCO DE DADOS GEOGRÁFICO NO MAPEAMENTO DE PROJETOS DE INCLUSÃO DIGITAL: CASOS BRASILEIROS

SQL E MYSQL - COMANDOS BÁSICOS

Spectrum Miner. Versão 8.0. Guia de administração para a integração do Portrait Dialogue

Operações elementares. Operações elementares. Topologia do espaço

Análise de transcriptoma usando a base de dados Kegg Orthology

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

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 1 Introdução e Consultas Basicas

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

Roteiro de apoio Aula 1 - Introdução ao ArcGIS

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

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

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

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

Operações de Vizinhança Proximidade Buffer zone

Monitoria GDI. Aula Prática. OR (Aula 1)

SIG: Sistemas de Informações Geográficas. Adaptado de Gilberto Câmara

Configurar um um início de uma sessão do botão para agentes do telefone IP

CONHECIMENTOS ESPECÍFICOS» GEOPROCESSAMENTO (PERFIL 2) «

Otimização de um banco de dados geográficos utilizando PostGIS

Bancos (Bases) de Dados

Curso PHP Aula 08. Bruno Falcão

Laboratório 14 - Usando o SSIS Import e Export Wizard

GBC043 Sistemas de Banco de Dados

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

PostgreSQL Desenvolvedor

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

PostgreSQL 8.0. Diogo Biazus

Bases de Dados. Lab 1: Introdução ao ambiente

Triggers(Gatilhos) Tiago Alves de Oliveira

Fundamentos de Banco de Dados Postgre com Sql

Transcrição:

Introdução ao

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

Introdução Desenvolvido pela Research Refractions, em 2001; Adiciona suporte espacial ao banco PostgreSQL; Segue os padrões de interoperabilidade da OGC.

Introdução Por padrão o PostgreSQL roda na porta 5432; Uma instância pode contêr diversos bancos, com diversos schemas e tabelas.

Introdução

Introdução

Instalação PostgreSQL PostGIS

Instalação do PostgreSQL

Instalação do PostGIS

Instalação Diretórios criados durante a instalação: \bin - Executáveis \include Arquivos para compilação \lib - Bibliotecas \share - Extensões

Geometrias Suportadas O PostGIS suporta os seguintes tipos de Geometrias especificados pela OGC: Point; Linestring; Polygon; Multipoint; Multilinestring; Multipolygon; GeometryCollection.

Geometrias Suportadas

Estrutura dos Dados A estrutura dos dados no PostGIS é definida pela padrão OGC SFS (Simple Feature Specification). GEOMETRY POINT LINESTRING POLYGON GEOMETRYCOLLECTION MULTIPOINT MULTILINESTRING MULTIPOLYGON

Estrutura dos Dados Duas formas padrões para manipular Objetos Geográficos Well-Known Text (WKT) e Well-Known Binary (WKB) Guardam informações sobre tipo e coordenadas do Objeto Geográfico

Estrutura dos Dados Exemplos: POINT(0 0) LINESTRING(0 0,1 1,1 2) POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) 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((2 3,3 4)))

Estrutura dos Dados SRID (Spatial Referencing System Identifier) Todo Objeto Geográfico deve ter um SRID para ser inserido no banco Por exemplo: Considerando a interface GeomFromText GeomFromText (text WKT, SRID); Pode-se inserir o seguinte Objeto Geográfico INSERT INTO SpatialTable (THE_GEOM, THE_NAME) VALUES (GeomFromText('POINT(-126.4 45.32)', 4326), Um Lugar');

Estrutura dos Dados Para assegurar a consistência dos dados, foram criadas as seguintes tabelas: GEOMETRY_COLUMNS SPATIAL_REF_SYS

Estrutura dos Dados Na tabela Geometry_Columns consistem as informações das tabelas espaciais, da seguinte forma: F_TABLE_CATALOG; F_TABLE_SCHEMA; F_TABLE_NAME; F_GEOMETRY_COLUMN; COORD_DIMENSION; SRID; TYPE;

Estrutura dos Dados Na tabela Spatial_Ref_Sys é onde são carregadas as informações dos sistemas de coordenadas utilizados pelo banco: SRID; AUTH_NAME; AUTH_SRID; SRTEXT; PROJ4TEXT;

Manipulação dos Dados Conecte no banco: Usuário: postgres Senha: postgres Crie uma nova base de dados: Selecione template_postgis como template Verifique se as tabelas espaciais foram criadas

2.3 Spatially Enable PostgreSQL

Manipulação dos Dados Caso o pgsql não esteja instalado, é necessário instalá-lo: createlang plpgsql d postgis U postgres psql -f lwpostgis.sql d postgis U postgres psql -f spatial_ref_sys.sql d postgis U postgres

Manipulação dos Dados Criando tabelas com dados espaciais: CREATE TABLE distritos ( cod SERIAL, sigla VARCHAR(10), denominacao VARCHAR(50), PRIMARY KEY (cod) ); SELECT AddGeometryColumn('public', 'distritos', 'spatial_data', 4326, 'POLYGON', 2);

Manipulação dos Dados Inserindo dados espaciais: INSERT INTO distritos (sigla, denominacao, spatial_data) VALUES('CTR', 'Centro', GeometryFromText('Polygon((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 5 6, 6 6, 6 5, 5 5))', 4326));

Manipulação dos Dados Recuperando dados espaciais: SELECT sigla, denominacao, spatial_data FROM distritos; SELECT sigla, denominacao, ASTEXT(spatial_data) FROM distritos;

Manipulação dos Dados Importando shapefiles para o PostGIS Shapefile 3 arquivos:.dbf: Atributos.shp: Geometria.shx: Índice Um shapefile = Uma tabela no banco

Manipulação dos Dados shp2pgsql [opts] -D = Use formato Dump -i = NÃo use bigint para númericos -s <#> = Use o SRID especificado -W = Use o charset especificado -a = Use em modo append -I = Criar indíce espacial

Manipulação dos Dados shp2pgsql [opts] shapefile tablename shp2pgsql i s 3005 bc_pubs.shp bc_pubs > bc_pubs.sql

Manipulação dos Dados shp2pgsql i -I -s 3005 bc_hospitals.shp bc_hospitals > bc_hospitals.sql shp2pgsql -i -I -s 3005 bc_municipality.shp bc_municipality > bc_municipality.sql shp2pgsql -i -I -s 3005 bc_voting_areas.shp bc_voting_areas > bc_voting.sql shp2pgsql i -I -s 3005 bc_pubs.shp bc_pubs > bc_pubs.sql shp2pgsql i -I -s 3005 bc_roads.shp bc_roads > bc_roads.sql

psql d postgis U postgres f bc_data.sql Manipulação dos Dados

Manipulação dos Dados Visualizando os dados no udig

Manipulação dos Dados Visualizando os dados no udig

Manipulação dos Dados Visualizando os dados no udig

Manipulação dos Dados Exportando tabelas do PostGIS para Shapefile pgsql2shp [<opções>] <nome do banco> <nome da tabela> <nome do banco> nome do banco de origem <nome da tabela> nome da tabela geográfica

Manipulação dos Dados Exportando tabelas do PostGIS para Shapefile [<opções>] opções de configuração -d: define o arquivo dump para 3D (padrão = 2D) -f <filename>: nome do shape file (padrão = nome da tabela). -h <host>: host onde está o banco de dados (padrão =localhost). -p <port>: porta de conexão (padrão = 5432). -P <password>: especifica a senha. -u <user>: especifica o usuário. -g <geometry_column> especifica a colunageo a ser exportada.

Manipulação dos Dados Exportando tabelas do PostGIS para Shapefile Exemplos: pgsql2shp -u postgres -P postgres postgis bc_hospitals pgsql2shp -f Hospitals -u postgres -P postgres postgis bc_hospitals pgsql2shp -f Hospitals -h localhost -p 5432 -u postgres -P postgres postgis bc_hospitals

Manipulação dos Dados No PostGIS a função ST_IsValid() é utilizada para verificar se a geometria está de acordo com a especificação SFS Válido Inválido

Manipulação dos Dados Como resolver o problema? Usando um truque veja:

Indexação É a ferramenta que possibilita que o banco de dados trabalhe com grandes volumes de informação de uma forma mais eficiente; O PostgreSQL utiliza 3 tipos de índices: B-Tree R-Tree GiST

Indexação O GiST é utilizado para acelerar buscas em estruturas irregulares; É uma boa prática, sempre após a criação de um indíce executar o seguinte comando:

Funções Espaciais ST_Area: Retorna a área de um polígono

Funções Espaciais ST_Contains: Retorna verdadeiro se A estiver contido em B (v) (f)

Funções Espaciais ST_Touches: Retorna verdadeiro se A apenas tocar B. (v) (v)

Funções Espaciais ST_Intersects: Retorna verdadeiro se houver algum tipo de intersecção

Funções Espaciais ST_Intersection: Retorna uma geometria que representa o conjunto de pontos de intersecção das geometrias.

Funções Espaciais ST_Transform: Retorna uma nova geometria com suas coordenadas transformadas para o sistema de referência espacial referenciado pelo parâmetro.

Funções Espaciais ST_Within: Retorna verdadeiro se a geometria A estiver completamente dentro da geometria B.

Funções Espaciais ST_DWithin: Retorna verdadeiro se as geometrias estão dentro da distância especificada.

Funções Espaciais ST_Centroid: Retorna o ponto central da geometria;

Funções Espaciais ST_Buffer: Cria um buffer, os cálculos são baseados no Sistema de Coordenadas.

Funções Espaciais ST_Union: Retorna uma geometria com a união das geometrias;

Funções Espaciais ST_Difference: Retorna geometria de A que não intersecta com B.

Operadores Espaciais && : Retorna TRUE se houver sobreposição;

Operadores Espaciais ~ : Retorna TRUE se as geometrias estiver completamente contida na outra;

Operadores Espaciais ~= : Retorna TRUE se as geometrias foram idênticas;

Exercícios 1) Qual é o comprimento total das estradas na província do BC em km? 2) Qual o tamanho da cidade de Prince George, em hectares? 3) Qual o maior município da Cidade? 4) Qual o perímetro da cidade de Vancouver? 5) Qual é a área total das áreas de votação?

Exercícios 1) Qual é o comprimento total das estradas na província do BC em km? SELECT Sum( ST_Length( the_geom ) ) / 1000 AS km_roads FROM bc_roads;

Exercícios 2) Qual o tamanho da cidade de Prince George, em hectares? SELECT ST_Area(the_geom)/10000 AS hectares FROM bc_municipality WHERE name = PRINCE GEORGE ;

Exercícios 3) Qual o maior município da Cidade? SELECT name, ST_Area(the_geom)/10000 AS hectares FROM bc_municipality ORDER BY hectares DESC LIMIT 1;

Exercícios 4) Qual o perímetro da cidade de Vancouver? SELECT ST_Perimeter(the_geom) FROM bc_municipality WHERE name = 'VANCOUVER';

Exercícios 5) Qual é a área total das áreas de votação? SELECT Sum(ST_Area(the_geom))/10000 AS hectares FROM bc_voting_areas;

Exercícios 1) Criar views para as tabelas importadas via shapefile, setando o SRID para 4326 CREATE OR REPLACE VIEW vbc_hospitals as ( select gid, id, authority, name, st_transform(the_geom,4326) as the_geom from bc_hospitals );

Exercícios 2) Inserir as informações em Geometry_columns INSERT INTO geometry_columns ( f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) VALUES ('','public','vbc_hospitals','the_geom',2,4326,'point');

Junções Espaciais Junções normais usam uma chave comum SELECT a.var1, b.var2 FROM a, b WHERE a.id = b.id Junções espaciais utilizam a chave universal de localização SELECT a.var1, b.var2 FROM a, b WHERE ST_Intersects(a.geom, b.geom)

Junções Espaciais Relacione os bares que estão a 250 metros de um hospital SELECT bc_hospitals.name, bc_pubs.name FROM bc_hospitals, bc_pubs WHERE ST_DWithin( bc_hospitals.the_geom, bc_pubs.the_geom, 250 );

Junções Espaciais Crie uma nova tabela com todas as área de votação de Prince George

Junções Espaciais CREATE TABLE pg_voting_areas AS SELECT ST_Intersection(v.the_geom, m.the_geom) AS intersection_geom, ST_Area(v.the_geom) AS va_area, v.*, m.name FROM bc_voting_areas v, bc_municipality m WHERE ST_Intersects(v.the_geom, m.the_geom) AND m.name = PRINCE GEORGE ;

Projeção de Coordenadas Veja o SRID utilizando a função ST_SRID SELECT ST_SRID(the_geom) FROM bc_roads LIMIT 1; O que é 3005? SELECT srtext FROM spatial_ref_sys WHERE srid = 3005; Ah, é BC Albers

Projeção de Coordenadas PROJCS[ NAD83 / BC Albers", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101]], PRIMEM["Greenwich",0], UNIT["degree",0.01745329251994328], AUTHORITY["EPSG","4269"]], PROJECTION["Albers_Conic_Equal_Area"], PARAMETER["latitude_of_center",45], PARAMETER["longitude_of_center",-126], PARAMETER["standard_parallel_1",50], PARAMETER["standard_parallel_2",58.5], PARAMETER["false_easting",1000000], PARAMETER["false_northing",0], UNIT["metre",1], AUTHORITY["EPSG","3005"]]

Projeção de Coordenadas SELECT proj4text FROM spatial_ref_sys WHERE srid = 3005; +proj=aea +ellps=grs80 +datum=nad83 +lat_0=45.0 +lon_0=-126.0 +lat_1=50.0 +lat_2=58.5 +x_0=1000000 +y_0=0 PROJ4 é a biblioteca de reprojeção usada pelo PostGIS

Projeção de Coordenadas Para usar a reprojeção de coordenadas utilizase a função ST_Transform() SELECT ST_AsText(the_geom) FROM bc_roads LIMIT 1; SELECT ST_AsText( ST_Transform(the_geom, 4326) ) FROM bc_roads LIMIT 1;

Projeção de Coordenadas MULTILINESTRING(( 1004687.04355194 594291.053764096, 1004729.74799931 594258.821943696)) ST_Transform(the_geom) MULTILINESTRING(( -125.9341 50.3640700000001, -125.9335 50.36378))

Exercícios 1) Qual o tamanho em km de Douglas St em Victoria? 2) Quais os dois bares com mais adeptos do Partido Verde (campo green) no prazo de 500 metros deles? 3) Qual é a latitude do hospital mais a sul, usando o SRID 4326? 4) Quantos eleitores NDP vivem a 50 metros de 'Simcoe St' em Vitória? 5) Listar todas as ruas dentro de Victoria

Exercícios 1) Qual o tamanho em km de Douglas St em Victoria? SELECT Sum(ST_Length(r.the_geom))/1000 AS kilometers FROM bc_roads r, bc_municipality m WHERE ST_Contains(m.the_geom, r.the_geom) AND r.name = 'Douglas St' AND m.name = 'VICTORIA';

Exercícios 2) Quais os dois bares com mais adeptos do Partido Verde no prazo de 500 metros deles? SELECT p.name, p.city, Sum(v.green) AS greens FROM bc_pubs p, bc_voting_areas v WHERE ST_DWithin(v.the_geom, p.the_geom, 500) GROUP BY p.name, p.city ORDER BY greens DESC LIMIT 2;

Exercícios 3) Qual é a latitude do hospital mais a sul, usando o SRID 4326? SELECT ST_Y(ST_Transform(the_geom,4326)) AS latitude FROM bc_hospitals ORDER BY latitude ASC LIMIT 1;

Exercícios 4) Quantos eleitores NDP vivem a 50 metros de 'Simcoe St' em Vitória? SELECT Sum(v.ndp) AS ndp FROM bc_voting_areas v, bc_municipality m, bc_roads r WHERE ST_DWithin(r.the_geom, v.the_geom, 50) AND ST_Contains(m.the_geom, r.the_geom) AND r.name = 'Simcoe St' AND m.name = 'VICTORIA';

Exercícios 5) Listar todas as ruas dentro de Victoria SELECT r.gid, r.the_geom FROM bc_roads r, bc_municipality m WHERE ST_Contains(m.the_geom, r.the_geom) AND m.name = VICTORIA

Obrigado! Fernando Quadro contato@fernandoquadro.com.br