¿Agregar datos de atributos al shapefile?

33

Puedo mostrar un archivo de formas en capas abiertas, pero necesito agregar algunos datos de atributos.

Puedo abrir el archivo dbf en excel pero no hay una opción para guardar como excel en el archivo actualizado como dbf.

¿Cuál es la mejor manera (o software para usar) de agregar datos de atributos a mi shapefile?

ChrisJ
fuente
Regrese a una versión anterior de Excel: ¡MS eliminó la capacidad de escribir archivos .dbf con su última versión! :-(
whuber
44
Open Office y Quattro Pro pueden editar y guardar archivos dbf, simplemente no elimine filas ni mueva cosas, de lo contrario el archivo de índice no permitirá que las cosas coincidan. Utilice un gis comercial o de código abierto para estas tareas, la edición de valores de celda no debería causar ningún problema
¡¡¡Bien!!! ¡Y pensé que mi pregunta era demasiado simple para este sitio! No he tenido la oportunidad de probar ninguna de las sugerencias porque de alguna manera destruí mi software geoserver y postgres ... :-( Así que una vez que recupere mi caja de Linux al 100%, veré todas las sugerencias Gracias por tomar el momento de responder Chris
ChrisJ

Respuestas:

23

Con QGIS puede editar su archivo de forma agregando nuevas columnas y valores. Simplemente abra el archivo de forma, vaya a Propiedades> Atributos y agregue nuevas columnas.

En las versiones más recientes de QGIS (2.x), 'Atributos' se llama 'Campos'

doktoreas
fuente
No pensé en usar QGIS porque en mi caja de Linux (Copiapo) se bloquea cuando hago clic en "Fetch python plugin". Alguien sabe si hay una solución para esto? Mientras tanto, intentaré agregar los atributos con una versión de viudas.
ChrisJ
Podría intentar depurar el problema de la manera en que Richard lo describe aquí: osgeo-org.1803224.n2.nabble.com/…
underdark
QGIS le permite agregar nuevas columnas, pero llenar la nueva columna con datos parece ser hacer clic con el botón de entrar, ¡realmente ineficiente! Sugiero usar R como en la respuesta de mdsummer a continuación.
baha-kev
@ baha-kev ¿Por qué solo sería clic-punto-enter? ¿No podrías hacer algo como este tutorial?
ocean800
1
En QGIS 3.2.1 se encuentra en el menú contextual de la capa> 'Propiedades ...'> categoría 'Campos de origen' en la ventana de diálogo.
andw
23

Use Rcon el foreignpaquete para modificar el archivo 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")

O lea la geometría y los datos de atributos con el rgdalpaquete (para que también pueda modificar las relaciones y crear un archivo de forma completamente nuevo):

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
fuente
4

¡No recomendaría usar OpenOffice, o una aplicación similar, en absoluto! Darren Cope comentando una respuesta a la pregunta " Creación y manipulación de DBF sin excel 2003 " dijo:

es que los archivos de forma se alteran bastante si vas y editas el .dbf en un programa 'externo'

dariapra
fuente
3
esto no es necesariamente cierto: he editado muchos archivos de forma en OpenOffice y Excel sin problemas: solo debe tener en cuenta las limitaciones del formato (longitudes de nombre de columna, tipos de datos, etc.).
scw
@scw: ¿puedes dar algún enlace a información sobre las limitaciones de formato?
LarsH
2
Las restricciones específicas varían según el uso del formato del software en particular, pero las restricciones más simples son: nombres de campo de 11 caracteres, sin caracteres especiales o espacios en los nombres de campo, y se adhieren a los tipos de datos centrales de los archivos DBF (no cosas esotéricas como 'memo' campos). Para obtener más detalles, consulte shapefile.py , la API shapelib DBF o este tomo en xbase .
scw
4

He fusionado varios archivos de forma usando MS Access. Necesitaba unir algunos datos de otro shapefile y funcionó bastante bien. También fue rápido. Sin embargo, supongo que no todos tienen este software

Mykolas Simutis
fuente
1
Utilizo Access o alguna otra forma de SQL para manipular datos, por lo general. Simplemente me parece mucho más fácil ejecutar algunas consultas. Como se mencionó anteriormente, solo tiene que observar el cambio del formato real de la base de datos, esto es algo que se maneja mejor en el software SIG real.
MaryBeth
2

Usar QGIS es bueno y proporciona una interfaz sólida para interactuar con el DBF, pero si necesita hacer algo mediante programación o simplemente quiere herramientas para inspeccionar los archivos de forma, pensé que mencionaría algunas otras herramientas: a menudo uso las características básicas de shapelib para examinar archivos DBF: puede agregar, crear y modificar geometrías y atributos, a menudo uso dbfdump myshape.dbfpara obtener una visión general rápida de los valores de los atributos.

Otra opción si está interesado en el control programático de un DBF es dbfpy , una biblioteca de python (una alternativa a la buena foreignbiblioteca que menciona mdsummer). Un script de ejemplo para agregar una columna:

import dbfpy

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

db.close()
scw
fuente
2

Como Andy señaló en el enlace al que se refería DARIAPRA, hay un ADD-IN de Excel 2007 que puede resultarle útil: le permite guardar en formato dbf. Puede encontrarlo en este sitio web:

http://savedbf.blogspot.com/

(Como tengo Excel 2003, nunca lo he probado, pero escuché que era útil.

En cuanto a la manipulación de DBF fuera de ArcGIS, lo he hecho varias veces. A veces funciona, a veces no. Mis dos centavos: si puedes evitar la manipulación exterior, evítala. Si está tratando con un idioma que no es inglés, evítelo por completo: tiende a confundirse cuando se edita fuera de ArcGIS).

jonatr
fuente
2

Alternativamente:

  1. abra el dbf en MS Excel 2007/10
  2. Realice sus cambios (agregando columnas, rellenando datos, etc.) y guárdelos como xls / xlsx
  3. Navegue a la ubicación xls / xlsx en ArcCatalog, haga clic con el botón derecho en la hoja de trabajo y seleccione Exportar> A dBase (único)
  4. Cambie el nombre del archivo dbf de salida según sea necesario
veedub
fuente
2

Usualmente uso R (verifique la respuesta de mdsomners), pero no recomendaría aprender eso si eso es lo único que quiere hacer. Creo que el mejor enfoque sería usar un programa SIG, para crear los campos, y luego intentar editarlos usando openoffice.

Más importante aún, debe pensar si necesita editar todos los campos de la tabla de atributos directamente, o si puede unir otras tablas a ella. Esto último se puede hacer en la mayoría de los programas SIG, por ejemplo, SAGA GIS

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

johanvdw
fuente
Convenido. Cada vez que agrego / cambio datos, me pregunto si hay una manera más fácil.
MaryBeth
1

Open Office Calc le permite leer y escribir archivos dbf. Pero la solución de Lcasagrande con QGIS debería ser más segura.

bajo oscuro
fuente