Mapfish3, serverType

Issue #588 open
Dominik Fröhlich created an issue

Hallo,

bei Ausdrucken von WMS mit höherer dpi als beim Anzeigen am Bildschirm (also quasi immer) wird die Symbolik des WMS extrem klein, da der WMS nicht weiß auf wieviel dpi er gedruckt wird und von seinem Standard (meist 72 oder 96 dpi) ausgeht, wogegen z.B. mit 300 dpi gedruckt wird. Feinere Symbolik ist dann kaum noch zu erkennen.

Um dies zu verhindern unterstützt mapfish 3 den Parameter serverType (“mapserver”, “geoserver”,…). Wird der korrekt gesetzt fordert mapfish den WMS in der geruckten Auflösung an und die Symbolik stimmt:

http://mapfish.github.io/mapfish-print-doc/layers.html#Wms%20Layer

Der serverType müsste vermutlich in den Services definiert werden. Evtl könnte man auch in der config.js einen default setzen und den dann nur für einzelne Dienste überschreiben? Die Implementierung wäre imhow einfach und hätte einen großen Nutzen für alle mit vielen WMS Diensten.

Als Workaround (für alle, die das Problem auch haben) setze ich derzeit in der modules/tools/print_/buildSpec.js:300 zusätzlich nach der Transparency noch “MAP_RESOLUTION”: 300. Das geht aber nur für Mapserver und hardcoded eine print resolution von in dem Fall 300dpi

    /**
     * Returns image wms layer information
     * @param {ol.layer.Image} layer - image layer with image wms source
     * @returns {Object} - wms layer spec
     */
    buildImageWms: function (layer) {
        const source = layer.getSource(),
            mapObject = {
                baseURL: source.getUrl(),
                opacity: layer.getOpacity(),
                type: "WMS",
                layers: source.getParams().LAYERS.split(","),
                styles: source.getParams().STYLES ? source.getParams().STYLES.split(",") : undefined,
                imageFormat: source.getParams().FORMAT,
                customParams: {
                    "TRANSPARENT": source.getParams().TRANSPARENT,
                    "MAP_RESOLUTION": 300
                }
            };

        return mapObject;
    },

Comments (3)

  1. Log in to comment