Carregando dados do OpenStreetMap no QGIS?

36

No QGIS 1.8, usei o plug-in openstreetmap para solicitar dados do servidor ou abrir um arquivo XML .osm, que produziu 3 camadas (polígonos, polilinhas e pontos) no QGIS.

Isso foi ótimo (mais ou menos o bug de 64 bits que afeta muito a área recentemente mapeada em que trabalho), mas como faço isso no QGIS 2.x?

Não consigo encontrar nenhuma documentação atualizada sobre isso.

No menu de vetor, tentei importar de servidores osm, recebo um arquivo .osm, mas depois estou preso. Há uma opção de menu para carregar um arquivo XML, mas ele produz um espaço espacial db, que aparentemente só possui tabelas não-geométricas quando tento adicioná-lo como uma camada espaço espacial. Se eu abrir a tabela de atributos, posso ver os IDs dos nós, maneiras e assim por diante, mas não consigo descobrir como realmente usá-los.

Eu também tentei adicionar uma camada de vetor de um arquivo XML .osm. Recebo uma janela gpsbabel que não mostra nada e, finalmente, uma mensagem de fonte de dados inválida no QGIS.

Laurent S
fonte
2
Tom, escrevi instruções passo a passo para obter os dados do OSM em um QGIS. Espero que seja simples de seguir para iniciantes. qgistutorials.com/en/docs/downloading_osm_data.html
spatialthoughts
Aqui está um estilo decente (com boas instruções de configuração): github.com/yannos/Beautiful_OSM_in_QGIS Ele é destinado ao PostGIS (não ao Spatialite).
kontextify
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Do comentário
csk

Respostas:

40

Atualização para o QGIS 3.x : O antigo importador OSM do QGIS 2 foi descartado no QGIS 3 devido a muitos bugs não resolvidos. O plug-in QuickOSM também permite ler arquivos RAW osm. Você pode usar o usuário Camada - Adicionar camada - Adicionar camada vetorial. Nesse caso, os dados do OSM são abertos com o GDAL, conforme documentado em http://gdal.org/drv_osm.html


No QGIS 2.x , há 3 etapas envolvidas

  1. Obtenha um arquivo OSM, você pode obtê-lo usando josm ou viaduto ou qualquer outra fonte. Tem que ser um xml válido. Você também pode baixá-lo no qgis Vector> OpenStreetMap> menu Download OSM Data , mas às vezes não dá resultado. Eu recomendaria o uso de viaduto turbo .
  2. Vector> OpenStreetMap> Importar topologia de XML , isso como você disse, produzirá um banco de dados espacial com tabelas não-geométricas. Isso eu acho que é a topologia.
  3. Finalmente, você pode obter dados por Vector> OpenStreetMap> Exportar topologia para Spatialite , aqui você precisa fornecer o arquivo db criado acima e, assim como no qgis 1.8, você terá a opção de escolher pontos, linhas ou polígonos . Abaixo disso, na seção Tags exportadas , você pode carregar todas as tags contidas no arquivo e selecionar apenas aquelas necessárias. Este é um recurso adicional do que no 1.8.

A camada é adicionada ao mapa, se você quiser todos os nós, maneiras de repetir a etapa 3 com outras opções.

http://wiki.openstreetmap.org/wiki/QGIS#QGIS2_OpenStreetMap_Vectors

neogeomat
fonte
4
Isso parece incrivelmente complicado, mas funciona. Por uma questão de clareza, após a etapa 3, você ainda precisará adicionar uma camada espacial, conectar-se ao banco de dados criado e escolher as camadas criadas na etapa 3 para finalmente ver o resultado. Obrigado pela ajuda!
Laurent S
Para mim, as camadas foram criadas e adicionadas automaticamente. A conexão com o banco de dados foi estabelecida na etapa 2 (a menos que você a desmarcou).
Andrej
15

Achei o download de dados do OSM usando o plug-in e o processo de importação e exportação foi muito tedioso. Por isso, escrevi uma solução diferente: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/

Resumo:

Arquivos OSM brutos podem ser bastante grandes. É por isso que é definitivamente preferível fazer o download do formato binário compactado .pbf em vez do formato XML .osm. Como fonte de download, eu recomendaria o Geofabrik .

Para a primeira etapa de pré-processamento: extraindo a área de interesse, podemos usar Osmose:

C:\Users\anita_000\Geodata\OSM_Noirmoutier>..\bin\osmosis.bat --read-pbf pays-de-la-loire-latest.osm.pbf --bounding-box left=-2.59 bottom=46.58 right=-1.44 top=47.07 --write-xml noirmoutier.osm

Embora o QGIS também possa carregar arquivos .osm, descobri que o desempenho e o acesso a atributos melhoram muito se o arquivo .osm for convertido em espaço espacial.

C:\Users\anita_000\Geodata\OSM_Noirmoutier>ogr2ogr -f "SQLite" -dsco SPATIALITE=YES noirmoutier.db noirmoutier.osm

No QGIS, podemos carregar os pontos, linhas e multipolígonos usando a opção Adicionar camada SpatiaLite. Quando carregamos as tabelas spatialite, existem alguns problemas:

  • Não há polígono terrestre. Em vez disso, existem recursos da linha “litoral”.
  • A maioria dos polígonos do rio está faltando. Em vez disso, existem recursos da linha "margem do rio".

Criar os polígonos do rio ausentes não é grande coisa:

  1. selecione todas as linhas onde hidrovia = margem do rio.
  2. use a ferramenta Poligonizar na caixa de ferramentas de processamento para criar polígonos automaticamente das áreas delimitadas pelas linhas da margem do rio selecionadas. (Observe que o processamento por padrão opera apenas nos recursos selecionados, mas essa configuração pode ser alterada nas configurações de processamento.)

Criar o polígono terrestre (ou polígono marítimo, se você preferir por algum motivo) é um pouco mais complicado, pois na maioria das vezes a costa não será fechada pelo simples motivo de que estamos cortando um pedaço de terra do continente principal. . Portanto, antes de podermos usar as ferramentas Poligonizar, precisamos fechar a área. Para fazer isso, sugiro primeiro selecionar o litoral usando "other_tags" LIKE '% "natural" => "litoral"%' e criar uma nova camada a partir dessa seleção (salvar a seleção como…) e editá-la (não esqueça para ativar o snap!) para adicionar linhas para fechar a área. Então poligonize.

underdark
fonte
Se você estiver executando um computador razoavelmente confiável e desejar que o estágio ogr2ogr seja concluído antes da próxima era glacial, adicione --config OGR_SQLITE_SYNCHRONOUS OFF.
scruss
6

Se você não gostar do plug-in, busque os dados OSM necessários com a API Overpass e adicione o resultado ao QGIS com Add Vector Layer( All filesfiltro de identificação ).

O QGIS 2.0 usa o importador ogr2ogr OSM do GDAL 1.10, que faz um bom trabalho.

O suporte à relação parece ser melhor do que o plugin no momento.

Apenas certifique-se de baixar completamente as formas e as relações , ou seja, todos os nós das formas e todos os membros das relações, com todos os seus nós.

AndreJ
fonte
4

Você não precisa colocar os dados no SpatialLite. Você pode apenas:

  1. Faça o download dos dados (Vector> OpenStreetMap> Fazer download de dados, cria um arquivo .osm)
  2. Carregue os dados (arquivo .osm) como uma camada vetorial (Camada> Adicionar camada vetorial). Depois de selecionar o arquivo, ele perguntará quais camadas você deseja adicionar (como o GDAL cria arquivos separados para cada tipo: Ponto, Linha, MultiLine, MultiPolygon, GeomCollection). Selecione o que deseja e carregue-o.
Neuhausr
fonte
Isso funciona de alguma forma, mas não parece separar as camadas com base em tags. Então, basicamente, estradas e rios acabam na mesma camada de Linha, o que não é realmente útil se você deseja executar uma análise nos dados resultantes.
Laurent S
Não ficou claro em sua pergunta o que você estava fazendo com os dados depois de importados. Obviamente, você pode selecionar os recursos que deseja dos dados no QGIS. Como mencionado acima, se você sabe que deseja apenas determinados dados (e não é uma área muito grande), o download de dados com o Overpass provavelmente seria melhor, pois você pode pré-selecionar apenas alguns recursos. Acho que o Overpass Turbo é uma maneira fácil de desenvolver consultas. Aqui está um exemplo de todas as rodovias em caixa delimitadora: overpass-turbo.eu/s/2VX
neuhausr