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

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

Nathan W.
źródło
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 ...

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

Max
źródło
1

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

Linia
źródło