Aquí hay otra forma de hacerlo. De esta manera, se utiliza una capa con expresiones en cada clase. Es un poco más 'costoso' hacerlo de esta manera porque involucra expresiones lógicas, pero es posible que nunca note la diferencia a menos que encuentre situaciones de carga realmente alta.
Cada clase tiene una expresión de dos partes. Ambas partes de la expresión deben ser verdaderas para que se dibujen las características. La primera parte de la expresión selecciona las características que deben caer en esa clase en función de un atributo en su archivo de forma. La segunda parte de la expresión evalúa el valor de una variable que se pasa a través de la url. No importa cómo nombre la variable en su URL (no use palabras reservadas como 'capa'), solo tiene que coincidir con el nombre de la variable en su expresión.
Aquí hay algunas capas de muestra:
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
Para dibujar solo las características del agua, usaría una solicitud de URL como esta:
http: //localhost/cgi-bin/mapserv.exe? Map = / ms4w / apps / mymapfile.map & mode = map & wanted = wood
Dado que esta es la tercera forma válida de lograr su objetivo, realmente desea pensar cuáles son sus objetivos. Si sus datos cambian con frecuencia, puede optar por esta opción. Si sus datos no cambian con tanta frecuencia, personalmente elegiría dos capas. Incluso podría dividir el shapefile en múltiples shapefiles por tipo de uso del suelo si eso mejorara el rendimiento. (Puede que no, los filtros de capa son bastante eficientes). Con el mapeo web, cuanto más optimice previamente sus datos, mejor.