Menambahkan data atribut ke shapefile?

33

Saya dapat menampilkan sebuah shapefile di openlayers tetapi saya perlu menambahkan beberapa data atribut.

Saya dapat membuka file dbf di excel tetapi tidak ada opsi save as di excel ke file yang diperbarui sebagai dbf.

Apa cara terbaik (atau perangkat lunak untuk digunakan) untuk menambahkan data atribut ke shapefile saya?

ChrisJ
sumber
Kembali ke versi Excel yang lebih lama: MS menghapus kemampuan untuk menulis file .dbf dengan versi terbarunya! :-(
whuber
4
Open office dan Quattro Pro dapat mengedit dan menyimpan file dbf, hanya saja jangan menghapus baris atau memindahkan barang-barang jika tidak file indeks tidak akan membiarkan hal-hal yang cocok. Gunakan gis komersial atau sumber terbuka untuk tugas-tugas ini, mengedit nilai sel seharusnya tidak menyebabkan masalah
Baik!!! Dan saya pikir pertanyaan saya terlalu sederhana untuk situs ini !! Saya belum punya kesempatan untuk mencoba salah satu saran karena saya entah bagaimana menghancurkan perangkat lunak geoserver dan postgres saya ... :-( Jadi begitu saya mendapatkan kotak linux saya kembali ke 100% saya akan mendapatkan memeriksa semua saran Terima kasih telah mengambil waktu untuk membalas chris
ChrisJ

Jawaban:

23

Menggunakan QGIS Anda dapat mengedit shapefile Anda dengan menambahkan kolom dan nilai baru. Cukup buka shapefile, pergi ke Properties> Attributes dan tambahkan kolom baru.

Dalam versi QGIS (2.x) yang lebih baru, 'Atribut' disebut 'Fields'

doktoreas
sumber
Saya tidak berpikir untuk menggunakan QGIS karena pada kotak Linux saya (Copiapo) macet ketika saya mengklik "Ambil plugin python". Adakah yang tahu jika ada perbaikan untuk ini? Sementara itu saya akan mencoba menambahkan atribut dengan versi janda.
ChrisJ
Anda dapat mencoba men-debug masalah seperti yang dijelaskan Richard di sini: osgeo-org.1803224.n2.nabble.com/…
underdark
QGIS memungkinkan Anda untuk menambah kolom baru, tetapi mengisi kolom baru dengan data tampaknya menjadi klik-klik-masuk - benar-benar tidak efisien! Saya sarankan menggunakan R seperti pada jawaban mdsummer di bawah ini.
baha-kev
@ baha-kev Mengapa hanya klik-titik-masuk? Tidak bisakah Anda melakukan sesuatu seperti tutorial ini ?
ocean800
1
Dalam QGIS 3.2.1 terletak di menu konteks lapisan> 'Properti ...'> Kategori 'Bidang Sumber' di jendela dialog.
andw
23

Gunakan Rdengan foreignpaket untuk memodifikasi 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")

Atau baca geometri dan data atribut dengan rgdalpaket (sehingga Anda dapat memodifikasi hubungan juga dan membuat shapefile yang sama sekali baru):

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

Saya tidak akan merekomendasikan menggunakan OpenOffice - atau aplikasi serupa - sama sekali! Darren Cope mengomentari jawaban atas pertanyaan " Penciptaan dan manipulasi DBF tanpa excel 2003 " mengatakan:

itu karena shapefile menjadi sangat kesal jika Anda pergi dan mengedit .dbf di program 'luar'

dariapra
sumber
3
ini belum tentu benar: Saya telah mengedit banyak shapefile di OpenOffice dan Excel tanpa masalah: Anda hanya perlu menyadari keterbatasan format (panjang nama kolom, tipe data, dan lain-lain).
scw
@scw: dapatkah Anda memberikan tautan ke informasi tentang batasan format?
LarsH
2
Kendala spesifik bervariasi berdasarkan penggunaan format perangkat lunak tertentu, tetapi pembatasan paling sederhana adalah: 11 nama bidang karakter, tidak ada karakter khusus atau spasi dalam nama bidang, dan berpegang teguh pada tipe data inti dari file DBF (bukan hal esoteris seperti 'memo' bidang). Untuk detail lebih lanjut, lihat shapefile.py , API DBF shapelib atau buku tebal ini di xbase .
scw
4

Saya telah menggabungkan beberapa shapefile menggunakan MS Access. Saya perlu meninggalkan beberapa data dari shapefile lain dan itu bekerja dengan cukup baik. Itu juga cepat. Namun saya kira tidak semua orang memiliki perangkat lunak ini

Mykolas Simutis
sumber
1
Saya menggunakan Access atau bentuk lain dari SQL untuk memanipulasi data, biasanya. Sepertinya jauh lebih mudah bagi saya untuk menjalankan beberapa pertanyaan. Seperti disebutkan sebelumnya, Anda hanya perlu menonton perubahan format database aktual, ini adalah sesuatu yang paling baik ditangani dalam perangkat lunak GIS yang sebenarnya.
MaryBeth
2

Menggunakan QGIS itu bagus, dan menyediakan antarmuka yang solid untuk berinteraksi dengan DBF, tetapi jika Anda perlu melakukan sesuatu secara terprogram atau hanya ingin alat untuk memeriksa shapefile, saya pikir saya akan menyebutkan beberapa alat lain: Saya sering menggunakan fitur dasar dari shapelib untuk memeriksa file DBF: dapat menambah, membuat, dan memodifikasi baik geometri dan atribut, saya sering gunakan dbfdump myshape.dbfuntuk mendapatkan gambaran umum cepat dari nilai atribut.

Pilihan lain jika Anda tertarik pada kontrol terprogram DBF adalah dbfpy , pustaka python (sebuah alternatif untuk foreignpustaka mdsummer yang bagus menyebutkan). Contoh skrip untuk menambahkan kolom:

import dbfpy

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

db.close()
scw
sumber
2

seperti yang ditunjukkan Andy di tautan DARIAPRA yang mengarahkan Anda, ada tambahan Excel 2007 yang mungkin berguna bagi Anda - Ini memungkinkan Anda untuk menyimpan dalam format dbf. Anda dapat menemukannya di situs web ini:

http://savedbf.blogspot.com/

(Seperti yang saya punya Excel 2003, saya belum pernah mencobanya, tapi saya dengar itu berguna.

Adapun manipulasi DBF di luar ArcGIS - Saya sudah melakukannya beberapa kali. Terkadang berhasil, kadang tidak. Dua sen saya: Jika Anda dapat menghindari manipulasi luar, hindari. Jika Anda berhadapan dengan bahasa non-Inggris, hindarilah sama sekali - Ini cenderung membuat semua bingung ketika mengedit di luar ArcGIS).

Jonatr
sumber
2

Kalau tidak:

  1. buka dbf di MS Excel 2007/10
  2. Buat perubahan Anda (menambahkan kolom, mengisi data dll) dan simpan sebagai xls / xlsx
  3. Arahkan ke lokasi xls / xlsx di ArcCatalog, klik kanan lembar kerja dan pilih Ekspor> Ke dBase (tunggal)
  4. Ganti nama file output dbf sesuai kebutuhan
veedub
sumber
2

Saya biasanya menggunakan R (periksa jawaban mdsomners), tetapi saya tidak akan merekomendasikan mempelajari bahwa jika itu adalah satu-satunya hal yang ingin Anda lakukan. Saya pikir pendekatan terbaik akan menggunakan program GIS, untuk membuat bidang, dan kemudian mencoba mengeditnya menggunakan openoffice.

Lebih penting lagi, Anda harus berpikir apakah Anda perlu mengedit semua bidang tabel atribut secara langsung, atau jika Anda dapat bergabung dengan tabel lain. Yang terakhir dapat dilakukan di sebagian besar program GIS, misalnya SAGA GIS

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

johanvdw
sumber
Sepakat. Setiap kali saya menambah / mengubah data, saya bertanya-tanya apakah ada cara yang lebih mudah.
MaryBeth
1

Open Office Calc memungkinkan Anda membaca dan menulis file dbf. Tetapi solusi Lcasagrande menggunakan QGIS harus lebih aman.

underdark
sumber