Wie kann ich nur einige Klassen einer Ebene in UMN-Mapserver anzeigen?

9

Ich visualisiere eine Formebene im Mapserver. Jetzt möchte ich einige Anfragen nur für einige Klassen dieser Ebene stellen. Ich möchte zum Beispiel eine Anfrage nur für die Wasserklassen und später nur für die Holzklassen. Kann ich das mit dem Mapserver realisieren?

Mnementh
quelle

Antworten:

7

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.

DavidF
quelle
7

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

Peter
quelle
4

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.

Howard Butler
quelle