Thêm dữ liệu thuộc tính vào shapefile?


33

Tôi có thể hiển thị một shapefile trong openlayers nhưng tôi cần thêm một số dữ liệu thuộc tính.

Tôi có thể mở tệp dbf trong excel nhưng không có tùy chọn lưu dưới dạng excel cho tệp được cập nhật dưới dạng dbf.

Cách tốt nhất (hoặc phần mềm để sử dụng) để thêm dữ liệu thuộc tính vào shapefile của tôi là gì?


Quay trở lại phiên bản Excel trước đó: MS đã loại bỏ khả năng ghi tệp .dbf bằng phiên bản mới nhất của nó! :-(
whuber

4
Open office và Quattro Pro có thể chỉnh sửa và lưu các tệp dbf, chỉ cần không xóa các hàng hoặc di chuyển các thứ xung quanh nếu không tệp chỉ mục sẽ không cho phép mọi thứ khớp với nhau. Sử dụng gis thương mại hoặc nguồn mở cho các tác vụ này, chỉnh sửa giá trị ô sẽ không gây ra vấn đề gì

Tốt!!! Và tôi nghĩ rằng câu hỏi của tôi quá đơn giản cho trang web này !! Tôi chưa có cơ hội để thử bất kỳ đề xuất nào vì bằng cách nào đó tôi đã dọn sạch phần mềm máy chủ địa lý và phần mềm postgres của mình ... :-( Vì vậy, khi tôi nhận được hộp linux của mình trở lại 100%, tôi sẽ kiểm tra tất cả các đề xuất Cảm ơn vì đã lấy thời gian để trả lời chris
ChrisJ

Câu trả lời:


23

Sử dụng QGIS, bạn có thể chỉnh sửa shapefile của mình thêm các cột và giá trị mới. Chỉ cần mở shapefile, đi đến Thuộc tính> Thuộc tính và thêm các cột mới.

Trong các phiên bản mới hơn của QGIS (2.x), 'Thuộc tính' được gọi là 'Trường'


Tôi đã không nghĩ đến việc sử dụng QGIS vì trên hộp Linux của tôi, nó (Copiapo) gặp sự cố khi tôi nhấp vào "Tìm nạp plugin python". Bất cứ ai cũng biết nếu có một sửa chữa cho điều này? Trong thời gian chờ đợi, tôi sẽ thử thêm các thuộc tính bằng phiên bản góa phụ.
ChrisJ

Bạn có thể thử để gỡ lỗi các vấn đề theo cách Richard mô tả ở đây: osgeo-org.1803224.n2.nabble.com/...
Underdark

QGIS cho phép bạn thêm các cột mới, nhưng việc điền vào cột mới với dữ liệu dường như là điểm nhấp chuột - thực sự không hiệu quả! Tôi đề nghị sử dụng R như trong câu trả lời của mdsummer dưới đây.
baha-kev

@ baha-kev Tại sao nó chỉ là click-point-enter? Bạn không thể làm một cái gì đó như hướng dẫn này ?
Ocean800

1
Trong QGIS 3.2.1, nó nằm trong menu ngữ cảnh lớp> 'Thuộc tính ...'> 'Trường nguồn' trong cửa sổ hộp thoại.
andw

23

Sử dụng Rvới foreigngói để sửa đổi tệp 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")

Hoặc đọc dữ liệu hình học và thuộc tính với rgdalgói (để bạn cũng có thể sửa đổi các mối quan hệ và tạo một shapefile hoàn toàn mới):

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

Tôi không khuyên bạn nên sử dụng OpenOffice - hoặc một ứng dụng tương tự - cả! Darren đối tác bình luận một câu trả lời cho câu hỏi " Tạo và thao tác DBF mà không có excel 2003 " cho biết:

đó là shapefiles sẽ khá khó chịu nếu bạn đi và chỉnh sửa .dbf trong một chương trình 'bên ngoài'


3
Điều này không nhất thiết đúng: Tôi đã chỉnh sửa nhiều shapefile trong OpenOffice và Excel mà không gặp vấn đề gì: bạn chỉ cần nhận thức được các giới hạn của định dạng (độ dài tên cột, kiểu dữ liệu, et cetera).
scw

@scw: bạn có thể cung cấp bất kỳ liên kết đến thông tin về các giới hạn định dạng?
LarsH

2
Các ràng buộc cụ thể khác nhau tùy theo cách sử dụng định dạng của phần mềm cụ thể, nhưng các hạn chế đơn giản nhất là: 11 tên trường ký tự, không có ký tự đặc biệt hoặc khoảng trắng trong tên trường và dính vào các kiểu dữ liệu cốt lõi của tệp DBF (không phải là những điều bí truyền như 'ghi nhớ' lĩnh vực). Để biết thêm chi tiết, hãy xem shapefile.py , API DBF của shapelib hoặc cuốn sách này trên xbase .
scw

4

Tôi đã hợp nhất một số shapefile bằng MS Access. Tôi cần phải tham gia một số dữ liệu từ các shapefile khác và nó hoạt động khá tốt. Ngoài ra nó đã nhanh chóng. Tuy nhiên tôi đoán không phải ai cũng có phần mềm này


1
Tôi thường sử dụng Access hoặc một số dạng SQL khác để thao tác dữ liệu. Có vẻ như dễ dàng hơn nhiều để tôi chạy một vài truy vấn. Như đã đề cập trước đây, bạn chỉ cần xem sự thay đổi của định dạng cơ sở dữ liệu thực tế, đây là điều được xử lý tốt nhất trong phần mềm GIS thực tế.
MaryBeth

2

Sử dụng QGIS là tốt và cung cấp giao diện chắc chắn để tương tác với DBF, nhưng nếu bạn cần làm gì đó bằng lập trình hoặc chỉ muốn các công cụ kiểm tra shapefile, tôi nghĩ tôi sẽ đề cập đến một vài công cụ khác: Tôi thường sử dụng các tính năng cơ bản của shapelib để kiểm tra các tệp DBF: nó có thể thêm, tạo và sửa đổi cả hình học và thuộc tính, tôi thường sử dụng dbfdump myshape.dbfđể có được cái nhìn tổng quan nhanh về các giá trị thuộc tính.

Một tùy chọn khác nếu bạn quan tâm đến việc điều khiển DBF theo chương trình là dbfpy , một thư viện python (một giải pháp thay thế cho foreignthư viện mdsummer đẹp đề cập đến). Một tập lệnh ví dụ để thêm một cột:

import dbfpy

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

db.close()

2

như andy đã chỉ ra trong liên kết DARIAPRA đã giới thiệu cho bạn, có một ADD-IN Excel 2007 mà bạn có thể thấy hữu ích - Nó cho phép bạn lưu ở định dạng dbf. Bạn có thể tìm thấy nó trên trang web này:

http://sattedbf.blogspot.com/

(Khi tôi có Excel 2003, tôi chưa bao giờ dùng thử, nhưng tôi nghe nói nó rất hữu ích.

Đối với thao tác DBF bên ngoài ArcGIS - tôi đã thực hiện vài lần. Đôi khi nó hoạt động, đôi khi nó không. Hai xu của tôi: Nếu bạn có thể tránh các thao tác bên ngoài, hãy tránh nó. Nếu bạn đang làm việc với một ngôn ngữ không phải tiếng Anh, hãy tránh hoàn toàn ngôn ngữ đó - Nó có xu hướng bị xáo trộn khi chỉnh sửa bên ngoài ArcGIS).


2

Cách khác:

  1. mở dbf trong MS Excel 2007/10
  2. Thực hiện các thay đổi của bạn (thêm cột, nhập dữ liệu, v.v.) và lưu dưới dạng xls / xlsx
  3. Điều hướng đến vị trí xls / xlsx trong ArcCatalog, nhấp chuột phải vào bảng tính và chọn Xuất> To dBase (đơn)
  4. Đổi tên tệp dbf đầu ra theo yêu cầu


2

Tôi thường sử dụng R (kiểm tra câu trả lời của mdsomners), nhưng tôi không khuyên bạn nên học nếu đó là điều duy nhất bạn muốn làm. Tôi nghĩ cách tiếp cận tốt nhất sẽ là sử dụng chương trình GIS, để tạo các trường và sau đó thử chỉnh sửa chúng bằng cách sử dụng openoffice.

Quan trọng hơn, bạn nên suy nghĩ xem bạn có cần chỉnh sửa trực tiếp tất cả các trường của bảng thuộc tính hay không, nếu bạn có thể nối các bảng khác với nó. Điều thứ hai có thể được thực hiện trong hầu hết các chương trình GIS, ví dụ SAGA GIS

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


Đã đồng ý. Mỗi lần tôi thêm / thay đổi dữ liệu, tôi tự hỏi liệu có cách nào dễ dàng hơn không.
MaryBeth

1

Open Office Calc cho phép bạn đọc và ghi các tệp dbf. Nhưng giải pháp của Lcasagrande khi sử dụng QGIS sẽ an toàn hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.