Adicionando dados de atributo ao shapefile?

33

Posso exibir um shapefile em openlayers, mas preciso adicionar alguns dados de atributo.

Posso abrir o arquivo dbf no excel, mas não há opção salvar no excel para o arquivo atualizado como um dbf.

Qual é a melhor maneira (ou software a ser usado) para adicionar dados de atributo ao meu shapefile?

ChrisJ
fonte
Volte para uma versão anterior do Excel: o MS removeu a capacidade de gravar arquivos .dbf com sua versão mais recente! :-(
whuber
4
O Open Office e o Quattro Pro podem editar e salvar arquivos dbf, apenas não exclua linhas ou mova coisas, caso contrário, o arquivo de índice não permitirá que as coisas correspondam. Use um gis comercial ou open source para estas tarefas, a edição de valores de célula deve causar nenhum problema
Bem!!! E eu pensei que minha pergunta era simples demais para este site !! Não tive a chance de tentar nenhuma das sugestões, porque de alguma forma destruí meus softwares geoserver e postgres ... :-( Então, quando eu voltar a minha caixa do linux para 100%, vou verificar todas as sugestões Obrigado por aceitar o tempo para responder chris
ChrisJ

Respostas:

23

Usando o QGIS, você pode editar seu shapefile adicionando novas colunas e valores. Basta abrir o shapefile, vá em Propriedades> Atributos e adicione novas colunas.

Nas versões mais recentes do QGIS (2.x), 'Atributos' é chamado 'Campos'

doktoreas
fonte
Não pensei em usar o QGIS porque, na minha caixa do Linux, ele (Copiapo) trava quando clico em "Buscar o plugin python". Alguém sabe se existe uma correção para isso? Enquanto isso, tentarei adicionar os atributos com uma versão de viúva.
ChrisJ
Você pode tentar depurar o problema da maneira que Richard descreve aqui: osgeo-org.1803224.n2.nabble.com/…
underdark
O QGIS permite adicionar novas colunas, mas o preenchimento da nova coluna com dados parece apontar-clicar-entrar - realmente ineficiente! Sugiro usar R como na resposta do mdsummer abaixo.
baha-kev 23/02/12
@ baha-kev Por que seria apenas clicar no ponto de entrada? Você não poderia simplesmente fazer algo parecido com este tutorial?
ocean800
1
No QGIS 3.2.1, ele está localizado no menu de contexto da camada> 'Propriedades ...'> categoria 'Campos de origem' na janela de diálogo.
andw 27/07
23

Use Rcom o foreignpacote para modificar o arquivo DBF:

library(foreign)
dbfdata <- read.dbf("file.dbf", as.is = TRUE)
## add new attribute data (just the numbers 1 to the number of objects)
dbfdata$new.att <- 1:nrow(dbfdata)

## overwrite the file with this new copy
write.dbf(dbfdata, "file.dbf")

Ou leia a geometria e atribua os dados com o rgdalpacote (para que você também possa modificar os relacionamentos e criar um arquivo shapefile completamente novo):

library(rgdal)
## read "/path/to/files/filename.shp"
shp <- readOGR("/path/to/files/", "filename")  

## add new attribute data (just the numbers 1 to the number of objects)
shp$new.att <- 1:nrow(shp)

## write out to a new shapefile
writeOGR(shp, "/path/to/files/", "filename2")  
mdsumner
fonte
4

Eu não recomendaria o uso do OpenOffice - ou de um aplicativo semelhante -! Darren Cope comentando uma resposta à pergunta " Criação e manipulação de DBF sem o Excel 2003 " disse:

é que os shapefiles ficam bastante chateados se você editar o .dbf em um programa 'externo'

dariapra
fonte
3
isso não é necessariamente verdade: editei muitos shapefiles no OpenOffice e Excel sem problemas: você só precisa estar ciente das limitações do formato (tamanho dos nomes das colunas, tipos de dados, etc.).
ACS
@scw: você pode fornecer links para informações sobre as limitações de formato?
precisa saber é
2
As restrições específicas variam de acordo com o uso do formato pelo software específico, mas as restrições mais simples são: 11 nomes de campos de caracteres, sem caracteres especiais ou espaços nos nomes de campos, e se ater aos tipos de dados principais dos arquivos DBF (não coisas esotéricas como 'memorando' Campos). Para mais detalhes, consulte shapefile.py , a API DBF do shapelib ou este tomo no xbase .
ACS
4

Mesclei vários shapefiles usando o MS Access. Eu precisava juntar alguns dados de outro shapefile e funcionou muito bem. Também foi rápido. No entanto, acho que nem todo mundo tem esse software

Mykolas Simutis
fonte
1
Eu uso o Access ou alguma outra forma de SQL para manipular dados, normalmente. Parece-me muito mais fácil executar algumas consultas. Como mencionado anteriormente, você só precisa observar a alteração do formato real do banco de dados; isso é algo que é melhor tratado no software GIS real.
21711 MaryBeth
2

Usar o QGIS é bom e fornece uma interface sólida para interagir com o DBF, mas se você precisar fazer algo programaticamente ou apenas desejar ferramentas para inspecionar os shapefiles, pensei em mencionar algumas outras ferramentas: costumo usar os recursos básicos de shapelib para examinar arquivos DBF: ele pode adicionar, criar e modificar geometrias e atributos que costumo usar dbfdump myshape.dbfpara obter uma visão geral rápida dos valores dos atributos.

Outra opção se você estiver interessado no controle programático de um DBF é o dbfpy , uma biblioteca python (uma alternativa às boas foreignbibliotecas mencionadas pelo mdsummer). Um script de exemplo para adicionar uma coluna:

import dbfpy

db = dbf.Dbf("myshape.dbf", new=False)
# add a new character field named 'myfield'
db.addField(("myfield", "C", 15))

db.close()
scw
fonte
2

como andy apontou no link indicado pelo DARIAPRA, existe um ADD-IN do Excel 2007 que você pode achar útil - Permite salvar no formato dbf. você pode encontrá-lo neste site:

http://savedbf.blogspot.com/

(Como eu tenho o Excel 2003, nunca tentei, mas ouvi dizer que era útil.

Quanto à manipulação de DBF fora do ArcGIS - já o fiz algumas vezes. Às vezes funciona, às vezes não. Meus dois centavos: se você puder evitar a manipulação externa, evite-a. Se você estiver lidando com um idioma que não seja o inglês, evite-o completamente - ele tende a se atrapalhar ao editar fora do ArcGIS).

jonatr
fonte
2

Alternativamente:

  1. abra o dbf no MS Excel 2007/10
  2. Faça as alterações (adicionando colunas, preenchendo dados etc.) e salve como xls / xlsx
  3. Navegue para o local xls / xlsx no ArcCatalog, clique com o botão direito do mouse na planilha e escolha Exportar> Para dBase (único)
  4. Renomeie o arquivo dbf de saída, conforme necessário
veedub
fonte
2

Eu costumo usar R (verifique a resposta do mdsomners), mas eu não recomendaria aprender isso se essa é a única coisa que você deseja fazer. Eu acho que a melhor abordagem seria usar um programa GIS, para criar os campos e tente editá-los usando o openoffice.

Mais importante, você deve pensar se precisa editar todos os campos diretamente na tabela de atributos ou se pode associar outras tabelas a ela. Este último pode ser feito na maioria dos programas GIS, por exemplo, SAGA GIS

http://www.saga-gis.org/saga_modules_doc/shapes_tools/index.html

johanvdw
fonte
Acordado. Toda vez que adiciono / altero dados, pergunto-me se existe uma maneira mais fácil.
21411 MaryBeth
1

O Open Office Calc permite ler e gravar arquivos dbf. Mas a solução de Lcasagrande usando QGIS deve ser mais segura.

underdark
fonte