¿Cómo puedo mostrar solo algunas clases de una capa en UMN-mapserver?

9

Visualizo una capa de forma en el servidor de mapas. Ahora quiero hacer algunas solicitudes solo para algunas clases de esta capa. Quiero, por ejemplo, una solicitud solo para las clases de agua y luego solo para las clases de madera. ¿Puedo darme cuenta de esto con el servidor de mapas?

Mnementh
fuente

Respuestas:

7

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.

DavidF
fuente
7

En su caso, debe tener dos capas, una para madera y otra para agua. Puede tener dos capas usando el mismo archivo de forma.

Luego, puede elegir qué capas visualizar directamente en la solicitud mediante el parámetro LAYERS. Las clases solo representan diferentes partes de los datos (por ejemplo, cómo se deben representar los datos en esas capas).

Peter
fuente
4

Si realmente los necesita todos en una sola capa, puede usar Estilos con nombre para lograr esto. Ver aquí para más detalles. Sin embargo, la sugerencia de Peter de múltiples capas es, en muchos sentidos, un enfoque mucho más simple.

Howard Butler
fuente