Ajouter des données d'attributs à un fichier de formes?

33

Je peux afficher un fichier de formes en couches ouvertes, mais je dois ajouter des données d'attributs.

Je peux ouvrir le fichier dbf dans Excel, mais il n’existe aucune option de sauvegarde en tant qu'excellent dans le fichier mis à jour en tant que fichier dbf.

Quel est le meilleur moyen (ou logiciel à utiliser) d'ajouter des données d'attribut à mon fichier de formes?

ChrisJ
la source
Retournez à une version antérieure d'Excel: MS supprimait la possibilité d'écrire des fichiers .dbf avec sa dernière version! :-(
whuber
4
Open office et Quattro Pro peuvent éditer et enregistrer des fichiers dbf, il suffit de ne pas supprimer de lignes ni de déplacer des éléments, sinon le fichier d'index ne permettra pas que les éléments correspondent. Utilisez un gis commercial ou open source pour ces tâches, la modification des valeurs des cellules ne devrait poser aucun problème
Bien!!! Et j'ai trouvé ma question trop simple pour ce site !! Je n'ai pas eu la chance d'essayer ces suggestions car j'ai en quelque sorte mis à sac mon logiciel de géoserveur et mes logiciels postgres ... :-( Donc, une fois que je récupère ma boîte Linux à 100%, je vais vérifier toutes les suggestions. Merci d'avoir pris le temps de répondre chris
ChrisJ

Réponses:

23

En utilisant QGIS, vous pouvez modifier votre fichier de formes en ajoutant de nouvelles colonnes et de nouvelles valeurs. Ouvrez simplement le fichier de formes, allez dans Propriétés> Attributs et ajoutez de nouvelles colonnes.

Dans les versions plus récentes de QGIS (2.x), "Attributs" est appelé "Champs".

doktoreas
la source
Je ne pensais pas utiliser QGIS car sur ma machine Linux, il se bloque lorsque je clique sur "Fetch python plugin". Quelqu'un sait s'il existe un correctif pour cela? En attendant, je vais essayer d'ajouter les attributs avec une version veuves.
ChrisJ
Vous pouvez essayer de résoudre le problème de la manière décrite par Richard: osgeo-org.1803224.n2.nabble.com/…
underdark
QGIS vous permet d'ajouter de nouvelles colonnes, mais le remplissage de la nouvelle colonne avec des données semble être une opération point-clic-entrée - vraiment inefficace! Je suggère d'utiliser R comme dans la réponse de mdsummer ci-dessous.
Baha-kev
@ baha-kev Pourquoi serait-ce juste un clic-point-entrée? Ne pourriez-vous pas faire quelque chose comme ce tutoriel?
ocean800
1
Dans QGIS 3.2.1, il se trouve dans le menu contextuel des couches> "Propriétés ..."> catégorie "Champs source" dans la boîte de dialogue.
andw
23

Utilisez Ravec le foreignpackage pour modifier le fichier 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 lisez la géométrie et les données d'attribut avec le rgdalpackage (pour pouvoir également modifier les relations et créer un nouveau fichier de formes):

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
la source
4

Je ne recommanderais pas d'utiliser OpenOffice - ou une application similaire - du tout! Darren Cope a commenté une réponse à la question " Création et manipulation de DBF sans Excel 2003 " a déclaré:

c'est que les fichiers de formes s'énervent beaucoup si vous éditez le fichier .dbf dans un programme 'extérieur'

Dariapra
la source
3
ce n'est pas forcément vrai: j'ai modifié de nombreux fichiers de formes dans OpenOffice et Excel sans problème: il vous suffit de connaître les limites du format (longueur des noms de colonne, types de données, etc.).
scw
@scw: pouvez-vous donner des liens vers des informations sur les limitations de format?
LarsH
2
Les contraintes spécifiques varient en fonction de l'utilisation du format par le logiciel, mais les restrictions les plus simples sont les suivantes: noms de champs de 11 caractères, pas de caractères spéciaux ni d'espaces dans les noms de champs, et s'en tenir aux types de données de base des fichiers DBF (et non à des mots ésotériques tels que 'memo' des champs). Pour plus de détails, voir shapefile.py , l’ API DBF de shapelib ou ce livre sur xbase .
scw
4

J'ai fusionné plusieurs fichiers de formes à l'aide de MS Access. J'avais besoin de laisser joindre des données d'autres fichiers de formes et cela fonctionnait assez bien. Aussi c'était rapide. Cependant, je suppose que tout le monde n’a pas ce logiciel

Mykolas Simutis
la source
1
J'utilise Access ou une autre forme de SQL pour manipuler des données, généralement. Cela me semble beaucoup plus facile d’exécuter quelques requêtes. Comme mentionné précédemment, il suffit de regarder l'évolution du format de la base de données, ce qui est mieux géré dans le logiciel SIG actuel.
MaryBeth
2

Utiliser QGIS est agréable et fournit une interface solide pour interagir avec le DBF, mais si vous avez besoin de faire quelque chose par programme ou si vous voulez juste des outils pour inspecter les fichiers de formes, je pensais mentionner quelques autres outils: J'utilise souvent les fonctionnalités de base de shapelib pour l'examen des fichiers DBF: il peut ajouter, créer et modifier des géométries et des attributs, que j'utilise souvent dbfdump myshape.dbfpour obtenir un aperçu rapide des valeurs d'attribut.

Une autre option si vous êtes intéressé par le contrôle par programme d'un DBF est dbfpy , une bibliothèque python (une alternative à la belle foreignbibliothèque mentionnée par mdsummer). Un exemple de script pour ajouter une colonne:

import dbfpy

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

db.close()
scw
la source
2

Comme Andy l’a souligné dans le lien que DARIAPRA vous a référé, il existe un fichier Excel 2007 ADD-IN qui pourrait vous être utile - il vous permet d’enregistrer le format dbf.Vous le trouverez sur ce site Web:

http://savedbf.blogspot.com/

(Comme j'ai Excel 2003, je ne l'ai jamais essayé, mais j'ai entendu dire que c'était utile.

En ce qui concerne la manipulation de DBF en dehors d'ArcGIS - je l'ai déjà fait plusieurs fois. Parfois cela fonctionne, parfois non. Mes deux cents: Si vous pouvez éviter les manipulations extérieures, évitez-les. Si vous utilisez une langue autre que l'anglais, évitez-la complètement - elle a tendance à être complètement égarée lors de l'édition en dehors d'ArcGIS).

jonatr
la source
2

Alternativement:

  1. ouvrir le dbf dans MS Excel 2007/10
  2. Effectuez vos modifications (ajout de colonnes, remplissage de données, etc.) et enregistrez-les sous xls / xlsx
  3. Accédez à l'emplacement xls / xlsx dans ArcCatalog, cliquez avec le bouton droit sur la feuille de calcul et choisissez Exporter> Vers dBase (unique).
  4. Renommez le fichier dbf de sortie selon vos besoins
veedub
la source
2

J'utilise habituellement R (check mdsomners answer), mais je ne recommanderais pas d'apprendre que si c'est la seule chose que vous voulez faire. Je pense que la meilleure approche serait d’utiliser un programme SIG pour créer les champs, puis d’essayer de les éditer en utilisant openoffice.

Plus important encore, vous devez penser si vous devez modifier directement tous les champs de la table attributaire ou si vous pouvez y joindre d'autres tables. Ce dernier peut être fait dans la plupart des programmes SIG, par exemple SAGA GIS

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

johanvdw
la source
D'accord. Chaque fois que j'ajoute / modifie des données, je me demande s'il existe un moyen plus simple.
MaryBeth
1

Open Office Calc vous permet de lire et d’écrire des fichiers DBF. Mais la solution de Lcasagrande utilisant QGIS devrait être plus sûre.

sous-bois
la source