Você está na página 1de 37

PostGIS Conhecendo o

Elefante Geoespacial
Rodrigo Hjort
Servio Federal de Proc. Dados
Ignacio Talavera
Intendencia de Montevideo

O que um banco de dados


geoespacial?

Um banco de dados possui...


Tipos de dados
Texto, nmero, data/hora
ndices
B-tree, hash
Funes
length(), now()

Um banco de dados espacial...


armazena e manipula objetos
espaciais como qualquer outro
objeto do banco de dados

Banco de dados espacial...


Tipos de dados espaciais
geometry, geography
ndices espaciais
r-tree, quad-tree, kd-tree
Funes espaciais
ST_Length(), ST_X()

Evoluo das arquiteturas GIS

A hierarquia da geometria

Os ndices espaciais

As funes espaciais
Anlise
ST_Function(geometry) algo
Construo
ST_Function(algo) geometry
Criao
ST_Function(geometry) geometry

O que o PostGIS?
PostGIS "spatially enables"
the PostgreSQL server,
allowing it to be used as a
backend spatial database for
geographic information
systems (GIS)

Por que no usar Shapefiles?

Jamais! Banco de dados melhor!


Transaes
Consultas ad hoc
Modelos de dados complexos
Linguagem SQL

Web Mapping
GeoServer servidor
empresarial,
implementa los
protocolos WMS
WFS,WFS-T.

Web Mapping

Data

Client
Web
Client

GeoServer

Data
Data

Web Mapping

Client

Data

WFS
GeoServer

Client

WMS

Data
Data

WMS

Mo na massa!

1. Criar banco com suporte a GIS

CREATE DATABASE consegi


TEMPLATE template_postgis;

2. Importar o shapefile de
municpios do Par
shp2pgsql -s 4674 -d -g geom
-D -W LATIN1 15MUE250GC_SIR
mun > mun.sql
psql consegi < mun.sql

3. Criar a tabela de municpios

CREATE TABLE municipios (


codigo int not null primary key,
nome varchar(50) not null,
area geometry(MULTIPOLYGON, 4326)
);

4. Popular a nova tabela

INSERT INTO municipios


SELECT cd_geocodm::int, nm_municip,
ST_Force_2D(ST_Transform(geom, 4326))
FROM mun;
DROP TABLE mun;

5. Criar coluna contendo o centro


dos municpios
ALTER TABLE municipios
ADD centro geometry(point, 4326);
UPDATE municipios
SET centro = ST_Centroid(area);

6. Importar o shapefile de
mamferos
shp2pgsql -s 4326 -d -g geom
-D -W LATIN1 mamiferos
mamiferos > mam.sql
psql consegi < mam.sql

7. Importar os dados do Censo


2010 para o Par

psql consegi -f censo-pa.sql

8. Utilizando GeoServer

Configurar GeoServer
Data Store PostGIS

Publicar layers WMS

Publicar layer groups

Exerccios

1. Quais so e qual a rea dos 5 mais


extensos municpios do Estado?
Dica: ST_Area()

2. Qual a rea e o permetro total do


Estado do Par?
Dica: ST_Collect(), ST_Perimeter()

3. Quais so os 3 municpios mais


setentrionais (ao norte) do Estado?
Dica: ST_Y()

4. Qual a distncia de cada municpio


capital do Estado?
Dica: ST_Distance()

5. Quais so os municpios que fazem


fronteira com Altamira?
Dica: ST_Intersects()

6. Quais so os municpios a um raio de


at 50km do centro de Marituba?
Dica: ST_DWithin()

7. Quais so os mamferos e os
municpios em que eles se encontram
no Par?
Dica: ST_Contains()

8. Qual a populao total de Itupiranga


e municpios limtrofes?
Dica: ST_Intersects()

9. Quais so os municpios a at 80km


de Ananindeua com maior populao
feminina?
Dica: ST_DWithin()

Desafios

1. Exibir somente os municpios com


mais de 200 mil habitantes.

2. Exibir os municpios vizinhos a


Santarm cuja populao rural seja
maior que a urbana.