Tutorial_PostGis
Transcript of Tutorial_PostGis
![Page 1: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/1.jpg)
![Page 2: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/2.jpg)
Neste tutorial será construído uma base de dados em PostGIS, de acordo com o trabalho realizado em
OSM.
Pretende-se deste modo explicar a metodologia e procedimentos realizados, desde a vectorização na
ferramenta de edição JOSM, do OpenStreetMap, até à introdução dos dados em PostGIS.
Para a implementação do projecto numa base de dados será necessário recorrer a vários softwares:
� Ferramenta de edição JOSM;
� Quantum GIS;
� PostGIS Shapefile and DBF Loader;
� pgAdmin III
![Page 3: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/3.jpg)
1º Abrir um projecto no Quantum Gis:
![Page 4: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/4.jpg)
2º Adicionar o ficheiro OSM da área de trabalho:
- Através do comando Load OSM from file escolho o directório do ficheiro (6)
![Page 5: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/5.jpg)
(6) e obtenho, deste modo, a área de trabalho em OSN (Area_PVL) no Qgis:
![Page 6: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/6.jpg)
1º Selecciono o layer pretendido, Exemplo: Area_PVL points e com o botão do lado direito do rato,
escolho o campo Save as shapefile�.
Na nova janela atribuo um nome ao ficheiro e faço gravar6
![Page 7: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/7.jpg)
2º Após a ordem para fazer guardar, abrir-se-á uma nova janela onde devo definir o sistema de
coordenadas que quero atribuir à shapefile. Por defeito, estava em WGS 84 (coordenadas
geográficas) e no qual irei transformar para WGS 84/UTM 29N - EPSG: 32629 (coordenadas
projectadas):
![Page 8: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/8.jpg)
3º Realizar os mesmos procedimentos para os restantes layers de modo a obter três shapefiles do tipo
pontual (pontos); linear (vias) e poligonal (edificios):
![Page 9: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/9.jpg)
1º Abrir o pgAdmin III e conectar o servidor localgeobox:
![Page 10: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/10.jpg)
2º Criar uma nova base de dados, designada de “planhoso”:
![Page 11: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/11.jpg)
2º Criar uma nova base de dados, designada de “planhoso”:
![Page 12: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/12.jpg)
3º Depois de actualizar as Bases de Dados existentes, podemos verificar a existência da base de dados
anteriormente criada: “planhoso” e que esta è constituída por duas tabelas (a referência espacial e a
geometria) adicionadas por defeito.
![Page 13: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/13.jpg)
Após a concepção da base de dados, pretende-se adicionar a informação contida nos ficheiros shp,
exportados na etapa anterior para o nosso projecto, de modo acrescentar mais 3 tabelas à 2 pré-
existentes.
Para tal, recorre-se ao
PostGIS Shapefile and DBF Loader:
![Page 14: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/14.jpg)
(6.) e preencho todos os campos necessários e importo as shapefiles (edificios; pontos e vias) para a
base de dados “planhoso”:
Directório do ficheiro. shp
Username: geobox
Password: geobox
Nome da B. Dados
SRID correspondente ao
sistema de coordenadas
WGS 84/UTM 29N
6Realizar o mesmo procedimento para
as restantes shapefiles6
![Page 15: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/15.jpg)
Por fim, e de volta ao pgAdmin III, actualizo a base de dados “planhoso” e verifico que esta já contem a
informação importada no passo anterior6.
![Page 16: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/16.jpg)
O SQL é uma linguagem usada para comunicar com bases de dados. Os comandos da SQL são usados
para realizar operações tais como alterar / actualizar dados numa base de dados, ou responder a
questões a partir da informação armazenada numa base de dados.
Foi aplicado à base de dados “planhoso” as seguintes queries:
1) Quais as vias que começam por ‘E’:
select * from vias where name like 'E%'
![Page 17: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/17.jpg)
2)Qual a geometria da tabela vias (o tipo de geometria e as coordenadas):
select name, st_astext(the_geom) from vias
![Page 18: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/18.jpg)
3) Qual o número de linhas (vias) editadas por mim:
select count (vias.user) from vias where vias.user like '%ana_costa%'
4) Qual o número de áreas (edifícios) editados por mim:
select count (edificios.user) from edificios where edificios.user like '%ana_costa%'
![Page 19: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/19.jpg)
5) Qual o somatório do nº de linhas acrescentados pelo user “ana_costa”?
select sum (st_length(the_geom)), user from vias where vias.user like '%ana_costa%'
6) Qual o somatório do nº áreas dos polígonos acrescentados pelo user “ana_costa”?
select sum (st_area(the_geom)), user from edificios where edificios.user like '%ana_costa%'
![Page 20: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/20.jpg)
7) Qual nome das ruas (vias) que editei?
select vias.user, vias.name from vias where vias.user like '%ana_costa%'
![Page 21: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/21.jpg)
8) Qual nome dos edifícios (áreas) que editei?
select edificios.user, edificios.name from edificios where edificios.user like '%ana_costa%'
![Page 22: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/22.jpg)
9) Qual o nome das vias e o respectivo código postal?
select vias.name as name, vias.user as name, cttshapefile.cp4 as Codigo_Postal from vias, cttshapefile
![Page 23: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/23.jpg)
10) Qual o código postal das vias, editadas por mim e ordenadas pelo nome das ruas?
select vias.name as name, vias.user as name, cttshapefile.cp4 as Codigo_Postal from vias, cttshapefile
where vias.the_geom && cttshapefile.the_geom and contains(vias.the_geom, vias.the_geom) and vias.user
like '%ana_costa%' order by vias.name
![Page 24: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/24.jpg)
11) Qual a distância de uma determinada rua (ex.: Avenida da República) que editei de uma escola?
select vias.name, edificios.user, edificios.name edificios, edificios.amenity, st_distance (vias.the_geom,
edificios.the_geom)
from vias, edificios where vias.name like '%Avenida da República%' and edificios.amenity like '%school%'
and edificios.user like '%ana_costa%'
![Page 25: Tutorial_PostGis](https://reader033.fdocumentos.com/reader033/viewer/2022060118/558bcc28d8b42af46f8b4641/html5/thumbnails/25.jpg)
11) Quais as casas da cultura que se encontram 200 metros da avenida principal (Avenida da
República)?
select vias.name, edificios.user, edificios.name edificios, edificios.amenity, st_distance (vias.the_geom,
edificios.the_geom)
from vias, edificios where vias.name like '%Avenida da República%' and edificios.amenity like
'%arts_centre%'
and edificios.user like 'ana_costa%'and st_distance (vias.the_geom, edificios.the_geom) <= 200
order by st_distance (vias.the_geom, edificios.the_geom)