Odpowiedzi:
Oto inny sposób, w jaki możesz to zrobić. Ten sposób wymaga użycia jednej warstwy z wyrażeniami w każdej klasie. Robienie tego w ten sposób jest nieco droższe, ponieważ wymaga wyrażeń logicznych, ale nigdy nie zauważysz różnicy, chyba że trafisz na naprawdę obciążone sytuacje.
Każda klasa ma dwuczęściowe wyrażenie. Obie części wyrażenia muszą być prawdziwe, aby rysować funkcje. Pierwsza część wyrażenia wybiera funkcje, które powinny należeć do tej klasy na podstawie atrybutu w twoim pliku kształtu. Druga część wyrażenia ocenia wartość zmiennej przekazanej przez adres URL. Nie ma znaczenia, jak nazwiesz zmienną w swoim adresie URL (nie używaj żadnych zastrzeżonych słów, takich jak „warstwa”), wystarczy dopasować nazwę zmiennej w wyrażeniu.
Oto kilka przykładowych warstw:
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
Aby narysować tylko funkcje wodne, należy użyć żądania adresu URL takiego: http: //localhost/cgi-bin/mapserv.exe? Map = / ms4w / apps / mymapfile.map & mode = map & Want = wood
Ponieważ jest to trzeci ważny sposób na osiągnięcie celu, naprawdę chcesz pomyśleć o swoich celach. Jeśli Twoje dane często się zmieniają, możesz skorzystać z tej opcji. Jeśli twoje dane nie zmieniają się tak często, osobiście wybrałbym dwie warstwy. Mógłbym nawet podzielić plik kształtów na wiele plików kształtów według typu użytkowania gruntów, jeśli to poprawi wydajność. (Może nie, filtry warstw są dość wydajne). Dzięki mapowaniu sieciowemu, im bardziej wstępnie zoptymalizujesz swoje dane, tym lepiej.
Powinieneś w swoim przypadku mieć dwie warstwy, jedną na drewno, a drugą na wodę. Możesz mieć dwie warstwy przy użyciu tego samego pliku kształtu.
Następnie możesz wybrać, które warstwy mają być wizualizowane bezpośrednio w żądaniu za pomocą parametru WARSTWY. Klasy reprezentują tylko różne części danych (np. Sposób renderowania danych w tych warstwach).
Jeśli naprawdę potrzebujesz ich wszystkich w jednej warstwie, możesz to zrobić, korzystając ze stylów nazwanych. Zobacz tutaj po więcej szczegółów. Sugestia Piotra dotycząca wielu warstw jest jednak pod wieloma względami znacznie prostszym podejściem.