Dynamisches skalieren von Beschriftung

Daniel Goetz madprof at gmx.ch
Fri Jun 30 02:27:29 EDT 2006


Liebe Mapbender-Gemeinde,

ich habe ein Problem mit der dynamischen Skalierung von Beschriftungen bei meinem WMS-Dienst. Bitte helft mir doch ein bißchen dabei.

Ich verwende eine lokale Mapserver-Installation (ms4w-Packet Vers. 1.5.3) und habe Mapbender Version 2.2.1 auf meinem Rechner installiert. Der Mapbender funktioniert auch im großen und ganzen (Shapedatein, Rasterdatein, Oracle-Spatial) recht gut bzw. bediene ich ihn richtig. Nur wenn es um die Skalierung von Beschriftungen geht funktioniert das eben nicht.

Mein .map-file für den WMS-Dienst mit skalierbarer Beschriftung sieht folgendermaßen aus:

MAP
    NAME "Beschr_Test"
    EXTENT 426666.49 466058.21 448321.44 490754.58
    SIZE 700 900
    SHAPEPATH "/ms4w/Apache/htdocs/Oracle/daten"
    FONTSET ../fonts/fonts.list
    IMAGETYPE PNG
    IMAGECOLOR 255 255 255
    UNITS METERS
    STATUS ON
    RESOLUTION 72

    PROJECTION
        "init=epsg:4326"
    END

    WEB
        IMAGEPATH "/ms4w/apache/htdocs/tmp/"
        IMAGEURL "/tmp/"
        TEMPLATE "template_daniel2.html"
        METADATA
            WMS_Title "Beschr_Test"

                   ...    

        END
    END
    
LAYER
    NAME "VIEW_RWG_TBS"
    CONNECTIONTYPE OracleSpatial
    CONNECTION "user/PW at service"
    DATA "GEOM FROM view_RWG_TBS USING UNIQUE FID SRID 82032 VERSION 9i"
    TYPE POLYGON
    STATUS ON
    MINSCALE 1000
    MAXSCALE 10000
    PROJECTION
        "init=epsg:4326"
    END
    TRANSPARENCY 50
    CLASSITEM  'TM_NR'
    METADATA
        WMS_TITLE "RWG_TM_NR"
    END

    CLASS
        NAME "11_13_15"
        EXPRESSION ('[TM_NR]' IN "11,13,15")
           STYLE
               COLOR 0 0 205
           END
           STYLE
               OUTLINECOLOR 255 0 0
               WIDTH 1
               ANTIALIAS TRUE
           END
    END

# Hier folgen noch einige CLASS-Definitionen, die aber alle einwandfrei funktionieren

END

# Hier folgen die beiden Layer die zur Beschriftung dienen; es handelt sich hierbei ebenfall um Oracle-Spatial-Daten (Punktgeometrien)

LAYER
    NAME "LABEL_RW"
    CONNECTIONTYPE OracleSpatial
    CONNECTION "user/PW at service"
    DATA "GEOM FROM view_LABEL_RW USING UNIQUE FID SRID 82032 VERSION 9i"
    TYPE ANNOTATION
    STATUS ON
    MINSCALE 1000
    MAXSCALE 10000
    PROJECTION
        "init=epsg:4326"
    END
    LABELITEM "LABEL_TEXT"
    SYMBOLSCALE 3100
    METADATA
        WMS_TITLE "VIEW_LABEL_RW"
    END
    CLASS
      LABEL
    TYPE truetype
           FONT arial-bold
        SIZE 30
           ANTIALIAS TRUE
           COLOR 0 0 0
    OUTLINECOLOR 255 255 255
    POSITION uc
    FORCE TRUE
      END
    END
    LABELANGLEITEM "(100-ORIENTATION)*0.9"
END

LAYER
    NAME "LABEL_GFZ"
    CONNECTIONTYPE OracleSpatial
    CONNECTION "gds_brwk2004_umn/umn at gds1prod.stadt.nuernberg.de"
    DATA "GEOM FROM VIEW_LABEL_GFZ USING UNIQUE FID SRID 82032 VERSION 9i"
    TYPE ANNOTATION
    STATUS ON
    MINSCALE 1000
    MAXSCALE 10000
    PROJECTION
        "init=epsg:4326"
    END
    LABELITEM "LABEL_TEXT"
    SYMBOLSCALE 3100
    METADATA
        WMS_TITLE "VIEW_LABEL_GFZ"
    END
    CLASS
      LABEL
    TYPE truetype
           FONT arial-bold
        SIZE 11
           ANTIALIAS TRUE
           COLOR 0 0 0
    OUTLINECOLOR 255 255 255
    POSITION lc
    FORCE TRUE
      END
    END
    LABELANGLEITEM "(100-ORIENTATION)*0.9"
END

END


Der GetCapabilities Request liefert ein XML-Dokument, an dem nicht zu beanstanden ist. Kein <-- Waring --> wird abgedruckt und auch für die beiden LABEL-Layers ist eine saubere BBOX definiert.

Wenn ich nun aber die Capabilities in Mapbender hochlade und die zugehörige GUI aufrufe geht es mit den Problemen los. Mapbender lädt die Bedienelemente und Rahmen, allerdings erscheint keine Karte (auch nicht wenn ich in dem Bereich zwischen MINSCALE und MAXSCALE hineinzoome). Erst wenn ich in der .map-Datei MINSCALE und MAXSCALE in den LAYER-Objekten rauskommentiere, dann zeigt Mapbender eine Karte.

Allerdings bleibt die Beschriftung in der Karte immer gleich groß, egal wie ich den Wert unter SYMBOLSCALE ändere. Auch eine Veränderung der Schriftgröße (SIZE in den LABEL-Objekten) zeigt keinerlei Auswirkung. Erst wenn ich auch SYMBOLSCALE auskommentiere machen sich Veränderungen der Schriftgröße-Werte bemerkbar. Dann habe ich allerdings das Problem, dass die Schriftgröße sich nicht mit dem gewählten Maßstab verändert, sondern immer gelich groß bleibt; und das möchte ich ja nicht.

Daraufhin habe ich die Ausgangs-.map-Datei (siehe oben) wieder hergestellt und habe einen WMS-GetMap-Request über meinen browser gestartet; und zwar habe ich dazu verschieden große BBOXes verwendet um zu sehen ob die Größe der Beschriftung sich dynamisch mit dem Maßstab verändert.

Folgendes hab ich den Browser eingegeben:

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apache/htdocs/brwk/test.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&STYLE=default&BBOX=435896.35,478059.61,436390.06,478423.15&LAYERS=VIEW_RWG_TBS,LABEL_RW,LABEL_GFZ&FORMAT=image/png&BGCOLOR=0xFFFFFF&WIDTH=625&HEIGHT=463&EXCEPTIONS=application/vnd.ogc.se_inimage&

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apache/htdocs/brwk/test.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&STYLE=default&BBOX=435287.81,477935.39,436606.49,478911.17&LAYERS=VIEW_RWG_TBS,LABEL_RW,LABEL_GFZ&FORMAT=image/png&BGCOLOR=0xFFFFFF&WIDTH=625&HEIGHT=463&EXCEPTIONS=application/vnd.ogc.se_inimage&


Das Ergebniss war sehr schön; wie gewünscht veränderte sich die Schriftgröße mit dem Maßstab. Auch die MAXSCALE und MINSCALE Parameter stellten kein Problem mehr dar.

Leider habe ich keine Erklärung warum ich den WMS-Dienst zwar "manuell" aufrufen kann und sich die gewünschten Ergebnisse einstellen, wenn ich aber den gleichen Dienst in Mapbender einbinden will ergeben sich die oben beschriebenen Probleme.

Hat jemand von Euch dafür ein Erklärung? Irgendwelche Ideen bzw. alternative Lösungswege, wie ich skalierbare mit dem Mapbender Beschriftungen hinbekommen könnte? Könnte evtl. meine Mapbender-Installation korrupt sein?

Für Eure Hilfe und Eure investierte Zeit bin Euch schon jetzt sehr dankbar.


Grüße

Daniel
-- 


Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer




More information about the Mapbender_users mailing list