Mapserver Rendering / Transparenter Background

Hallo,

hat jemand ne Ahnung wie ich einen transparenten Hintergrund mit Mapserver hinbekomme? wms_transparent true hilft nicht.

Mapfile sieht so aus


LAYER
    METADATA
        "wms_transparent"       "true"
    END
    STATUS ON
    GROUP "cells"
    PROJECTION
        "init=epsg:4326"
    END
    CONNECTIONTYPE postgis
    CONNECTION "host=localhost dbname=cells user=blub password=bla port=1234"
    PROCESSING "CLOSE_CONNECTION=DEFER"
    maxscaledenom 3001000
    minscaledenom 1
    TYPE ANNOTATION
    NAME "BTS"
    DATA "way from (select way,cid,mcc,mnc from cells where mcc is not null) as foo using unique cid using srid=4326"
    LABELITEM cid
    CLASSITEM 'mcc'
    CLASS
        EXPRESSION '262'
        LABEL
            FONT sc
            TYPE TRUETYPE
            SIZE 8
            COLOR 0 0 0
            OUTLINECOLOR 255 255 255
            OUTLINEWIDTH 3
            WRAP ' '
            BUFFER 10
            MAXLENGTH 8
            ALIGN CENTER
            PRIORITY 8
            PARTIALS FALSE
            POSITION AUTO
        END
    END
END

Im Abschnitt OUTPUTFORMAT des map files

mit

TRANSPARENT ON

http://mapserver.org/de/mapfile/outputformat.html#outputformat

es soll nur das eine Layer transparent sein. Ich habe noch andere Layer, die damit ziemlich blöd aussehen würden

Für Layertransparenz ist OPACITY zuständig

http://mapserver.org/de/mapfile/layer.html#opacity

Aber was ich nicht verstehe: Das ist ja wohl ein Layer mit Text … der ist normal automatisch transparent wenn er über anderen Layern liegt

naja, ich habe noch ein paar Groups, die OSM Daten rendern. Das soll sich natürlich nicht ändern. Mein Mapfile hat aber auch nix, was eine Transparenz verhindern würde. Aber transparent ist nichts geworden, auch nicht mit Deinen Tipps :frowning:


MAP
    NAME OSM-WMS
    FONTSET "/osm/mapserver/fonts.list"
    STATUS ON
    UNITS METERS


    WEB
        METADATA
                        "wms_title"     "Thomas WMS-Server"
                        "labelcache_map_edge_buffer" "-10"
                        "wms_onlineresource" "to_be_replaced_by_wms.py"
                        "wms_srs"       "EPSG:4326 EPSG:900913"
                        "wms_connectiontimeout" "240"
        END
        IMAGEPATH       "/osm/mapserver/imagepath/"

    END
    CONFIG "PROJ_LIB" "/usr/share/proj/"
    CONFIG "MS_ERRORFILE" "stderr"
    EXTENT 0 0 180 180
    MAXSIZE 4000
    SIZE 800 800
    UNITS dd
    IMAGECOLOR "#B3C6D4"
    PROJECTION
                "init=epsg:4326"
    END

Kommt das so undurchsichtig schon aus dem Mapserver oder passiert das erst bei nem Tilecache oder so? Irgendwas war da…

kein Tilecache. Kommt direkt. Kann sein, dass ich das selber so wollte. Nur wo stellt ich das für das eine Layer ab?

Man kännte es noch im Aufruf des WMS ausschalten:

“mapserv?map=…/maps/xxx.map&LAYERS=laender&TRANSPARENT=TRUE&FORMAT=png&SERVICE=WMS”
oder
“mapserv?map=…/maps/xxx.map&LAYERS=laender&TRANSPARENT=FALSE&FORMAT=png&SERVICE=WMS”

bei Openlayers steht bei mir immer transparent: “true”


Blupp=OpenLayers.Layer.WMS("Name","http://xxx/mapserv?map=../maps/xxx.map",{layers:'xxx',transparent: "true",format: 'png'}, {projection ...

Danke, Transparent kann ich es schon machen, aber das sieht blöd aus. Ich hätte gerne die Hintergrundfarbe weg. Witzigerweise ist mit Tilecache der Hintergrund immer voll transparent, auch wenn ich das bei den anderen Layern eigentlich gar nicht will. Dann werd ich wohl den Umweg über Tilecache gehen.
Die Farbe des Hintergrunds entspricht der von IMAGECOLOR. Das kann ich nicht weglassen sonst gibts nur ne Fehlermeldung. Auch TRANSPARENT hat keinen Effekt. Naja, funktioniert zwar nicht so wie es sollte, aber es geht. Danke nochmal

Genau aus dem Grund habe ich dir ja in der 1. Anwort

TRANSPARENT ON im Abschnitt OUTPUTFORMAT des Mapfiles genannt … denn die Einstellung bewirkt ja genau dass IMAGECOLOR transparent dargestellt wird.

http://mapserver.org/de/mapfile/outputformat.html#outputformat

Beispiele für ein transparente Hintergründe

OUTPUTFORMAT
NAME ‘AGGA’
DRIVER AGG/PNG
IMAGEMODE RGBA
END

(dabei braucht man TRANSPARENT ON nicht anzugeben weil der Imagemode ja schon RGBA ist)

oder mit 256 Farben

OUTPUTFORMAT
NAME png
DRIVER “GD/PNG”
MIMETYPE “image/png”
IMAGEMODE PC256
EXTENSION “png”
TRANSPARENT ON
END

Noch zur Erklärung … OUTPUTFORMAT kann man auch weglassen im Mapfile
(ich vermute mal, du hast den Abschnitt nicht drin), dann werden eben die
Default Einstellungen genommen und die ist zb. bei PNG

OUTPUTFORMAT
NAME png
DRIVER “GD/PNG”
MIMETYPE “image/png”
IMAGEMODE PC256
EXTENSION “png”
END

… also Standard ohne Transparenz

ich glaube, wir reden aneinander vorbei. Das Layer soll ein Overlay über einer Karte sein. Die Symbole und der Text sollen nicht durchsichtig sein, der Rest komplett durchsichtig damit man die Karte dahinter sieht. Jetzt kann ich zwar eine Transparenz einstellen, was auch klappt, aber damit werden die Symbole und Text des Layers auch durchsichtig.
Mit Tilecache gehts (warum auch immer).

Ich bräuchte sowas wie BACKGROUND_OPACITY

ja genau das macht die oben genannte Einstellung … sie macht den Hintergrund transparent und zwar genau die IMAGECOLOR
Damit werden keine Symbole oder Text durchsichtig. lediglich der Hintergrund wird, wie du das willst transparent.

Wen du schreibst du kannst jetzt zwar die Symbole Transparent machen, dann machst du das ja entweder mit OPACITY oder aber du verwendest einen Wert für IMAGECOLOR der nicht einmalig ist und z.B in den Symbolen auch vorkommt.

Das liegt halt daran, dass bei 256 Farben einer Palette eben eine ausgewählt wird, die Transparent ist, die darf dann natürlich nur 1x vorkommen. Also dann entweder IMAGeCOLOR entsprechend ändern oder png gleich auf RGBA umstellen