Czy istnieje sposób renderowania linii za pomocą gładkich (bezierowych) krzywych w QGIS?


33

Przechodzę od tworzenia map za pomocą programu Illustrator do tworzenia ich w QGIS i rzeczywistych danych. Jedną z rzeczy, których nie byłem w stanie odtworzyć w QGIS, są gładkie zakrzywione linie, które mogę uzyskać w programie Illustrator. Nie mówię o stylach Join i Cap, ale o sposobie renderowania całej linii.

Szukam odpowiedzi, która nie obejmuje eksportu jako SVG do programu Illustrator i ukończenia tam mapy.

Zdaję sobie również sprawę, że można je uznać za niedokładne odwzorowanie, ale w większości te mapy mają na celu dać wyobrażenie o tym, gdzie się znajdują i niekoniecznie muszą być dokładnym odwzorowaniem.

Oto przykład tego, co mam na myśli: wprowadź opis zdjęcia tutaj


2
Jak przechowywane są twoje dane? Większość formatów danych (np. Shapefile) nie pozwala na łuki. Uważam jednak, że niektóre bazy danych już tak robią.
Darren Cope,

Odpowiedzi:


24

Sprawdź wtyczkę Generalizer, powinna robić to, co chcesz. Wtyczka ma opcje wygładzania, które działają całkiem dobrze.

Nie zmienia to sposobu renderowania linii, ale tworzy nowy plik kształtu z zastosowanym wygładzeniem (lub uproszczeniem / uogólnieniem).

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj


Nie mogę znaleźć tej wtyczki dla QGIS 1.7.3, mimo że mam włączone repozytorium innych firm. Czy możesz pokazać, jak to włączyć / znaleźć? Wygląda interesująco i prosto.
SaultDon

3
Dziwne. Powinien być w instalatorze wtyczek, ponieważ pochodzi z głównego repozytorium wtyczek QGIS.
Nathan W

3
Masz rację, ale z Instalatora wtyczek Python musiałem przejść do karty opcji i zmienić „Dozwolone wtyczki” na: „Pokaż wszystkie wtyczki, nawet te oznaczone jako eksperymentalne”.
SaultDon

Skończyłem grać z tą wtyczką trochę dziś wieczorem i tak naprawdę działało to dla mnie lepiej, ponieważ nie musiałem używać warstwy GRASS i mogłem po prostu przekonwertować mój obecny plik kształtu.
Brian Kelly,

Musiałem to zrobić w dwóch krokach dla mojej bardzo szczegółowej, ale poszarpanej digitalizacji: najpierw uprościć (np. Algorytm Lang), a następnie wygładzić. Pracował uczta.
inny ben

16

Korzystanie z wtyczki QGIS + GRASS:

Dodaj pasek narzędzi Trawa w oknie „Zarządzaj wtyczkami”. dodaj wtyczkę narzędzia do trawy do qgis

Twoje linie będą musiały być wektorem trawy, więc przekonwertuj je na nowy lub istniejący zestaw map GRASS.

Z paska narzędzi GRASS wybierz Narzędzia GRASS ... wprowadź opis zdjęcia tutaj

Poszukaj modułu: v. Generalizuj ( samouczek WIKI tutaj )

Następnie możesz wybrać kilka różnych algorytmów uogólniających: Narzędzie GRASS v. Uogólnij wybór algorytmów

Zwróć uwagę na algorytmy: Chaiken, Hermite, a nawet średnią przesuwną. Jest też kilka innych!

Różnice można zobaczyć na zdjęciach wiki: v.generalizuj przykład uproszczenia różnic

z Wiki: „Uwaga: różnica między„ Chaiken ”a„ Hermitą ”polega na tym, że linie wytwarzane przez„ Chaiken ”„ wpisują ”linie oryginalne, podczas gdy linie„ Hermite ”opisują„ oryginalne ”linie, jak widać na obrazek [powyżej]. (Czarna linia to oryginalna linia, zielona linia to „Chaiken”, a niebieska to „Hermite”)


Używanie jgrasstools uDig + lub trawy:

Jeśli masz trudności z uzyskaniem pożądanych rezultatów z v. Generalizacji GRASS, wypróbuj najnowszą wersję uDig z jgrasstools . Możesz także pobrać słoik z trawy z tego samego miejsca, co jgrasstools.

Po zainstalowaniu i uruchomieniu uDig włącz Przybornik przestrzenny : Okno> Pokaż widok> Inne ... włącz przestrzenny zestaw narzędzi w uDig

Odepnij pasek narzędzi, aby zwiększyć jego czytelność (kliknij prawym przyciskiem myszy kartę Przestrzenny Zestaw narzędzi> Odłącz ...): odłączanie przestrzennego zestawu narzędzi w uDig

Załaduj wymagane moduły jgrasstools i trawy (opcjonalne): ładowanie jgrasstools / grass do udig

Nie zapomnij ustawić parametrów trawy (wskaż plik wykonywalny trawy lub plik nietoperza w systemie Windows lub polecenie trawy w systemie Linux, np. / Usr / bin / grass), jeśli załadujesz również plik słoika trawy: ustawianie parametrów trawy w uDig

Wreszcie! Używając narzędzi z jgrasstools (nie trawy) możesz łatwo uogólnić linię za pomocą Vector Processing> LineSmootherJaiTools Przetwarzanie wektorowe do LineSmootherJaiTools w uDig

Pamiętaj, aby odpowiednio ustawić wejście i wyjście (działa tylko na plikach Shapefiles, więc nie musisz konwertować danych na zestawy map / lokalizacje dla trawy) : ustawienia wejścia i wyjścia dla Spatial Toolbox w uDig

Po zakończeniu ustawiania tolerancji wygładzania (0,0 - 1,0) i wejścia / wyjścia, naciśnij przycisk Play w oknie Spatial Toolbox (w prawym górnym rogu): moduł odtwarzania w Spatial Toolbox dla uDig

Wyniki:
uDig upraszcza wyniki jgrasstools ...


Czy to zmienia oryginalne dane, czy też filtruje je w jakiś sposób, zanim QGIS je wyrenderuje?
Brian Kelly,

Ach, tutaj znajduje się odpowiedź: wygładzanie „(linii) jest procesem„ odwrotnym ”, który przyjmuje jako dane wejściowe linię i daje gładsze przybliżenie oryginału. W niektórych przypadkach osiąga się to poprzez wstawienie nowych wierzchołków do linii oryginalnej, i może sumować do 4000% liczby wierzchołków w oryginale. W takim przypadku zawsze dobrym pomysłem jest uproszczenie linii po wygładzeniu. ” from grass.osgeo.org/grass64/manuals/html64_user/v.generalize.html
Brian Kelly

Wygląda na to, że jest to coś, co prawdopodobnie zastosowałbyś, gdy potwierdzisz, że wszystkie linie są poprawne i nie wymagają dalszej edycji (chyba że chcesz wyregulować wszystkie dodatkowe wektory, a następnie wygładzić je ponownie)
Brian Kelly

@spline Tak, ponieważ musisz pracować z „trawiastym zestawem danych”, który jest zasadniczo - NIE jest plikiem kształtowym, chciałbyś się upewnić, że oryginalny plik kształtowy jest kompletny. Uproszczenie linii w celu wyeliminowania dodatkowych wierzchołków jest również opcją, w zależności od długości linii i liczby wierzchołków obecnych na krzywej Beziera .
SaultDon

O, moje słowo, trawa nie ma dla mnie sensu ... nazwy map, nazwy lokalizacji, dbase, PERMANENT ... Próbowałem „odkryć”, jak korzystać z tej odpowiedzi (bez wprawdzie wcześniejszej wiedzy o trawie), ale niestety nie udało mi się. Pliki wydają się iść tam, gdzie najmniej się spodziewasz (przypuszczam, że nie są to pliki?), Nie mogłem wybrać przekonwertowanej warstwy w oknie dialogowym uogólnienia po tym, jak w końcu dowiedziałem się, jak wybrać mapę (nie to, że wiem, co oznacza mapa) ... koszmar. Wygląda na towar, gdybym mógł to wszystko rozwiązać :)
inny ben

1

Istnieje inny sposób, być może tylko ten sposób od wersji QGIS 2.0:

W obszarze Przetwarzanie> Zestaw narzędzi można uzyskać dostęp do narzędzi GRASS i SAGA. Aby wygładzić, znajdziesz v.generalizacja, ale także uproszczenie linii z SAGA. Te narzędzia działają na zwykłych plikach kształtów, więc wektor trawy nie jest potrzebny:

wprowadź opis zdjęcia tutaj

Tryb wsadowy nie jest jeszcze tak dobrze rozwiązany (kliknij prawym przyciskiem myszy menu po prawej stronie i wybierz „Wykonaj jako wsad”, ponieważ każdy plik trzeba wybierać ręcznie. Wymieniona wyżej wtyczka generalizatora pozwala na łatwiejsze wybranie wielu plików , ale działa to teraz tylko wtedy, gdy nie określono pliku do zapisania, w przeciwnym razie wtyczka ulegnie awarii.


1

Poniżej znajduje się algorytm gładkiej geometriiProcessing Toolbox -> QGis geoalghoritms -> Vector .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.