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