Piszę tutorial dla studentów mgr korzystających z QGIS. Jednym z zadań wymaga danych atrybutu być zmodyfikowany (patrz pdf projekt samouczka tutaj , jeśli interesuje).
Pytanie brzmi, jak zmusić ich do edycji danych atrybutów. Wiem, że to pytanie zostało już zadane , a odpowiedź była prosta: wystarczy użyć LibreOffice calc, aby go zmodyfikować, a następnie zapisać, upewniając się, że kolejność wierszy i tytuły kolumn są takie same. Użyłem tego podejścia wcześniej, aby uzyskać doskonały efekt.
Niestety rozwiązanie już nie działa: zapisanie pliku .dbf w LibreOffice (5.4.2) lub OpenOffice (3.4.1) Calc szyfruje dane z perspektywy QGIS (w tabeli atrybutów pojawiają się tylko losowe liczby całkowite) oraz zamiast tego tworzy dodatkowy plik .dbt.
Aby przejść do pytania: jak powiedzieć klasie studentów mgr, aby zrobili to w przyszłym tygodniu? Rozważyłem następujące opcje:
- Zamiast tego użyj R (świetne dla mnie, ale przerażające dla studentów)
- Edytuj plik jako .csv, a następnie dołącz na podstawie znacznika czasu (w porządku, ale wydaje się zbyt skomplikowany i może wprowadzić więcej błędów w ciągu 2 godzin)
- Użyj alternatywnego programu: wypróbowałem Gnumeric i Excel, ale żaden z nich nie wygenerował szybko dobrych wyników.
Aby pomóc odpowiedzieć na to pytanie, stworzyłem powtarzalny przykład . Otwórz plik „points.shp” w QGIS, obserwuj tabelę atrybutów, a następnie zamknij. Edytuj kilka komórek w tabeli atrybutów „points.dbf” w LibreOffice - zapisz. Ponownie otwórz plik „points.shp” w QGIS i obserwuj zaszyfrowaną tabelę atrybutów. Inne pliki kształtów w folderze .zip zostały już uszkodzone przez LibreOffice i OpenOffice, aby zilustrować, jak wygląda dla mnie problem.
Krótko mówiąc, jak najlepiej rozwiązać ten problem?
źródło
Odpowiedzi:
Najprostsza odpowiedź, jaką znalazłem, na podstawie porady Ryana Garnetta, aby zrobić to w QGIS:
Użyj regexp_replace
Ta zdolność została dodana do kalkulatora pola 1 rok temu przez Jürgena Fischera (jak ilustruje ten raport o błędach ). Próbowałem przez jakiś czas dowiedzieć się, jak to zrobić, ale nie udało mi się znaleźć „qgis regex” i innych niejasnych terminów.
Jego funkcjonalność najlepiej obrazuje potrzeba standaryzacji wszystkich wartości w kolumnie „nazwa”. Na przykład, jeśli musimy zamienić wszystkie komórki zawierające wzorzec „Tesc” na „Tesco”, usuwając zbędne informacje, takie jak „Tesco, Infirmary Road” (często dodawane przez autorów OSM), można użyć następującej funkcji:
regexp_replace („nazwa”, „Tesc. *”, „Tesco”)
Wydaje mi się, że jest to funkcja wyrażeń regularnych w języku Python, ponieważ różni się nieco od grep, którego wcześniej używałem.
Myślę, że potrzebna jest większa dokumentacja (szczegóły na stronie QGIS jest ograniczona do kilku słów) na temat tego, jak to działa, dlatego dodałem do zakładek następujące strony do wykorzystania w przyszłości:
To rozwiązanie ma kilka zalet:
Przepraszam za odpowiedź na moje pytanie i wielkie podziękowania dla innych za to, że doprowadzili mnie do światła! Mam nadzieję, że ten wątek będzie przydatny w celach edukacyjnych innym osobom mającym podobne problemy.
źródło
Może to być głupia odpowiedź, ponieważ może być celem nauki dla uczniów grad, ale czy istnieje powód, dla którego nie edytujesz atrybutów w QGIS za pomocą kalkulatora pola? W poprzednich wersjach QGIS (wcześniejszych niż 1.7) edycja atrybutów bezpośrednio w QGIS nie była możliwa; stąd potrzeba edycji plików .DBF w OpenOffice itp.
Od wersji 1.7 i 1.8 można edytować dane atrybutów bezpośrednio w kalkulatorze polowym, z możliwością wykonywania wyrażeń warunkowych. Dostępne są również wtyczki Python Attribute, które mogą zapewnić dodatkowe opcje edycji atrybutów. Może to być rozwiązanie lub opcja dla twojego samouczka.
Jako poprzedni student studiów magisterskich, a obecnie pracownik uniwersytetu, rozumiem ten problem, poprzedni wymóg wykonywania go poza QGIS, i teraz doceniam możliwość wykonywania wszystkich edycji atrybutów w QGIS. Byłbym szczęśliwy, mogąc ci w tym pomóc, jeśli chcesz.
źródło
Możesz użyć bazy LibreOffice do modyfikacji plików dbf .
Możesz teraz zacząć je edytować. Mam nadzieję, że powinno to być wystarczające dla twoich celów.
Możesz także wypróbować DBF Explorer, chociaż jest to tylko system Windows. Ma jednak wyszukiwanie i zamianę.
źródło