Lendo a conexão ODBC usando QGIS? [fechadas]


16

Tenho um colega de trabalho que gerencia um grande banco de dados do MS Access que contém campos X e Y para vários locais que ele rastreia. Já exportamos os dados para CSV e usamos o plug-in de texto delimitado por QGIS para plotar os locais.

Agora, gostaríamos de plotar esses dados diretamente no QGIS, conectando-nos ao banco de dados do MS Access por meio de uma conexão ODBC (em vez de exportar para CSV).

  1. O QGIS pode consumir os dados da conexão ODBC para plotar os locais XY?
  2. Pode ser "ligado ao vivo" à conexão ODBC para que, quando um projeto for reaberto, a camada "reploque" todos os locais antigos e adicionados recentemente dinamicamente (em vez de exportar para o shapefile, o que criaria um instantâneo com o tempo)?
  3. Você pode criar conexões ODBC tabulares que podem ser unidas a tabelas espaciais no QGIS?

Você pode fazer tudo isso no ArcGIS (ferramenta "Adicionar dados XY"), portanto seria ótimo se esse recurso existisse no QGIS. Eu simplesmente não consigo encontrar em nenhum lugar que mencione sua existência.

Não estou planejando mudar para um banco de dados espacial. Como pessoa do GIS, sim, eu sei que faz sentido mudar para um banco de dados espacial e, sim, usei o PostGIS para gerenciar esse tipo de dados. Mas essas não são opções no momento. O usuário não é uma pessoa do GIS nem deseja ser, e ele gerencia seu próprio banco de dados no MS Access e isso não muda. Estou e estou puxando-o chutando e gritando para o mundo GIS e quero facilitar o máximo possível. Ele pode viver exportando para CSV, eu apenas esperava que houvesse uma solução melhor USANDO ODBC PARA MS ACCESS e exibindo os dados XY no QGIS.


Pelo que sei, você não pode fazer o que pede com o QGIS. Concordo que haveria algum uso em um equivalente ODBC de importação de CSV, mas para qualquer tipo de desempenho, teria que ser uma importação e não uma conexão dinâmica - assim como o plug-in CSV. Portanto, não é provável que haja qualquer aceitação, a menos que você a apoie / desenvolva.
MerseyViking

@ MV- Eu geralmente concordo com você e vejo seus pontos. No entanto, para usuários não-GIS interessados ​​principalmente em mapear seus dados e não analisá-los, o desempenho do QGIS não seria um problema tão significativo. Eu imagino que ter uma conexão dinâmica, "sempre viva", com seus dados quase certamente superaria as preocupações de desempenho (pensando novamente nisso da perspectiva de usuários que não são de GIS).
RyanKDalton

Excelente resposta para uma pergunta semelhante no QGIS 2.4 access .mdb add error
RyanKDalton

Respostas:


7

Advertência: Eu não tentei isso, então estou disposto a me curvar a qualquer pessoa com experiência direta.

Você pode conectar-se a uma fonte de dados ODBC na caixa de diálogo "adicionar camada de vetor", basta selecionar "banco de dados" como o tipo de fonte e ODBC como o tipo de banco de dados. O QGIS usa o driver ODBC para OGR , de modo que as mesmas advertências serão aplicadas - ou seja, você precisará de uma tabela chamada GEOMETRY_COLUMNS e assim por diante, para que seu colega provavelmente precise modificar o banco de dados.

Eu não uso o Access desde logo após o lançamento da versão 1.0, mas como ele não está ativado espacialmente, você provavelmente encontrará um problema no desempenho. Presumivelmente, você não vai simplesmente abandonar o Access e começar a usar um banco de dados espacialmente ativado, porque é improvável que seja economicamente viável, mas se seu colega de trabalho sentir vontade de mudar, recomendo vivamente que vá para algo um pouco mais poderoso.


@ MV- Esta é uma boa informação para ter. Não sabia que era possível adicionar dados tabulares através da opção "adicionar camada de vetor". Você está certo, porém, porque não está ativado espacialmente, você ainda precisaria exportar para um formato espacial. E você está certo, o usuário não vai mudar para um banco de dados ativado espacialmente porque não é um GIS ou um banco de dados. Eles têm formação Acesso apenas o suficiente para ser perigoso ...
RyanKDalton

7

Com as novas ferramentas de "Processamento" disponíveis no QGIS 2, isso se torna um pouco mais fácil. Embora eu ainda não tenha encontrado uma maneira de "vincular ao vivo" os dados (para que, se você alterar os valores na tabela do MS Access, o ponto se move automaticamente), esse método parece funcionar muito bem.

O crédito vai para "Christina" e "Bernd" na seção de comentários desta página (e, claro, @underdark para o blog) sobre como criar a conexão ODBC com o banco de dados do MS Access:

Crie uma conexão ODBC:

Para Win7, 32 bits: Vá para o painel de controle / ferramentas administrativas / fontes de dados (ODBC)

Para o Win7, 64 bits: em vez de usar o “painel de controle / ferramentas administrativas / fontes de dados (ODBC)” - assim, nas versões de 64 bits, você precisa usar C: \ Windows \ SysWOW64 \ odbcad32.exe!

  1. Clique na guia DSN do usuário e depois em 'adicionar'
  2. Role para baixo até o Microsoft Access Driver (* mdb) e clique em 'Concluir'
  3. Dê um nome à conexão e escolha 'selecionar' para navegar até o local do banco de dados, clique em 'ok' para sair do diálogo e novamente para fechar a janela dsn.

Carregue a camada no QGIS:

  1. Vá para adicionar a camada vetorial e selecione a opção de banco de dados.
  2. Verifique se a caixa 'tipo' do banco de dados diz 'ODBC' e clique em 'novo'
  3. Na caixa nome, digite um nome para conexão
  4. O host é localhost
  5. O nome do banco de dados é o nome do dsn que você criou na etapa 4
  6. Todas as outras caixas devem ficar em branco, mas você pode marcar a caixa 'salvar senha'.
  7. Teste a conexão e anote os erros. Quando bem-sucedido, clique em 'ok' para retornar ao diálogo 'adicionar camada de vetor'
  8. Clique em 'Abrir' para abrir esta conexão e, se solicitado, clique em 'OK'. Escolha sua camada (tabela do banco de dados), tendo em mente que ela pode não ter geometria.

Converta os dados XY em pontos:

  1. Com a tabela no sumário, vá para "Processamento" -> Caixa de ferramentas -> Geoalgoritmos -> Vetor -> Criação -> "Camada de pontos da tabela".
  2. Preencha o formulário como mostrado abaixo:

Camada de pontos da tabela


Se você está tendo problemas com essa abordagem, verifique o acesso ao QGIS 2.4 .mdb add error
RyanKDalton

Muito obrigado pela ajuda na conexão do MS Access ao QGIS. Eu estou usando país códigos de três letras como a camada de juntar-se e funcionou muito bem

Se eu tivesse uma tabela com Linha ou Polígono, como eu poderia gerar o mapa?
precisa

5

Embora eu ainda esteja interessado em saber se há outras opções disponíveis, me deparei com uma mensagem que mencionava que isso era possível usando o plug-in eVis .

A documentação descreve na seção Conexão do banco de dados como você pode se conectar a uma conexão MS Access ou ODBC para criar locais de pontos XY a partir do banco de dados, sem criar um instantâneo estático. Eu simplesmente digitei "selecionar * de" e o eVis abriu uma caixa de diálogo que pergunta o nome da camada e os campos XY.

Infelizmente, isso não parece criar uma conexão "vinculada ao vivo" ao banco de dados do MS Access, porque na próxima vez que o projeto é aberto, o QGIS está confuso ("não é possível abrir uma ou mais camadas do projeto"). A solução para isso, no entanto, é criar uma consulta XML predefinida que o usuário possa selecionar.

Portanto, embora não seja uma solução perfeita, este é um passo melhor do que exportar para CSV. No futuro, acho que seria ótimo ver o plug-in Delimited Text expandido para aceitar conexões ODBC para esse fim.


Ah! Isso é realmente útil saber. Envolve alguns aros, mas pelo menos deve ser uma configuração única. Ele recarregará os dados se você alterar a exibição no QGIS? Ou apenas o armazena em cache até você executar novamente a consulta manualmente?
MerseyViking

@ MV- Pelo que sei através da experimentação, o eVis parece criar uma camada em cache no QGIS. Por exemplo, depois de carregar a camada com o eVis, excluí um dos registros do Access DB, atualizei a tela QGIS e o ponto "excluído" persistiu. Mas quando eu criei uma nova camada em cache, o ponto excluído não foi exibido (conforme o esperado). O movimento panorâmico e o zoom não tiveram efeito na exibição da camada em cache.
RyanKDalton

4

uma abordagem alternativa seria mover os dados para postgis. você pode ler o arquivo csv diretamente com o comando de cópia postgresql. então você pode criar pontos a partir dos campos xy.

então, se você quiser usar alguns relatórios ou outra funcionalidade no acesso, poderá se conectar ao postgis a partir do acesso.

o benefício seria que você coloque os dados espaciais onde eles pertencem, em um banco de dados espacial e, em seguida, use o odbc back para acessar para manipular os dados não espaciais se, por algum motivo, ainda quiser ver seus dados em acesso.

existem ótimos tutoriais para o postgis / postgresql acessar a conexão em postgresonline.com. tutoriais sobre como iniciar o postgis / postgresql, você pode encontrar pelos mesmos autores em bostongis.org

/ Nicklas


0

Existem vários produtos de conversão que podem converter dados de acesso ms para postgres ou SQLite e vice-versa. A movimentação dos dados muito rapidamente de um lado para o outro. O uso de um desses aplicativos pode oferecer a opção de executar o QGIS em um instantâneo dos dados.


1
você poderia sugerir essa ferramenta?
Jens
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.