Dodawanie danych atrybutów do pliku kształtu?

33

Mogę wyświetlać plik kształtu w openlayers, ale muszę dodać trochę danych atrybutów.

Mogę otworzyć plik dbf w programie Excel, ale w programie Excel nie ma opcji zapisu jako zaktualizowanego pliku jako dbf.

Jaki jest najlepszy sposób (lub oprogramowania), aby dodać dane atrybutów do mojego pliku kształtu?

ChrisJ
źródło
Wróć do wcześniejszej wersji programu Excel: MS usunął możliwość zapisywania plików .dbf w najnowszej wersji! :-(
whuber
4
Otwarte biuro i Quattro Pro może edytować i zapisywać pliki dbf, po prostu nie usuwaj wierszy ani nie przesuwaj elementów, w przeciwnym razie plik indeksu nie pozwoli na dopasowanie elementów. Użyj komercyjny lub open source GIS dla tych zadań, edytując wartości komórek powinno spowodować żadnych problemów
Dobrze!!! I myślałem, że moje pytanie jest zbyt proste jak na tę stronę !! Nie miałem okazji wypróbować żadnej z sugestii, ponieważ w jakiś sposób wyrzuciłem oprogramowanie geoserver i postgres ... :-( Więc kiedy odzyskam moje pole linux z powrotem do 100%, sprawdzę wszystkie sugestie Dziękujemy za wzięcie czas na odpowiedź Chris
ChrisJ

Odpowiedzi:

23

Za pomocą QGIS możesz edytować plik kształtu, dodając nowe kolumny i wartości. Wystarczy otworzyć plik kształtu, przejść do Właściwości> Atrybuty i dodać nowe kolumny.

W nowszych wersjach QGIS (2.x) „Atrybuty” nazywa się „Pola”

doktoreas
źródło
Nie myślałem o użyciu QGIS, ponieważ na moim Linux-ie (Copiapo) ulega awarii po kliknięciu „Pobierz wtyczkę python”. Czy ktoś wie, czy można to naprawić? W międzyczasie spróbuję dodać atrybuty w wersji dla wdów.
ChrisJ
Możesz spróbować debugować problem w sposób opisany tutaj przez Richarda: osgeo-org.1803224.n2.nabble.com/…
podmrok
QGIS pozwala dodawać nowe kolumny, ale zapełnianie nowej kolumny danymi wydaje się być punkt-kliknięcie-wejście - naprawdę nieefektywne! Sugeruję użycie R jak w odpowiedzi mdsummer poniżej.
baha-kev
@ baha-kev Dlaczego miałoby to być tylko kliknięcie i wejście? Czy nie możesz po prostu zrobić czegoś takiego jak ten samouczek?
ocean800
1
W QGIS 3.2.1 znajduje się w menu kontekstowym warstwy> „Właściwości ...”> „Pola źródłowe” w oknie dialogowym.
andw
23

Użyj Rz foreignpakietem, aby zmodyfikować plik 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")

Lub przeczytaj dane geometrii i atrybutów w rgdalpakiecie (abyś mógł również zmodyfikować relacje i stworzyć zupełnie nowy plik kształtów):

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
źródło
4

W ogóle nie polecam korzystania z OpenOffice - lub podobnej aplikacji! Darren Cope komentując odpowiedź na pytanie „ Tworzenie DBF i manipulowanie bez programu Excel 2003 ” powiedział:

to dlatego, że pliki kształtu są bardzo zdenerwowane, jeśli przejdziesz do edycji pliku .dbf w programie „zewnętrznym”

dariapra
źródło
3
niekoniecznie jest to prawdą: edytowałem wiele plików kształtów w OpenOffice i Excel bez problemów: wystarczy pamiętać o ograniczeniach formatu (długości nazw kolumn, typy danych itp.).
scw,
@scw: czy możesz podać linki do informacji o ograniczeniach formatu?
LarsH
2
Konkretne ograniczenia różnią się w zależności od zastosowania formatu przez oprogramowanie, ale najprostsze ograniczenia to: 11 nazw pól znaków, brak znaków specjalnych i spacji w nazwach pól, i trzymanie się podstawowych typów danych plików DBF (nie ezoterycznych rzeczy, takich jak „memo” pola). Aby uzyskać więcej informacji, zobacz shapefile.py Z shapelib DBF API lub tę księgę na Xbase .
scw
4

Połączyłem kilka plików kształtów za pomocą MS Access. Musiałem opuścić dołączenie niektórych danych z innego pliku kształtu i działało to całkiem dobrze. Również było szybko. Myślę jednak, że nie każdy ma to oprogramowanie

Mykolas Simutis
źródło
1
Zwykle używam Access lub innej formy SQL do manipulowania danymi. Wydaje mi się o wiele łatwiej uruchomić kilka zapytań. Jak wspomniano wcześniej, wystarczy obserwować zmianę faktycznego formatu bazy danych, najlepiej jest to zrobić w oprogramowaniu GIS.
MaryBeth,
2

Korzystanie z QGIS jest przyjemne i zapewnia solidny interfejs do interakcji z DBF, ale jeśli musisz coś zrobić programowo lub po prostu potrzebujesz narzędzi do sprawdzania plików kształtu, pomyślałem, że wspomnę o kilku innych narzędziach: Często używam podstawowych funkcji shapelib do badania plików DBF: może dodawać, tworzyć i modyfikować zarówno geometrie, jak i atrybuty, często używam, dbfdump myshape.dbfaby uzyskać szybki przegląd wartości atrybutów.

Inną opcją, jeśli interesuje Cię programowe sterowanie DBF, jest dbfpy , biblioteka Pythona (alternatywa dla miłej foreignbiblioteki wspomnianej przez mdsummer). Przykładowy skrypt do dodawania kolumny:

import dbfpy

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

db.close()
scw
źródło
2

jak wskazał Andy w linku, o którym wspomniał DARIAPRA, istnieje ADD-IN programu Excel 2007, który może Ci się przydać - umożliwia zapisywanie w formacie dbf. możesz go znaleźć na tej stronie:

http://savedbf.blogspot.com/

(Ponieważ mam program Excel 2003, nigdy go nie wypróbowałem, ale słyszałem, że był użyteczny.

Co do manipulacji DBF poza ArcGIS - zrobiłem to kilka razy. Czasami to działa, czasem nie. Moje dwa centy: Jeśli możesz uniknąć manipulacji na zewnątrz, unikaj go. Jeśli masz do czynienia z językiem innym niż angielski, unikaj go całkowicie - Często edytujesz go poza ArcGIS).

jonatr
źródło
2

Alternatywnie:

  1. otwórz dbf w MS Excel 2007/10
  2. Wprowadź zmiany (dodawanie kolumn, wypełnianie danych itp.) I zapisz jako xls / xlsx
  3. Przejdź do lokalizacji xls / xlsx w ArcCatalog, kliknij prawym przyciskiem myszy arkusz i wybierz Eksport> Do dBase (pojedynczy)
  4. Zmień nazwę wyjściowego pliku dbf zgodnie z wymaganiami
veedub
źródło
2

Zwykle używam R (sprawdź odpowiedź mdsomners), ale nie zaleciłbym, aby dowiedzieć się, że jeśli to jedyna rzecz, którą chcesz zrobić. Myślę, że najlepszym rozwiązaniem byłoby użycie programu GIS, aby utworzyć pola, a następnie spróbować je edytować za pomocą openoffice.

Co ważniejsze, powinieneś pomyśleć, czy musisz edytować wszystkie pola tabeli atrybutów bezpośrednio, czy możesz dołączyć do niej inne tabele. To ostatnie można wykonać w większości programów GIS, np. SAGA GIS

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

johanvdw
źródło
Zgoda. Za każdym razem, gdy dodaję / zmieniam dane, zastanawiam się, czy istnieje łatwiejszy sposób.
MaryBeth,
1

Open Office Calc pozwala na odczyt i zapis plików dbf. Ale rozwiązanie Lcasagrande korzystające z QGIS powinno być bezpieczniejsze.

podmrok
źródło