.. _example1-3: =========== Example 1.3 =========== Displaying Classes in a Layer ----------------------------- By using non-spatial attribute information in the data, we can create a map like this: .. image:: http://demo.mapserver.org/cgi-bin/mapserv?map=/osgeo/mapserver/tutorial/htdocs/example1-3.map&layer=states_poly&layer=states_line&mode=map MapFile Structure ################# This is what the mapfile looks like: :ref:`Example1-3.map `. The mapfile structure, by objects, looks like this: :: MAP (states_poly) LAYER----------|---------LAYER (states_line) | | (land) CLASS---|---CLASS (water) |-CLASS | | | STYLE-| |-STYLE |-STYLE Keywords ******** Our mapfile still only has two layers but the polygon layer has been broken down into two classes. Let's have a look at the additional parameters: **CLASSITEM** This keyword is used to specify what attribute to use in separating the class objects. In this example that attribute is "CLASS". If you open the database file associated with this layer's shapefile, you'll see that there's a column (attribute) called "CLASS". How do we know which attribute to use? Well, database records in shapefiles are stored in DBF files. You can open it in a spreadsheet program such as Openoffice.org's Calc, or in a desktop GIS software such as QGIS, Thuban, or ArcView. If your data came with a metadata (and it should!), you can skim through through that metadata file for attribute information. You can also use "ogrinfo" to display basic attribute info in your shapefiles--look back at example 1.1 (the last few lines after "Layer SRS WKT:" show the attribute names and types). **EXPRESSION** For each class, we specify what attribute value to use. This is the simplest form of EXPRESSION. EXPRESSIONs can be even more complex than this, allowing one to evaluate regular or logical expressions. Please look at the mapfile reference page to see what you can do with EXPRESSION. ---- :ref:`Back to Example 1.2 ` | :ref:`Proceed to Example 1.4 ` ----