2º Trabalho IPSIG (OSM) - Hugo Teixeira

Tutorial para importar dados do OSM para PostgreSQL e PostGIS

Existem várias formas para importar os dados, contudo a forma que eu utilizei foi a seguinte:

Inicialmente abri o JOSM (Java Open Street Maps) e importei a minha área para o programa em questão. Seguidamente guardei a informação no formato .osm para posteriormente poder importar a informação para o Quantum GIS.
Já no Quantum GIS, graças ao plugin do OSM, é possível importar ou adicionar informação do OSM, e sendo assim, consegui adicionar o meu ficheiro .osm anteriormente gravado no JOSM.
Posto isto, já tenho a informação subdividida em pontos, polígonos e linhas, todavia, ainda, a informação ainda não se encontra no formato shapefile e para isso, seleccionamos cada um desses formatos e fazemos "save as shapefile".
Sendo assim já temos a informação num formato compatível para ser trabalhado no PostgreSQL. Todavia o sistema de coordenadas desta informação está em coordenadas geográficas e necessitamos de as ter em rectangulares para depois as distâncias sejam dadas em metros.
Para isso é necessário no Quantum GIS fazer um "export to new projection" e para este caso escolhi a EPSG 3763 (ETRS 89 / Portugal TM06).
Posto isto é necessário importar esta informação para PostgreSQL e para isso é necessário ter uma aplicação instalada, que é a "osm2pgsql".
Como trabalhamos numa máquina virtual com o linux instalado, para utilizar esta aplicação é necessário, irmos à consola aplicarmos o seguinte comando: gshp2pgsql e pressionar o botão Enter. Aparece uma janela que permite que se importe para PostgreSQL as shapes anteriormente preparadas.
Depois de escolhermos correctamente os parâmetros fazemos OK e a informação aparecerá na base de dados, pronta a ser trabalhada e questionada (querys).
Várias Querys foram elaboradas, todavia em algumas situações, vou apenas mostrar um exemplo, pois o que muda é o formato da shape em questão, mas a query é feita da mesma maneira.

Para realizarmos estas Querys é necessário abrir o SQL.

1ª Query (Query de Contagem) - do número de
linhas, pontos e polígonos elaborados por mim.















select count (linhas.user) from linhas where linhas.user like '%Hugo Teixeira%'

select count (poligono.user) from poligono where poligono.user like '%Hugo Teixeira%'

select count (pontos.user) from pontos where pontos.user like '%Hugo Teixeira%'

2ª Query (Query de soma) -total do número de metros de linhas acrescentados por mim, e das áreas dos polígonos no OSM















select sum (st_length(the_geom)), user from linhas where linhas.user
like '%Hugo Teixeira%'

select sum (st_area(the_geom)), user from poligono where poligono.user
like '%Hugo Teixeira%'

3ª Query (máximo e mínimo) – polígono com área máxima e mínima e linhas com comprimento máximo e mínimo.















select max (st_area(the_geom)), user from poligono where poligono.user
like '%Hugo Teixeira%'
select min (st_area(the_geom)), user from poligono where poligono.user
like '%Hugo Teixeira%'

select max (st_length(the_geom)), user from linhas where linhas.user
like '%Hugo Teixeira%'
select min (st_length(the_geom)), user from linhas where linhas.user
like '%Hugo Teixeira%'


4ª Query (média das áreas dos polígonos e do comprimento das linhas)
















select avg (st_area(the_geom)), user from poligono where poligono.user
like '%Hugo Teixeira%'

select avg (st_length(the_geom)), user from linhas where linhas.user
like '%Hugo Teixeira%'

5ª Query (selecção do atributo nome, nos polígonos, pontos e linhas)

















select linhas.user, linhas.name from linhas where linhas.user like '%Hugo Teixeira%'
select pontos.user, pontos.name from pontos where pontos.user like '%Hugo Teixeira%'
select poligono.user, poligono.name from poligono where poligono.user like '%Hugo Teixeira%'

6ª Query (selecção de todas as linhas, polígonos e pontos que estejam contidos no código postal que comece por “4”)

select linhas.name, linhas.user, cp4 from linhas, cttshapefile
where st_contains (cttshapefile.the_geom, linhas.the_geom)
and cp4 like '4%' and linhas.user like '%Hugo Teixeira%'

select pontos.name, pontos.user, cp4 from pontos, cttshapefile
where st_contains (cttshapefile.the_geom, pontos.the_geom)
and cp4 like '4%' and pontos.user like '%Hugo Teixeira%'

select poligono.name, poligono.user, cp4 from poligono, cttshapefile
where st_contains (cttshapefile.the_geom, poligono.the_geom)
and cp4 like '4%' and poligono.user like '%Hugo Teixeira%













7ª Query (selecção de pontos [farmácias] e sua distância de determinada rua)













select linhas.name, pontos.user, pontos.name pontos, amenity, st_distance (linhas.the_geom, pontos.the_geom)
from linhas, pontos where linhas.name like '%R. Marquês Sá da Bandeira%'
and pontos.amenity like '%pharmacy%' and pontos.user like '%Hugo Teixeira%'

8ª Query(selecção de pontos [escolas] que não se situem a mais 300m de determinada rua)













select linhas.name, pontos.user, pontos.name pontos, amenity, st_distance (linhas.the_geom, pontos.the_geom)
from linhas, pontos where linhas.name like '%Avenida Infante D. Henrique%' and pontos.amenity like '%school%' and pontos.user like '%Hugo Teixeira%’ and st_distance (linhas.the_geom, pontos.the_geom) < 300
order by st_distance (linhas.the_geom, pontos.the_geom)

0 comentários:

Enviar um comentário

 
Copyright © MSIGOT