Configure MapServer Cartography
Here we have tried to provide real life examples of symbology in iShare using MapServer along with a Symbols Gallery. See Symbols & Styling for other examples.
You should create your own symbols file in the /mapserver/shared/symbols folder and copy any symbols that you wish from the supplied symbolsms6.1.sym file which you will find in the same folder. Then you will be able to edit this file without a subsequent upgrade to iShare overwriting your changes and as it will only contain the symbols you wish to use will make it easier to manage. Your new symbols file must start with a SYMBOLSET entry and have a matching END and then each individual SYMBOL entry with matching END e.g.
SYMBOLSET SYMBOL NAME 'hospitals' TYPE PIXMAP IMAGE "isharemaps/hospital-1.png" END SYMBOL NAME 'circle' TYPE ELLIPSE FILLED TRUE POINTS 1 1 END END END
You will also need to edit the .MAP file and change the SYMBOLSET entry near the top to point to your new file e.g.
SYMBOLSET "d:/mapserver/shared/symbols/symbols_myfile.sym"
Polygon Fill Types
Using the HATCH symbol
The HATCH style allows for a line to be be used at any angle with any width, all defined in the .map file.
Description | CLASS snippet (from .map file) | Thumbnail |
---|---|---|
Standard horizontal (no ANGLE)
| CLASS NAME "" STYLE COLOR 196 0 0 SYMBOL "HATCH" SIZE 7 WIDTH 1 END STYLE OUTLINECOLOR 196 0 0 OUTLINEWIDTH 3 END END | |
ANGLE 135 | CLASS NAME "" STYLE COLOR 196 0 0 SYMBOL "HATCH" ANGLE 135 SIZE 7 WIDTH 1 END STYLE OUTLINECOLOR 196 0 0 OUTLINEWIDTH 3 END END | |
ANGLE 45 | CLASS NAME "" STYLE COLOR 0 0 196 SYMBOL "HATCH" ANGLE 45 SIZE 7 WIDTH 1 END STYLE OUTLINECOLOR 0 0 196 OUTLINEWIDTH 3 END END | |
ANGLE 90 | CLASS NAME "" STYLE COLOR 0 0 196 SYMBOL "HATCH" ANGLE 90 SIZE 7 WIDTH 1 END STYLE OUTLINECOLOR 0 0 196 OUTLINEWIDTH 3 END END | |
SIZE 10
WIDTH 4
| CLASS NAME "" STYLE COLOR 0 0 196 SYMBOL "HATCH" ANGLE 90 SIZE 7 WIDTH 1 END STYLE OUTLINECOLOR 0 0 196 OUTLINEWIDTH 3 END END |
Using Symbols for Filling Polygons
Description | Label Snippet | Thumbnail |
---|---|---|
POINT fill with CIRCLE The use of GAP and SIZE to change the spread and the size of the circles
NOTE a separate STYLE is needed for the OUTLINE | CLASS NAME "Postcode Areas" MAXSCALEDENOM 20000 STYLE SYMBOL "circle" SIZE 6 GAP 6 COLOR 196 0 0 OPACITY 60 END STYLE OUTLINECOLOR 196 0 0 WIDTH 2 OPACITY 60 END END END |
Line Styles
Description | Label Snippet | Thumbnail |
---|---|---|
Single Line | STYLE # thick outline COLOR 25 29 173 SIZE 2 END | |
Double Line | STYLE # thick outline COLOR 0 0 0 SIZE 6 END STYLE # colour middle COLOR 178 172 235 SIZE 3 END |
Point Styles
Description | Label Snippet | Thumbnail |
---|---|---|
Simple PIXMAP (external graphic) symbolHere the SYMBOL is definined in the relevant symbols .sym file or in the MAP header - See Symbols & Styling for other examples. | CLASS NAME "" STYLE SYMBOL "hospitals" END END | |
Scaled SymbologySeparate classes for scaled symbology and ensure that Legend Graphic isn't confusing. In this example there are three classes for emphasis. In this example the size of the circle depends upon the zoom level. | CLASS MAXSCALEDENOM 5000 NAME "" STYLE SYMBOL "circle" COLOR 255 255 128 OUTLINECOLOR 0 0 0 SIZE 7 END END CLASS STYLE SYMBOL "circle" COLOR 255 255 128 OUTLINECOLOR 0 0 0 SIZE 4 MINSCALEDENOM 5000 MAXSCALEDENOM 25000 END STYLE SYMBOL "circle" COLOR 255 255 128 SIZE 2 MINSCALEDENOM 25000 END END |
|
Graduated Point ThematicGraduated symbol size is handled by using a numerical attribute for the symbol size. In this example there are two classes for emphasis. The CLASSITEM entry defines the field that is to be used in the EXPRESSION etc. size_percent in this example.
| CLASSITEM "size_percent" CLASS NAME "Minor Crime" EXPRESSION ([size_percent] < 8) STYLE SYMBOL "circle" SIZE [size_percent] COLOR 0 0 255 END END CLASS NAME "Major Crime" STYLE SYMBOL "circle" SIZE [size_percent] COLOR 255 0 0 END END |
Boundary Styles
Description | Label Snippet | Thumbnail |
---|---|---|
Coloured Boundary – Transparent Fill | STYLE COLOR -1 -1 -1 OUTLINECOLOR 222 0 0 WIDTH 2 END | |
Coloured Boundary – Coloured Fill | STYLE COLOR 156 215 57 OUTLINECOLOR 0 0 0 WIDTH 2 END |
Labelling
Description | Label Snippet | Thumbnail |
---|---|---|
Label - with POSITION UCPlace the Label as Upper Centre | CLASS NAME "" STYLE SYMBOL "circle" COLOR 0 196 0 OUTLINECOLOR 255 255 255 SIZE 16 END LABEL FONT "verdana" TYPE truetype SIZE 8 POSITION UC COLOR 0 0 0 OUTLINECOLOR 255 255 255 OUTLINEWIDTH 3 MAXLENGTH 12 WRAP " " ALIGN CENTER BUFFER 10 END END | |
Concatenate fields (TEXT) and then WRAP on their comma | CLASS NAME "" TEXT "[stop_name],[place],[postcode]" STYLE SYMBOL "triangle" COLOR 0 196 0 OUTLINECOLOR 255 255 255 SIZE 16 END LABEL FONT "verdana" TYPE truetype SIZE 8 POSITION UC COLOR 0 0 0 OUTLINECOLOR 255 255 255 OUTLINEWIDTH 3 MAXLENGTH 12 WRAP "," ALIGN CENTER BUFFER 10 END END | |
Concatenate fields inside an SQL if using PostgreSQL(as opposed to the TEXT "[field1] field2 etc"
This gives utmost flexibility to how the text can be treated | DATA "wkb_geometry from (select *, coalesce(pn::text,rn::text) as hwy_name from upload_multi.hw_saltng_ntwrk) as foo using unique ogc_fid using srid=27700" LABELITEM "hwy_name" | |
ANGLE FOLLOW and MINFEATURESIZE AUTOWith the second screen shot you can see how the labelling can now fit within the FEATURE and therefore MINFEATURESIZE AUTO allows for this
MINFEATURESIZE also allows for the restriction according to the Minimum Bounding Rectangle of a feature (in pixels) | CLASS NAME "" STYLE PATTERN 10 5 5 10 END WIDTH 2 COLOR 0 0 255 OUTLINECOLOR 255 255 255 END LABEL FONT "verdana" TYPE truetype SIZE 7 POSITION LC COLOR 0 0 255 OUTLINECOLOR 255 255 255 OUTLINEWIDTH 4 ANGLE FOLLOW MINFEATURESIZE AUTO END | |
How can I label certain features and not others?
| CLASS NAME "Capitals" TEXT ([NAME]) EXPRESSION "1" STYLE SYMBOL "square" COLOR 0 0 0 SIZE 6 END LABEL FONT "arialbd" TYPE TRUETYPE COLOR 0 0 255 OUTLINECOLOR 255 255 255 SIZE 10 POSITION cc END END CLASS NAME "Others" EXPRESSION ([Rank] > 1) STYLE SYMBOL "circle" COLOR 255 0 0 SIZE 3 END END | |
As above with extra Label with different colour.
| CLASS NAME "Capitals" TEXT ([NAME]) EXPRESSION "1" STYLE SYMBOL "square" COLOR 0 0 0 SIZE 6 END LABEL FONT "arialbd" TYPE TRUETYPE COLOR 0 0 255 OUTLINECOLOR 255 255 255 SIZE 10 POSITION cc END END CLASS NAME "Others" EXPRESSION ([Rank] > 1) STYLE SYMBOL "circle" COLOR 255 0 0 SIZE 3 END TEXT ([NAME]) LABEL FONT "arialbd" TYPE TRUETYPE COLOR 255 0 0 OUTLINECOLOR 255 255 255 SIZE 8 POSITION cr END END |
Filtering
Description | Layer snippet | Thumbs |
---|---|---|
How do I filter a layer to only certain features?
Change the counties layer to include - see the Layer snippet -->
Please note this is different to only drawing certain features as it is like having a subquery. | FILTER "Cumbria" FILTERITEM "name" |
|
How do I filter a layer to only draw certain features based on a field value?Change the mainplaces Layer - see the Layer snippet -->
Have &Layer=mainplaces in the URL. | CLASSITEM "Rank" CLASS NAME "Capitals" EXPRESSION "1" STYLE SYMBOL "square" COLOR 0 0 0 SIZE 6 END END | |
How do I filter a layer to draw certain features in different styles based on a field value?Change the mainplaces Layer - see the Layer snippet -->
Have &Layer=mainplaces in the URL. | CLASSITEM "Rank" CLASS NAME "Capitals" EXPRESSION "1" STYLE SYMBOL "square" COLOR 0 0 0 SIZE 6 END END CLASS NAME "Others" EXPRESSION ([Rank] > 1) STYLE SYMBOL "circle" COLOR 255 0 0 SIZE 3 END END |
Advanced Scaled Symbology
Description | Layer snippet | Thumbs |
---|---|---|
Variable points styles depending on the scale of the map | CLASS NAME "" MAXSCALEDENOM 50000 STYLE SYMBOL "square" COLOR 255 128 0 OUTLINECOLOR 255 255 255 SIZE 16 END STYLE SYMBOL "C" COLOR 255 255 255 SIZE 10 END LABEL FONT "verdana" TYPE truetype SIZE 8 POSITION UC COLOR 255 128 0 OUTLINECOLOR 255 255 255 OUTLINEWIDTH 3 BUFFER 10 MAXSCALEDENOM 10000 END END |
|
A little more complexity, if boundaries are too complex then transform the geometries (GEOMTRANSFORM) to their centroids at a certain scale Other options include (from MapServer site) GEOMTRANSFORM [bbox|end|labelpnt|labelpoly|start|vertices|<expression>] Used to indicate that the current feature will be transformed before the actual style is applied. Introduced in version 5.4.
| CLASS NAME "Postcode Areas" MAXSCALEDENOM 20000 STYLE SYMBOL "circle" SIZE 6 GAP 6 COLOR 196 0 0 OPACITY 60 END STYLE OUTLINECOLOR 196 0 0 WIDTH 2 OPACITY 60 END LABEL FONT "verdana" TYPE truetype SIZE 8 POSITION UC COLOR 196 0 0 OUTLINECOLOR 255 255 255 OUTLINEWIDTH 3 MAXLENGTH 12 WRAP "," ALIGN CENTER BUFFER 10 MAXSCALEDENOM 10000 END END CLASS NAME "Postcode Points" STYLE MINSCALEDENOM 20000 SYMBOL "circle" GEOMTRANSFORM CENTROID COLOR 196 0 0 OUTLINECOLOR 255 255 255 SIZE 6 END END END |
|
Clusters
Description | Snippet | Thumb |
---|---|---|
CLUSTERS This layer is combined with the hw_road_accidents layer it is purely for display purposes highlighting some of the advanced functionality of MapServer
Note the class Accident Clusters in the layer hw_road_accidents - the second class isn't used for map display (due to MAXSCALEDENOM) but is here for the GetLegendGraphic request | hw_road_accidents LAYER NAME "hw_road_accidents" STATUS OFF TYPE POINT INCLUDE "datashare.inc" DATA "wkb_geometry from (select * from upload_multi.ecc_road_acc) as foo using unique ogc_fid using srid=27700" TOLERANCE 100 UNITS PIXELS CLASS NAME "Actual accidents" STYLE MAXSCALEDENOM 25000 SYMBOL "circle" SIZE 5 COLOR 255 0 0 END END CLASS NAME "Accident clusters" MAXSCALEDENOM 1 STYLE SYMBOL "circle" SIZE 26 COLOR 255 255 255 OUTLINECOLOR 0 0 0 WIDTH 6 OPACITY 10 END STYLE SYMBOL "circle" SIZE 20 COLOR 255 255 255 OUTLINECOLOR 0 0 0 WIDTH 6 OPACITY 30 END STYLE SYMBOL "circle" SIZE 16 COLOR 255 255 255 OUTLINECOLOR 40 40 40 WIDTH 3 END END END |
|
Legend Graphics
- Rely on NAME entry on CLASS
- If no NAME entry then ignored - extremely powerful
MasterMap Examples
Description | Label Snippet | Thumbnail |
---|---|---|
GoLoaderShowing an area of Coniferous trees | CLASSITEM "OSMMSTYLE_NAME" CLASS EXPRESSION "scatteredConiferousTreePattern" STYLE COLOR 224 224 224 OUTLINECOLOR 204 204 204 SYMBOL "0380Scattered" END END | |
TranspOSe/SuperpOSeShowing an area of Non Coniferous trees | CLASSITEM "Legend" CLASS EXPRESSION "0384 Nonconiferous trees" STYLE COLOR 0 0 0 OUTLINECOLOR 204 204 204 SYMBOL "0384" END END |