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).
- O QGIS pode consumir os dados da conexão ODBC para plotar os locais XY?
- 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)?
- 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.
Respostas:
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.
fonte
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!
Carregue a camada no QGIS:
Converta os dados XY em pontos:
fonte
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.
fonte
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
fonte
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.
fonte