Gibt es eine Möglichkeit, Linien mit glatten (Bezier-) Kurven in QGIS zu rendern?

33

Ich gehe von der Erstellung von Karten mit Illustrator zu deren Erstellung mit QGIS und tatsächlichen Daten über. Eines der Dinge, die ich in QGIS nicht neu erstellen konnte, sind die glatten gekrümmten Linien, die ich in Illustrator erhalten kann. Ich spreche nicht von Join- und Cap-Stilen, sondern davon, wie eine ganze Linie gerendert wird.

Ich suche nach einer Antwort, die nicht das Exportieren als SVG nach Illustrator und das Fertigstellen der Karte dort umfasst.

Ich weiß auch, dass sie als ungenaue Darstellung angesehen werden können, aber zum größten Teil dienen diese Karten dazu, den Fahrern eine Vorstellung davon zu vermitteln, wo sie sich befinden, und müssen nicht unbedingt eine genaue Darstellung sein.

Hier ist ein Beispiel für das, was ich meine: Bildbeschreibung hier eingeben

Brian Kelly
quelle
2
Wie werden Ihre Daten gespeichert? Die meisten Datenformate (zB Shapefile) lassen keine Bögen zu. Ich glaube jedoch, dass einige Datenbanken dies jetzt tun.
Darren Cope

Antworten:

24

Schauen Sie sich das Generalizer-Plugin an, es sollte tun, was Sie wollen. Das Plugin hat Glättungsoptionen, die sehr gut funktionieren.

Es ändert nichts an der Darstellung Ihrer Linien, sondern erstellt ein neues Shapefile mit angewendeter Glättung (oder Vereinfachung / Generalisierung).

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Nathan W
quelle
Ich kann dieses Plugin für QGIS 1.7.3 nicht finden, obwohl Repos von Drittanbietern aktiviert sind. Können Sie zeigen, wie Sie es aktivieren / finden? Sieht interessant und unkompliziert aus.
SaultDon
3
Seltsam. Es sollte sich im Plugin-Installationsprogramm befinden, da es aus dem Haupt-QGIS-Plugin-Repo stammt.
Nathan W
3
Sie haben Recht, aber im Python-Plugin-Installationsprogramm musste ich zur Registerkarte "Optionen" wechseln und "Zulässige Plugins" in "Alle Plugins anzeigen, auch die als experimentell gekennzeichneten" ändern.
SaultDon
Ich habe heute Abend ein bisschen mit diesem Plugin gespielt und es funktionierte tatsächlich besser für mich, da ich keine GRASS-Ebene verwenden musste und einfach mein aktuelles Shapefile konvertieren konnte.
Brian Kelly
Ich musste es für meine sehr detaillierte, aber gezackte Digitalisierung in zwei Schritten tun: zuerst vereinfachen (zB Lang-Algorithmus) und dann glätten. Wirkte ein Vergnügen.
ein anderer ben
16

Verwendung des QGIS + GRASS Plugins:

Fügen Sie die Grass-Symbolleiste aus dem Fenster "Plugins verwalten" hinzu. füge das grass tools plugin zu qgis hinzu

Ihre Linien müssen ein Grasvektor sein, also konvertieren Sie sie in ein neues oder vorhandenes GRASS-Mapset.

Wählen Sie in der GRASS-Symbolleiste die Option GRASS-Tools ... aus. Bildbeschreibung hier eingeben

Suchen Sie nach dem Modul: v.generalize ( WIKI-Tutorial hier )

Sie können dann verschiedene verallgemeinernde Algorithmen auswählen: GRASS Tool v.generalize Algorithmen Auswahl

Beachten Sie die Algorithmen: Chaiken, Hermite oder sogar Sliding Average. Es gibt auch mehrere andere!

Die Unterschiede sind in den Wiki-Bildern zu sehen: v.generalize vereinfachen Unterschiede Beispiel

aus Wiki: "Beachten Sie, dass ein Unterschied zwischen" Chaiken "und" Hermite "darin besteht, dass die von" Chaiken "erzeugten Linien die ursprünglichen Linien" einschreiben ", während die" Hermite "-Linien die ursprünglichen Linien" umschreiben ", wie dies in der Abbildung zu sehen ist Bild [oben]. (Schwarze Linie ist die ursprüngliche Linie, grüne Linie ist "Chaiken" und blaue ist "Hermite")


Verwenden von uDig + jgrasstools oder grass:

Wenn Sie Schwierigkeiten haben, mit GRASS v.generalize wünschenswerte Ergebnisse zu erzielen, probieren Sie die neueste Version von uDig mit jgrasstools aus . Sie können das Grasgefäß auch an derselben Stelle wie jgrasstools nehmen.

Sobald uDig installiert ist und ausgeführt wird, aktivieren Sie die Spatial Toolbox : Window> Show View> Other ... Aktivieren Sie die räumliche Toolbox in uDig

Deaktivieren Sie die Symbolleiste, um die Lesbarkeit zu verbessern (klicken Sie mit der rechten Maustaste auf die Registerkarte Spatial Toolbox> Trennen ...): Entfernen der räumlichen Toolbox in uDig

Laden Sie die erforderlichen Module jgrasstools und grass (optional): Laden von jgrasstools / grass in udig

Vergessen Sie nicht, Ihre Gras-Parameter zu setzen (zeigen Sie auf die Gras-Programmdatei oder die Bat-Datei unter Windows oder auf den Gras-Befehl unter Linux, dh / usr / bin / grass), wenn Sie auch die Gras-Jar-Datei laden: Einstellen der Grasparameter in uDig

Endlich! Mit den Werkzeugen von jgrasstools (nicht grass) können Sie die Linie einfach mit Vector Processing> LineSmootherJaiTools verallgemeinern Vektorverarbeitung zu LineSmootherJaiTools in uDig

Stellen Sie sicher, dass die Eingabe und Ausgabe richtig eingestellt ist (funktioniert nur bei Shapefiles, sodass Sie Ihre Daten nicht in Kartensätze / Standorte für Gras konvertieren müssen) : Eingabe- und Ausgabeeinstellungen für Spatial Toolbox in uDig

Nachdem Sie die Glättungstoleranz (0,0 - 1,0) und die Eingabe / Ausgabe festgelegt haben, drücken Sie die Wiedergabetaste im Fenster Spatial Toolbox (oben rechts): Spielmodul in der Spatial Toolbox für uDig

Ergebnisse:
uDig vereinfacht die Ergebnisse von jgrasstools ...

SaultDon
quelle
Verändert dies die Originaldaten oder filtert es sie, bevor QGIS sie rendert?
Brian Kelly
Ah, das wird hier beantwortet: "(Zeilen-) Glättung ist ein" umgekehrter "Vorgang, der eine Zeile als Eingabe verwendet und eine glattere Annäherung an das Original erzeugt. In einigen Fällen wird dies durch Einfügen neuer Scheitelpunkte in die ursprüngliche Zeile und erreicht kann bis zu 4000% der Anzahl der Scheitelpunkte im Original ausmachen. In einem solchen Fall ist es immer eine gute Idee, die Linie nach dem Glätten zu vereinfachen. " von grass.osgeo.org/grass64/manuals/html64_user/v.generalize.html
Brian Kelly
Es scheint also so, als würden Sie dies wahrscheinlich anwenden, wenn Sie bestätigt haben, dass alle Linien korrekt sind und keine weitere Bearbeitung benötigen (es sei denn, Sie möchten alle zusätzlichen Vektoren anpassen und sie dann wieder glätten)
Brian Kelly
@spline Ja, da Sie mit einem "Gras-Datensatz" arbeiten müssen, der im Wesentlichen - KEIN Shapefile - ist, möchten Sie sicherstellen, dass das ursprüngliche Shapefile vollständig ist. Die Vereinfachung der Linie zur Beseitigung zusätzlicher Scheitelpunkte ist ebenfalls eine Option, abhängig von der Länge der Linie und der Anzahl der in der Bezierkurve vorhandenen Scheitelpunkte .
SaultDon
Oh mein Wort, Gras macht für mich keinen Sinn ... Kartennamen, Ortsnamen, Datenbank, DAUERHAFT ... Ich habe versucht, die Verwendung dieser Antwort zu "entdecken" (zugegebenermaßen ohne Vorkenntnisse über Gras), und bin kläglich gescheitert. Dateien scheinen dahin zu gelangen, wo Sie es am wenigsten erwarten (obwohl es sich vermutlich nicht um Dateien handelt). Nachdem ich herausgefunden hatte, wie man eine Karte auswählt, konnte ich meine konvertierte Ebene im Dialogfeld "Generalisieren" nicht auswählen (nicht, dass ich weiß, was damit gemeint ist) eine Karte) ... Alptraum. Sieht aus der Ware , wenn ich könnte es funktioniere alle heraus aber :)
ein anderen ben
1

Es gibt einen anderen Weg, möglicherweise erst seit Version QGIS 2.0:

Unter Processing> Toolbox können Sie auf GRASS- und SAGA-Tools zugreifen. Zum Glätten gibt es v.generalize, aber auch eine Vereinfachung der Linien von SAGA. Diese Werkzeuge arbeiten mit regulären Shapefiles, sodass kein Grasvektor benötigt wird:

Bildbeschreibung hier eingeben

Der Batch-Modus ist noch nicht so gut gelöst (rechter Mausklick im rechten Menü und Auswahl von "Als Batch ausführen", da man jede einzelne Datei manuell auswählen muss. Mit dem weiter oben erwähnten Generalizer-Plug-In kann man viele Dateien einfacher auswählen , aber das funktioniert momentan nur, wenn man keine Datei zum Speichern angibt, sonst stürzt das Plug-In ab.

Max
quelle
1

Darunter befindet sich ein Smooth-Geometrie- Algorithmus Processing Toolbox -> QGis geoalghoritms -> Vector.

Linie
quelle