Eu tenho uma tabela de atributos com dois campos vazios no QGIS.
Quero importar um banco de dados do Excel para preencher meus campos vazios no QGIS. Meu arquivo do Excel corresponde às colunas na minha tabela de atributos QGIS.
Sou capaz de associar corretamente meu excel (.CSV) ao meu shapefile. No entanto, o processo, em vez de preencher os campos em branco como desejo, criou duplicatas. Com a ajuda do «Table Manager», sou capaz de corrigir a situação, mas isso requer muito tempo. Estou procurando uma maneira mais eficiente de juntar meus dados do Excel.
Como posso associar meu arquivo do Excel à minha tabela de atributos sem criar duplicatas?
qgis
attribute-table
attribute-joins
excel
Laurent Robitaille-Lainesse
fonte
fonte
Respostas:
Eu faria o seguinte para facilitar a vida:
Antes de fazer isso, faça um backup do seu shapefile.
esta é a guia Campo a que estou me referindo
Não se esqueça de alternar a edição antes e depois de excluir o campo desnecessário
fonte
Você deseja associar o arquivo do excel ao shapefile. Você os unirá em um atributo comum e o resultado será uma camada unida em que cada registro contém os atributos do arquivo shapefile e do arquivo excel.
Ok, primeiro você carrega seu arquivo excel e seu vetor posteriormente nas camadas. Usei alguns dados de teste que fiz, mas sua configuração deve ser semelhante à abaixo.
Agora clique com o botão direito do mouse na camada (no painel Camadas) e escolha Propriedades e, em seguida, escolha Unir. Primeiro, pressione o sinal verde + no canto inferior esquerdo (Big Red Arrow na imagem abaixo) e ele exibirá um novo menu Adicionar vetor de junção (como abaixo) Aqui sua camada de junção será o arquivo excel (então escolha o arquivo excel adequado) & sheet) o campo de junção é o campo no arquivo do Excel que contém o atributo comum ao shapefile. O campo de destino é o campo correspondente no shapefile. (no meu caso, os dois campos comuns passaram a ter o nome de unidade, mas se o campo fosse chamado UNIT_ no shapefile, eu teria usado isso em vez de UNIT no meu campo de destino)
Existem algumas outras opções com as quais você pode mexer na união, como se você quiser apenas ver determinados campos, etc ... de qualquer maneira, agora eles estão associados e se você voltar e olhar os atributos do arquivo shapefile, verá agora possui os atributos correspondentes do arquivo do Excel, como abaixo.
Aqui estão alguns tutoriais úteis para mostrar passo a passo como fazê-lo:
https://www.mapbox.com/tilemill/docs/guides/joining-data/
http://maps.cga.harvard.edu/qgis/wkshop/join_csv.php
http://qgis.spatialthoughts.com/2012/03/using-tabular-data-in-qgis.html
Como associar tabelas externas à tabela de atributos de um shapefile no QGIS?
http://www.digital-geography.com/qgis-tutorial-ii-how-to-join-data-with-shapefiles/#.Vs9vpmHXKUk
e o tutorial que o ArMoraer mencionou nos comentários.
fonte
Apenas para adicionar outro método, você pode configurar uma macro do Project que, quando carregada:
IP1
eIP2
Primeiro, crie um projeto se você ainda não o fez e vá para a barra de ferramentas:
Projeto> Propriedades do Projeto ...> Macros
Em seguida, use o seguinte código na
def openProject():
função e insira os nomes das suas camadas e os campos que você deseja unir. Eu usei "Example" e "spreadsheet" para meus arquivos shapefile e csv respectivamente com o campoID
:Verifique se as camadas não estão unidas, salve o projeto e ative as macros acessando a barra de ferramentas:
Configurações> Geral> Ativar macros
Agora, quando você fecha o projeto e edita o arquivo csv, na próxima vez que carregar o projeto, os campos devem ser atualizados automaticamente:
fonte
Minha sugestão é usar o LibreOffice / Open Office de código aberto para editar seu arquivo do Excel e criar um arquivo .dbf. Eu preparei a pasta de trabalho de teste para você. Pasta de trabalho de teste - link
Tabela de resultados sem duplicatas no QGIS:
fonte
Por que os campos vazios estão lá para começar? Você pode começar sem os campos vazios e apenas usar as duas colunas produzidas na junção? Eu acho que essa é a abordagem mais simples. Ou encontre uma ferramenta semelhante à ferramenta "Load" no ArcGIS.
https://desktop.arcgis.com/en/arcmap/latest/extensions/production-mapping/loading-data-into-a-geodatabase.htm
Se você não estiver usando um geodatabase, eu recomendo isso.
fonte
Eu não sei se existe uma maneira direta de ingressar sem duplicado, já que o suporte a arquivos .shp é atribuído por .DBF (arquivo de banco de dados). Este DBF possui uma declaração do tipo de coluna como inteiro, real, string, etc., com detalhes de seu comprimento e precisão. O arquivo CSV possui apenas coluna normal sem nenhum tipo declarado. Não sei o tamanho do seu arquivo. Para mim, manterei os campos duplicados e, em seguida, usando o caluclator de campo com a fórmula geral:
Em seguida, exclua todos os campos duplicados (por meio do QGIS ou do programa de banco de dados)
fonte
Acredito que a maneira mais fácil de corrigir isso seria simplesmente excluir as duas colunas em questão na tabela QGIS antes da junção. Então, quando você ingressar no shapefile, as duas colunas desejadas não serão duplicadas e manterão seus nomes originais.
fonte