Aggiunta dei dati degli attributi a shapefile?


33

Posso visualizzare uno shapefile in openlayer ma devo aggiungere alcuni dati di attributo.

Posso aprire il file dbf in Excel ma non esiste alcuna opzione di salvataggio come in Excel nel file aggiornato come dbf.

Qual è il modo migliore (o software da utilizzare) per aggiungere dati di attributo al mio shapefile?


Torna a una versione precedente di Excel: MS ha rimosso la possibilità di scrivere file .dbf con la sua ultima versione! :-(
whuber

4
Open Office e Quattro Pro possono modificare e salvare i file dbf, semplicemente non eliminare le righe o spostare le cose altrimenti il ​​file indice non permetterà che le cose si abbinino. Utilizzare un gis commerciale o open source per queste attività, la modifica dei valori delle celle non dovrebbe causare problemi

Bene!!! E ho pensato che la mia domanda fosse troppo semplice per questo sito !! Non ho avuto la possibilità di provare nessuno dei suggerimenti perché in qualche modo ho cestinato il mio software geoserver e postgres ... :-( Quindi una volta che torno la mia scatola di Linux al 100%, darò un'occhiata a tutti i suggerimenti Grazie per aver preso il tempo di rispondere a chris
ChrisJ l'

Risposte:


23

Usando QGIS puoi modificare il tuo shapefile aggiungendo nuove colonne e valori. Basta aprire lo shapefile, andare su Proprietà> Attributi e aggiungere nuove colonne.

Nelle versioni più recenti di QGIS (2.x), "Attributi" è chiamato "Campi"


Non pensavo di usare QGIS perché sul mio Linux box (Copiapo) si arresta in modo anomalo quando faccio clic su "Scarica plugin Python". Qualcuno sa se c'è una soluzione per questo? Nel frattempo proverò ad aggiungere gli attributi con una versione di vedove.
ChrisJ,

Si potrebbe provare a eseguire il debug del problema il modo in cui Richard descrive qui: osgeo-org.1803224.n2.nabble.com/...
Sottosuolo

QGIS ti consente di aggiungere nuove colonne, ma il popolamento della nuova colonna con i dati sembra essere point-click-enter - davvero inefficiente! Suggerisco di usare R come nella risposta di mdsummer di seguito.
baha-kev,

@ baha-kev Perché dovrebbe essere solo click-point-enter? Non potresti semplicemente fare qualcosa come questo tutorial?
ocean800,

1
In QGIS 3.2.1 si trova nel menu di scelta rapida dei livelli> "Proprietà ..."> Categoria "Campi sorgente" nella finestra di dialogo.
Andw

23

Utilizzare Rcon il foreignpacchetto per modificare il file 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")

Oppure leggi la geometria e i dati degli attributi con il rgdalpacchetto (in modo da poter modificare anche le relazioni e creare uno shapefile completamente nuovo):

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")  

4

Non consiglierei affatto di usare OpenOffice - o un'applicazione simile! Darren Cope commentando una risposta alla domanda " Creazione e manipolazione di DBF senza Excel 2003 " ha dichiarato:

è che gli shapefile si arrabbiano abbastanza se vai e modifichi il .dbf in un programma 'esterno'


3
questo non è necessariamente vero: ho modificato molti shapefile in OpenOffice ed Excel senza problemi: devi solo essere consapevole dei limiti del formato (lunghezza dei nomi delle colonne, tipi di dati, ecc.).
scw

@scw: puoi fornire collegamenti a informazioni sui limiti di formato?
LarsH,

2
I vincoli specifici variano in base all'utilizzo del formato da parte del software specifico, ma le restrizioni più semplici sono: 11 nomi di campi di caratteri, nessun carattere speciale o spazio nei nomi di campo e attenersi ai tipi di dati principali dei file DBF (non cose esoteriche come 'memo' campi). Per maggiori dettagli, vedi shapefile.py , l' API DBF di shapelib o questo tomo su xbase .
scw,

4

Ho unito diversi shapefile usando MS Access. Avevo bisogno di lasciare alcuni dati provenienti da altri shapefile e funzionava abbastanza bene. Inoltre è stato veloce. Tuttavia, credo che non tutti abbiano questo software


1
Uso Access o qualche altra forma di SQL per manipolare i dati, di solito. Mi sembra molto più semplice eseguire alcune query. Come accennato in precedenza, devi solo guardare il cambiamento del formato del database effettivo, questo è qualcosa che è meglio gestito nel software GIS attuale.
MaryBeth,

2

L'uso di QGIS è utile e fornisce un'interfaccia solida per interagire con DBF, ma se hai bisogno di fare qualcosa a livello di programmazione o desideri semplicemente strumenti per ispezionare i file di forma, ho pensato di menzionare alcuni altri strumenti: utilizzo spesso le funzionalità di base di shapelib per l'esame dei file DBF: può aggiungere, creare e modificare sia geometrie che attributi, che uso spesso dbfdump myshape.dbfper avere una rapida panoramica dei valori degli attributi.

Un'altra opzione se sei interessato al controllo programmatico di un DBF è dbfpy , una libreria python (un'alternativa alle belle foreignlibrerie menzionate da mdsummer). Uno script di esempio per l'aggiunta di una colonna:

import dbfpy

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

db.close()

2

come ha sottolineato Andy nel link a cui si è riferita DARIAPRA, c'è un ADD-IN Excel 2007 che potresti trovare utile - Ti consente di salvare nel formato dbf. Puoi trovarlo su questo sito:

http://savedbf.blogspot.com/

(Dato che ho Excel 2003, non l'ho mai provato, ma ho sentito che era utile.

Per quanto riguarda la manipolazione di DBF al di fuori di ArcGIS, l'ho fatto alcune volte. A volte funziona, a volte no. I miei due centesimi: se riesci a evitare la manipolazione esterna, evitala. Se hai a che fare con una lingua non inglese evitala del tutto - Tende a confondersi quando si modifica al di fuori di ArcGIS).


2

In alternativa:

  1. aprire il dbf in MS Excel 2007/10
  2. Apporta le modifiche (aggiungendo colonne, popolando i dati ecc.) E salva come xls / xlsx
  3. Passa alla posizione xls / xlsx in ArcCatalog, fai clic con il pulsante destro del mouse sul foglio di lavoro e scegli Esporta> In dBase (singolo)
  4. Rinominare il file dbf di output come richiesto


2

Di solito uso R (controlla la risposta di mdsomners), ma non consiglierei di imparare che se questa è l'unica cosa che vuoi fare. Penso che l'approccio migliore sarebbe usare un programma GIS, per creare i campi e quindi provare a modificarli usando openoffice.

Ancora più importante, dovresti pensare se devi modificare direttamente tutti i campi della tabella degli attributi o se puoi unirti ad altre tabelle. Quest'ultimo può essere fatto nella maggior parte dei programmi GIS, ad esempio SAGA GIS

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


Concordato. Ogni volta che aggiungo / cambio dati, mi chiedo se esiste un modo più semplice.
MaryBeth,

1

Open Office Calc consente di leggere e scrivere file dbf. Ma la soluzione di Lcasagrande con QGIS dovrebbe essere più sicura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.