User Tools

Site Tools


tecnica:gps_cartografia_gis:openlayers_mswms_tiled

OpenLayers con MapServer WMS

Il problema delle label

Con le impostazioni predefinite MapServer posiziona le label con algoritmi euristici per evitare sovrapposizioni, inoltre le etichette potrebbero risultare troncate al bordo dell'immagine. Questo crea non pochi problemi se si utilizza il meccanismo delle tile tipico di OpenLayers: in coincidenza con il bordo di ciascuna tile le etichette possono risultare troncate, duplicate o assenti del tutto.

Putroppo non esiste una soluzione definitiva a questo problema. In alcuni casi risulta accettabile disattivare il meccanismo di tiling (e di conseguenza il caching delle stesse tile), impostando l'opportuna opzione nel costruttore del layer:

var new_ol_wms = new OpenLayers.Layer.WMS( "WMS",
    "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'},
    { singleTile: true, ratio: 1 } );

In alternativa si possono aggiustare i seguenti parametri del MAP file:

MAP.WEB.METADATA.labelcache_map_edge_buffer -4 Lascia un margine di 4 pixel privo di etichette al bordo di ogni tile.
MAP.LAYER.CLASS.LABEL.POSITION cc Posiziona l'etichetta al centro della feature invece di usare l'algoritmo automatico.
MAP.LAYER.CLASS.LABEL.PARTIALS false Impedisce la stampa di etichette troncate. Richiede che FORCE sia impostato a false.
MAP.LAYER.CLASS.LABEL.FORCE false Se impostato a true impone che l'etichetta sia stampata comunque (eventualmente troncata).

FIXME Verificare la direttiva LABEL_NO_CLIP, da aggiungere a livello del layer:

LAYER
    PROCESSING "LABEL_NO_CLIP=ON"
    ...

dovrebbe obbligare la posizione della label rispetto alla feature, piuttosto che tentare un posizionamento automatico. Questo dovrebbe essere risolutivo!

tecnica/gps_cartografia_gis/openlayers_mswms_tiled.txt · Last modified: 2011/01/10 16:02 by niccolo