Ich möchte ein Polygon symbolisieren, ohne es in eine Linie umzuwandeln. Ich habe ein Polygon-Feature (schraffiert und durch eine rote Linie begrenzt), das oben und unten an der Küste (blaue Linie) zusammenfällt. Ich möchte den Umriss eines Polygons nur auf zwei Seiten symbolisieren und möchte die rote Farbe oben und unten weglassen.
Ich würde das Endergebnis gerne so sehen.
Antworten:
Ich hatte ein bisschen
Geometry generator
Probleme mit dem als @GSienko. Für Kreuzungsteile können Sie auch die integrierte Funktion verwendenaggregate
. Außerdem habe ich einesegment_to_lines
Funktion verwendet, die Polygone in Linien konvertiert.oder
Wenn Sie ein Polygon haben, das nicht mit Linien zusammenhängt, können Sie eine
if
Bedingung für den Schnittpunkt hinzufügen . Wenn sich Ebenen im Schnittpunkt befinden, wird die Differenz für die Symbologie angewendet, andernfalls wird die gesamte Geometrie angewendet.Bearbeiten : Die Verwendung des Liniengenerators auf diese Weise hat eine Schwachstelle - Sie müssen das Legenden-Symbol behandeln, da es die Linie durch das Polygon rendert (nicht als Rand). Sie können die Ebene jedoch weiterhin duplizieren, eine einfache Füllung festlegen und sie als Legende verwenden.
quelle
Versuchen Sie, das refFunction-Plugin im Geometriegenerator zu verwenden.
Annahme. 2 Ebenen - eine Linie als Linie und Polygone als Polygon.
Stylen Sie das Polygon so:
geomintersect führt eine räumliche Abfrage zwischen Polygonebene und Linienebene durch und gibt die Schnittgeometrie von zwei von ihnen zurück, in unserem Fall zwei Rändern von Polygonen. Der nächste Schritt besteht darin, den Rand des Polygons zu unterscheiden. Ich weiß nicht, ob Sie Löcher im Inneren haben oder nicht, dann gibt external_ring () nur den äußeren Rand zurück.
Endergebnis:
Die Einschränkung - geomintersect überprüft die Schnittmenge nur für ein Polygon. Ich schaffe diese Einschränkung, indem ich Polygone zu einem großen Multipolygon mache, zum Beispiel durch virtuelle Ebenen für das Rahmen-Styling.
quelle
Wie wäre es mit einer weißen Linie unter der blauen Linie in der anderen Ebene, die dieselbe Breite wie die rote Linie hat? Wenn Sie die blaue Linie über der Polygonebene platzieren, wird die rote Linie durch die weiße Linie verdeckt.
Dies setzt natürlich voraus, dass Sie einen weißen Hintergrund wie in Ihrem Beispiel haben und dass Sie damit einverstanden sind, dass einige der Crosshashes auch verdeckt sind.
Dies ist mein schnelles Testergebnis:
Einstellungen für blaue Linie:
quelle
Haftungsausschluss: Diese Antwort funktioniert nicht, wenn Sie mehrere Polygone haben
Sie können herausfinden, welche Knoten die vier Ecken des Polygons bilden, zwischen denen Sie Linien zeichnen möchten, und diese dann in den Funktionen von MAKE_LINE () verwenden, um die Linien zu zeichnen:
So finden Sie die benötigten Knoten:
POINT_N($geometry, 1)
, um den ersten Knoten als Punkt anzuzeigenSo zeichnen Sie die Linien:
MAKE_LINE(POINT_N($geometry, *first point*), POINT_N($geometry, *second point*)
Als Nächstes fügen Sie einfach eine normale Linienmuster-Füllsymbologie unter diesen beiden Geometriegeneratoren hinzu
quelle