No PostGIS 2.0, estou buscando uma maneira eficiente de criar uma exibição espacialmente ativada que seja visível no QGIS.
Eu segui o contexto da Parte 2 da resposta do Mike Toews em Como criar uma tabela a partir de tabelas existentes (aplicando novos esquemas) no banco de dados postgis? , e a exibição aparece como uma camada de ponto (no meu caso) na caixa de diálogo "Adicionar camadas PostGIS". Mas, depois de criar a visualização e ativá-la espacialmente, recebi o seguinte erro ao tentar adicionar a visualização ao QGIS:
Você deve selecionar uma tabela para adicionar uma camada
Alguém pode explicar por que a exibição espacial não será carregada no QGIS e o que preciso fazer para torná-la carregável como uma camada no QGIS?
Atualmente, estou usando o QGIS v1.8 no instalador do OSGEO
Eu vejo é construído a partir do banco de dados de nomes geográficos, carregado no PostGIS. A tabela de nomes geográficos / dados espaciais podem ser selecionados / visualizados no QGIS muito bem.
Quando tento selecionar o " mt_view ", o QGIS vê a visualização na caixa de diálogo, mas não me permite selecioná-la. Ele fornece uma caixa pontilhada ao redor da área, mas não destaca e seleciona a exibição.
Acabei de perceber que quando executo minha primeira consulta:
CREATE OR REPLACE VIEW data.test AS
SELECT * FROM data.geoname
WHERE admin1='MT'
a exibição aparece no diálogo Adicionar camada do QGIS, mas não é selecionável. Então, quando eu corro:
SELECT Populate_Geometry_Columns('data.test'::regclass);
Eu recebo o resultado de "0", onde, de acordo com a documentação , acho que deveria estar retornando "1".
fonte
Respostas:
Posso confirmar que não é possível simplesmente selecionar uma exibição listada.
Parece necessário selecionar a "coluna da chave primária" primeiro. Em seguida, a tabela fica selecionável:
fonte
(Atualizando minha resposta um pouco)
Desde que o campo OBJECTID (número da linha) seja o primeiro na definição da coluna da visualização , o QGIS o buscará sem solicitar que você adicione no menu 'adicionar camada de vetor'.
Eu apenas corrigi algumas visualizações antigas que estavam quebradas conforme a pergunta original, mas mover o campo OBJECTID para o início da visualização corrigiu o problema!
fonte
PRIMARY KEY
definido, o QGIS a buscará rotineiramente: nunca falha em 'selecionar' o PK em qualquer uma das minhas tabelas PK, embora quase todos os meus PKs sejamVARCHAR
. Isso não pode acontecer com aVIEW
porque o PostgreSQLVIEW
não pode terCONSTRAINT
s. Certamente, é por isso que é necessário selecionarVIEW
manualmente o PK para s ao importar para o QGIS através do botão 'Adicionar camadas do PostGIS', e é por isso que eu os importo usando um script Python.Sua visão aparece na
geometry_columns
tabela? De acordo com o manual, a visualização deve aparecer automaticamente na versão 2.0, mas ainda não a testei.Tente executar o seguinte para verificar:
fonte
Sua visualização está usando um campo inteiro exclusivo como um "gid" ou equivalente PK de uma das tabelas na sua visualização?
Sei que nas versões anteriores do QGIS tive problemas com a adição de visualizações no mapa quando não havia um campo inteiro exclusivo. No entanto, recebi uma mensagem de erro diferente apontando esse problema, mas pode valer a pena verificar para cobrir todas as bases.
fonte