Come posso mostrare solo alcune classi di un layer in UMN-mapserver?


9

Visualizzo un layer forma nel map server. Ora voglio fare alcune richieste solo per alcune classi di questo livello. Voglio ad esempio una richiesta solo per le classi di acqua e successivamente solo per le classi di legno. Posso realizzarlo con il mapserver?

Risposte:


7

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 è.


7

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).


4

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.