Risposte:
Ecco un altro modo in cui puoi farlo. In questo modo comporta l'utilizzo di un livello con espressioni in ogni classe. È un po 'più "costoso" farlo in questo modo perché coinvolge espressioni logiche, ma potresti non notare mai la differenza a meno che non ti imbatti in situazioni di carico elevato.
Ogni classe ha un'espressione in due parti. Entrambe le parti dell'espressione devono essere vere per poter disegnare le caratteristiche. La prima parte dell'espressione seleziona le caratteristiche che dovrebbero rientrare in quella classe in base a un attributo nel tuo shapefile. La seconda parte dell'espressione valuta il valore di una variabile passata attraverso l'URL. Non importa quale sia il nome della variabile nel tuo url (non usare parole riservate come 'layer'), deve solo corrispondere al nome della variabile nella tua espressione.
Ecco alcuni livelli di esempio:
LAYER
NAME "watersheds"
STATUS DEFAULT
DATA 'majclip'
TYPE POLYGON
CLASS
NAME "water"
EXPRESSION ([MAJOR] < 42 AND '%wanted%' = 'water')
STYLE
COLOR 0 0 255
END
END
CLASS
NAME "wood"
EXPRESSION ([MAJOR] >= 42 AND '%wanted%' = 'wood')
STYLE
COLOR 0 255 0
END
END
END
Per disegnare solo le caratteristiche dell'acqua, è necessario utilizzare una richiesta URL come questa: http: //localhost/cgi-bin/mapserv.exe? Map = / ms4w / apps / mymapfile.map & mode = map & wanted = wood
Poiché questo è il terzo modo valido per raggiungere il tuo obiettivo, vuoi davvero pensare a quali sono i tuoi obiettivi. Se i tuoi dati cambiano frequentemente, potresti voler scegliere questa opzione. Se i tuoi dati non cambiano così spesso, andrei personalmente con due livelli. Potrei anche dividere lo shapefile in più shapefile per tipo di uso del suolo se ciò migliorasse le prestazioni. (Potrebbe non essere, i filtri di livello sono piuttosto efficienti). Con Web mapping, più pre-ottimizzi i tuoi dati, meglio è.
Nel tuo caso dovresti avere due strati, uno per il legno e uno per l'acqua. Puoi avere due livelli usando lo stesso shapefile ..
Quindi puoi scegliere quali layer visualizzare direttamente nella richiesta tramite il parametro LAYERS. Le classi rappresentano solo parti diverse dei dati (ad es. Come devono essere resi i dati in quei livelli).
Se davvero, hai davvero bisogno di tutti in un unico livello, puoi usare Named Styles per raggiungere questo obiettivo. Vedi qui per maggiori dettagli. Il suggerimento di Peter su più livelli è in molti modi un approccio molto più semplice.