Antworten:
Hier ist eine andere Möglichkeit, wie Sie es tun können. Auf diese Weise wird eine Ebene mit Ausdrücken in jeder Klasse verwendet. Es ist etwas "teurer", dies auf diese Weise zu tun, da es sich um logische Ausdrücke handelt, aber Sie werden den Unterschied möglicherweise nie bemerken, es sei denn, Sie treffen auf Situationen mit hoher Last.
Jede Klasse hat einen zweiteiligen Ausdruck. Beide Teile des Ausdrucks müssen wahr sein, damit die Features gezeichnet werden können. Der erste Teil des Ausdrucks wählt die Features aus, die in diese Klasse fallen sollen, basierend auf einem Attribut in Ihrem Shapefile. Der zweite Teil des Ausdrucks wertet den Wert einer Variablen aus, die über die URL übergeben wird. Es spielt keine Rolle, wie Sie die Variable in Ihrer URL benennen (verwenden Sie keine reservierten Wörter wie "Ebene"), sondern muss nur mit dem Variablennamen in Ihrem Ausdruck übereinstimmen.
Hier sind einige Beispielschichten:
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
Um nur die Wasserspiele zu zeichnen, verwenden Sie eine URL-Anfrage wie folgt : http: //localhost/cgi-bin/mapserv.exe? Map = / ms4w / apps / mymapfile.map & mode = map & want = wood
Da dies der dritte gültige Weg ist, um Ihr Ziel zu erreichen, möchten Sie wirklich darüber nachdenken, was Ihre Ziele sind. Wenn sich Ihre Daten häufig ändern, können Sie diese Option verwenden. Wenn sich Ihre Daten nicht so oft ändern, würde ich persönlich zwei Ebenen wählen. Ich könnte das Shapefile sogar nach Landnutzungstyp in mehrere Shapefiles aufteilen, wenn dies die Leistung verbessert. (Möglicherweise nicht, Ebenenfilter sind ziemlich effizient). Je mehr Sie mit Web Mapping Ihre Daten voroptimieren, desto besser.
Sie sollten in Ihrem Fall zwei Schichten haben, eine für Holz und eine für Wasser. Sie können zwei Ebenen mit demselben Shapefile verwenden.
Anschließend können Sie mit dem Parameter LAYERS auswählen, welche Ebenen direkt in der Anforderung angezeigt werden sollen. Die Klassen repräsentieren nur verschiedene Teile der Daten (z. B. wie Daten in diesen Ebenen gerendert werden sollen).
Wenn Sie wirklich alle in einer Ebene benötigen, können Sie benannte Stile verwenden, um dies zu erreichen. Sehen Sie hier für weitere Details. Peters Vorschlag für mehrere Schichten ist jedoch in vielerlei Hinsicht ein viel einfacherer Ansatz.