Ist es möglich, Polygone so zu füllen, dass sie in MapServer vollständig transparent sind? Ich möchte einen schwarzen Hintergrund haben, der leicht undurchsichtig ist, und wo immer es ein Polygon gibt, möchte ich, dass dieser ohne Füllung völlig klar ist. Ich stelle meinen Hintergrund folgendermaßen ein:
IMAGECOLOR 0 0 0
TRANSPARENT OFF
Ich habe versucht, eine Klasse zu erstellen, die weiß ist, um das Polygon zu füllen, und mit Deckkraft unter Verwendung TRANSPARENCY
von Werten von 0 bis 100 experimentiert, aber es ergibt sich kein klares Polygon:
CLASS
NAME "light"
EXPRESSION ([max_cost] == 2000)
STYLE
OUTLINECOLOR 255 255 255
COLOR 255 255 255
SIZE 1
WIDTH 2.0
END
END
Dies führt zu folgendem Bildtyp:
Anstelle des Polygons mit einer weißen Füllung; Ich möchte, dass es eine Füllung ohne Farbe hat. Ich habe online einen Vorschlag gefunden, um die Farbe folgendermaßen zu definieren:
COLOR -1 -1 -1
aber es hat auch nicht funktioniert. In diesem Teil der Dokumentation wird Folgendes beschrieben:
"PALETTE = / path / to / palette.txt" wird verwendet, um den absoluten Pfad zu definieren, in dem Palettenfarben gefunden werden können. Diese Datei muss 256 Einträge von r-, g-, b-Tripletts für RGB-Bildmodi oder r, g, b, vierfache für RGBA-Bildmodi enthalten. Das erwartete Format ist ein Triplett (oder Quadruplett) pro Zeile, wobei jeder Wert durch Kommas getrennt ist und jedes Triplett / Quadruplett in einer einzelnen Zeile. Wenn Sie Transparenz mit einer Palette verwenden möchten, ist es wichtig, diese beiden Farben in der Palettendatei zu haben: 0,0,0,0 und 255,255,255,255.
Nachdem ich dies gelesen habe, habe ich auch versucht, es zu verwenden, COLOR 0 0 0 0
aber dies wirft einen Fehler aus:
Unbekannte Kennung. Analysefehler in der Nähe von (0) :( Zeile 71)
Ich verstehe nicht, wie ich mich auf eine definierte Farbe beziehe, PALETTE=/path/to/palette.txt
aber dies scheint eine Möglichkeit zu sein, dies zu erreichen.
Antworten:
Mapserver hat kürzlich das Konzept der Maskenebenen eingeführt (eine Maske verhält sich in Photoshop wie eine Maske, indem sie mit der Ebene gemischt wird, auf die sie angewendet wird).
Der RFC beschreibt, was sie tun und wie sie verwendet werden können. Wenn Sie Ihre Antwort lesen, können Sie anscheinend eine Maskenebene verwenden, um den gewünschten Schlüssellocheffekt zu erzielen.
Ich bin mir nicht sicher, ob diese Funktion es in die 6.2 geschafft hat, die vor ein paar Wochen veröffentlicht wurde.
quelle
Sie möchten also den schwarzen Hintergrund mit Ihren transparenten Polygonen "durchdringen", um den unteren Hintergrund zu sehen. Ich bin nicht sicher, ob es mit MapServer möglich ist, aber ich kann einen anderen Trick vorschlagen.
Mit jeder GIS-Software können Sie ein sehr großes Polygon erstellen, das Ihren gesamten Bereich abdeckt und noch erweitert wird. Dann können Sie Ihre Polygone aus diesem Bereichspolygon löschen und dann dieses durchlöcherte Polygon auf MapServer setzen und es anstelle des schwarzen Hintergrunds schwarz machen. Die Löcher, die Ihren Polygonen entsprechen, werden "transparent" sein.
quelle
Ich hatte diese Zeilen in meiner .map-Datei und die Transparenz unter 100 funktionierte.
Ich hoffe es hilft.
quelle
TRANSPARENCY
von 0 bis 100 zu experimentieren, und es schien nur die Deckkraft anzupassen. Mir ist klar, dass dies in meiner Frage zunächst nicht klar war - ich habe es überarbeitet.Unten sehen Sie ein Beispielbild, das eine transparente Maskenebene zeigt. Wenn Sie die Maske viel größer machen, werden die Außenkanten Ihres Benutzers nicht bemerkt. Ähnlich wie bei @nadya vorgeschlagen, können Sie:
Zu diesem Zeitpunkt haben Sie eine fertige Maske. Wenn Sie jedoch den Ausschnitten Beschriftungen hinzufügen möchten, müssen Sie die kleineren Polygone (mit einem Vereinigungswerkzeug) wieder zur Maske hinzufügen. Anschließend können Sie mit einer SLD-Datei in Mapserver die Maske als transparentes Grau und die Ausschnitte als vollständig transparent gestalten und die Beschriftungen dort anbringen. Hier ist eine SLD-Beispieldatei (diese wurde für Geoserver erstellt):
Beachten Sie, dass die Polygone die Eigenschaft "TYPE" mit den Werten "inner" oder "extern" haben müssen, damit dies ordnungsgemäß funktioniert.
quelle