Juntando vários registros ao recurso único usando o QGIS?

25

Estou tentando criar uma junção / relação no QGIS, onde tenho um arquivo de forma de edifícios e gostaria de me juntar a uma tabela não espacial (.csv) contendo pessoas que trabalham em cada edifício. Portanto, tenho vários registros na minha tabela que gostaria de poder associar aos meus recursos únicos no meu shapefile. Só posso executar uma junção no QGIS onde o primeiro registro está associado ao recurso shapefile (ou seja, construção), mas os registros subsequentes são removidos.

Alguém poderia me informar como concluir essa associação / relação no QGIS?

Mick
fonte
Eu tive uma pergunta semelhante aqui: gis.stackexchange.com/questions/5797/… O plug-in RT SQL Layer e os plug-ins eVis foram sugeridos. Usei o plug-in eVis, mas não era a solução ideal.
Ando
2
Estou tendo o mesmo problema e, de fato, juntar tabelas funciona. O truque é unir as tabelas com vários valores à tabela com o valor único (aqui, de pessoa para construção, e não o contrário). O problema, na minha opinião, é que, ao fazer isso, não é possível pesquisar e exportar o resultado como um arquivo georreferenciado, que é um bugger (pelo menos para mim). Alguma maneira de contornar esse problema? marc
Qual é o resultado final que você deseja alcançar? Mesmo se você conseguir fazer uma associação, deseja apresentá-la em um mapa? Faça estatísticas? Dependendo disso, diferentes fluxos de trabalho podem ser seguidos, mas o uso de um banco de dados geralmente é uma boa idéia se você deseja fazer associações.
precisa saber é o seguinte

Respostas:

15

Resolvi esse problema usando o QGIS 1.7.0, primeiro salvando a camada de vetor como uma tabela de valores separados por vírgula (CSV) com o campo de geometria convertido em texto conhecido. Para fazer isso, o campo de camada da caixa de diálogo "Salvar camada de vetor como ..." deve ler GEOMETRY = AS_WKT para criar um campo de texto conhecido da geometria com a coluna WKT.

O arquivo de geometria CSV foi então associado à tabela de atributos não-geometria em uma junção um-para-muitos na guia junções de propriedades da tabela de atributos não-geometria.

A junção resultante foi salva como outro arquivo CSV de geometria.

Quando esta tabela é aberta no QGIS, cada registro de atributo foi representado por sua geometria vetorial apropriada.

Ao fazer tudo isso, descobri que o Delimited Text Plugin não é necessário para abrir um arquivo de geometria CSV se os delimitadores forem vírgulas e o campo de geometria WKT for nomeado WKT.

Para obter detalhes sobre como isso é feito, consulte meu tutorial em http://georgiawildlife.com/node/2849 .

Greg Krakow
fonte
Boa abordagem, fiz uma coisa semelhante usando apenas ogr2ogrpara criar os arquivos CSV a partir dos Shapefiles. Em seguida, um script R simples para mesclar os arquivos no campo comum que eu queria e escrever de volta para CSV. Então, ogr2ogrnovamente, para criar o shapefile mesclado.
vpipkt
1
Isso pode ser classificado como o mais alto, mas o processo para isso é respondido por @underdark abaixo. Este é um hack e não é a melhor opção, é lento e ineficiente e resulta em arquivos maiores e mais etapas.
Nittyjee
10

As junções criadas nas propriedades da camada apenas adicionam colunas aos recursos existentes. Se a camada vetorial tiver apenas 160 recursos, uma junção não poderá aumentar o número de recursos!

Use o recurso de camada virtual. Oferece junções reais do tipo SQL / banco de dados. Por exemplo, veja minha postagem recente: Pequenos múltiplos para mapas de fluxo OD usando camadas virtuais

insira a descrição da imagem aqui

submundo
fonte
7

No QGIS 1.7, há um novo mecanismo para Joins (você o encontra nas propriedades do vetor).

As tabelas sem geometria agora podem ser adicionadas a um projeto como qualquer outra camada (vetorial).

Giovanni Manghi
fonte
7

A partir da versão 2.2, o QGIS suporta relações um para muitos. Defina-os nas Propriedades do projeto, não nas Propriedades da camada de vetor. E, em seguida, os registros relacionados aparecerão na Tabela de atributos da camada ou em Identificar resultados por meio do formulário.

Veja a resposta e o link para um bom guia aqui .

Anna Pestereva
fonte
4

Faça a junção no LibreOffice Base.

Você não pode superar o fato de estar tentando gerenciar um relacionamento de 1 para muitos.

Para não espacial e não espacial, vale a pena o esforço para aprender. Acho que o maior truque é garantir que os campos dos atributos de junção tenham exatamente os mesmos termos.

Abra os dados espaciais localizados como uma camada no QGIS, selecione todos os registros na tabela de atributos no QGIS (seleção limpa, seleção invertida) e copie-os para uma nova planilha no LibreOffice Calc. Você encontrará o primeiro campo é WKT, que é uma descrição do recurso que pode ser usado universalmente no GIS. O Calc exibirá uma caixa de diálogo para importar a tabela colada, escolher delimitado por tabulação, garantir que a vírgula não esteja marcada, pois irá mastigar o campo WKT em bits. Em seguida, destaque esta tabela no Calc, alterne para Base, destaque o ícone Tabelas à esquerda e cole. O Base passará por um diálogo para importar a tabela. O campo WKT pode ser retido por meio da associação e, quando o arquivo é importado de volta para o QGIS como um arquivo .csv, eles são usados ​​para realocar os recursos. Apenas lembre-se da projeção.

Dessa forma, você terá controle total da junção e poderá fazê-lo em "reverso". Para fazer junções no Base, assegure-se de que o campo de dados exclusivo (o 1) seja uma chave primária e, em seguida, aponte-o para "muitos" se estiver familiarizado com o conceito 1 para muitos ou 1 para n. As junções são configuradas criando relacionamentos | FERRAMENTAS |. Como mencionei, você provavelmente desejará chutar alguém quando encontrar que os campos de junção têm as mesmas informações, mas usaram texto ou sintaxe diferente para representá-lo.

hth

BWill
fonte
2

Eu não acho que isso seja possível vincular tabelas com um relacionamento de 1 para muitos no QGIS. Como alternativa, você pode tentar o gvSIG. Aqui você pode criar 1 para muitos links. Após criar o link, a seleção de um recurso no mapa destacará todos os registros relacionados na tabela vinculada.

Ecodiv
fonte
1
Desde a introdução das camadas virtuais, essa resposta não está mais correta.
subterrâneo