# The annotated map file (sort of)# Created by Pericles S. Nacionales for the MapServer tutorial# 2005-04-08# Maintained & enhanced since by Jeff McKenna, GatewayGeo# 2023-04-19 last updated## MapServer map file uses the pound sign (#) to denote the start of a line# comment--each line that needs to be commented has to be prepended with a "#".## Map files begin with MAP keyword to signify the start of the map object.# Well, the entire map file is THE map object. Enclosed between MAP and END# at the very bottom of this map file, are keyword/value pairs and other# objects.MAPIMAGETYPEPNG24EXTENT201621.496941-294488.2853331425518.020722498254.511514# LAEA#EXTENT -97.5 41.619778 -82.122902 49.38562 # GeographicSIZE400300SHAPEPATH"../data"SYMBOLSET"../symbols/symbols.txt"FONTSET"../fonts/fonts.txt"# The projection object is typically used within the map and the layer# objects. You only define it once within the map object and this definition# becomes your output projection--MapServer will render your maps in this# projection. You also use the projection object within the layer object to# define your input projection. Your layers can be in different# projections--MapServer will reproject them into your output projection.# If no projection is defined within the layer object, MapServer assumes# your input projection is the same as your output projection. This is not# a required object unless you're creating a map file that supports one of# the OGC interoperability web services specifications (WMS/WFS/WCS).## This is the output PROJECTION definition ------PROJECTION# Projection parameters can be defined in two ways...# This is the traditional PROJ definition of Lambert Azimuthal Equal-Area# projection for the Continental U.S.# "proj=laea"# "ellps=clrk66"# "lat_0=45"# "lon_0=-100"## Alternatively, you can specify an EPSG code.# This is the EPSG code for Lambert Azimuthal Equal-Area# projection for the U.S."init=epsg:2163"END# The web object is defined at the level below the map object. All# web-related parameters (I interchange "parameters" and "keyword/value# pairs" quite frequently, sorry about that) are defined in this object.WEBIMAGEPATH"/ms4w/tmp/"IMAGEURL"/tmp/"END# Layer objects are defined beneath the map object. You need at least one# layer defined in your map file before you can display a map... You can# define as many layers as you'd like.## Start of LAYER DEFINITIONS ---------------------------------------------LAYER# States polygon layer begins hereNAME"states"DATA"states_ugl.shp"STATUSOFFTYPEPOLYGON# Here's an example of the input projection definition.# EPSG:4326 is code for geographic (latlong) projection# using the WGS84 datum.## PROJECTION objects within the LAYER object define the input# projection--this is the native projection of your data.PROJECTION"init=epsg:4326"END# CLASSITEM defines the non-spatial attribute that you will be using to# separate a layer into classes. This attribute will be in the DBF file# of your shapefile (it will be different for each data format). In this# example the shapefile states_ugl has an associated database# (states_ugl.dbf) that contains an attribute called "CLASS". You will be# using two values in the CLASS attribute to separate the classes (also# called themes) used in this layer--land and water. CLASSITEM is used in# association with the EXPRESSION parameter in the CLASS object. See below.CLASSITEM"CLASS"# Just like CLASSITEM, LABELITEM defines the database attribute that you# will be using to draw labels. In this case, the values of the attribute# "STATE" will be used to label the states polygons.LABELITEM"STATE"# The class object is defined within the layer object. You can define as# many classes as you need.CLASSNAME'States'EXPRESSION'land'# There are styles in a class, just like there are classes in a layer,# just like there are layers in a map. You can define multiple styles in# a class just as you can define multiple classes in a layer and multiple# layers in a map.STYLECOLOR232232232END# There can be labels in a class, just like there are classes in a layer,# just like there are layers in a map. You can define multiple labels in# a class just as you can define multiple classes in a layer and multiple# layers in a map.# MapServer has a very flexible labeling system. With that flexibility# comes complexity, specially when using truetype fonts. Please read# through the LABEL section of the MapServer map file documentation at# https://mapserver.org/mapfile for more information.LABELCOLOR1323131SHADOWCOLOR218218218SHADOWSIZE11TYPETRUETYPEFONTarial-boldSIZE12ANTIALIASTRUEPOSITIONCLPARTIALSFALSEMINDISTANCE200BUFFER4END# end of labelEND# end of classEND# States polygon layer ends here# In addition to vector data (shapefiles are vector data), MapServer supports# a host of raster formats. In GIS world, one of the most common raster# formats is GeoTIFF, a TIFF image with geospatial headers. MapServer also# supports JPEG, PNG, GIF, and other common formats. Other raster formats# supported by MapServer include ESRI Arc/Info grid, HDF and HDF-EOS, NetCDF,# Generic raster binaries, OGC Web Map Service (WMS) layers, etc. Pretty much# any raster format you can think of is probably supported, thanks to the# impressive Geospatial Data Abstraction Library (GDAL, pronounced "GOODALL"# or GOODLE?). More information on GDAL is available at http://www.gdal.org.## MapServer can read and display bitmapped (like GIFs), RGB/A (true# color), and multispectral (images with more than 3 bands, like raw LandSat# images) rasters.LAYER# MODIS raster layer begins hereNAME"modis"DATA"raster/mod09a12003161_ugl_ll_8bit.tif"STATUSOFFTYPERASTERPROCESSING"BANDS=1,2,3"OFFSITE717465PROJECTION"init=epsg:4326"ENDEND# MODIS raster layer ends here# MapServer can consume layers from other map servers as# long as those servers are Web Mapping Service (WMS) providers. WMS is a# web service specification from Open Geospatial Consortium (OGC) and is# intended to be an interoperability standard for web mapping applications.# This allows us to display layers we don't usually have (or can't store in# our computers due to space limitations). The downside is that we have to# depend on some other server to display our layer, and that server can be# down when you really need it. The cool thing is that NASA has a WMS server# that serves out MODIS satellite maps for the whole world--try storing# those datasets on your computer! Read more about the service at# https://nasa-gibs.github.io/gibs-api-docs/available-visualizations/LAYER# MODIS WMS map from NASANAME"modis_nasa"TYPERASTEROFFSITE000STATUSOFFCONNECTIONTYPEWMSCONNECTION"https://gibs.earthdata.nasa.gov/wms/epsg4326/best/wms.cgi?"METADATA"wms_srs""EPSG:4326""wms_name""Blue Marble""wms_server_version""1.1.1""wms_format""image/jpeg"ENDPROJECTION"init=epsg:4326"ENDEND# Modis WMS image ends hereLAYER# States line layer begins hereNAME"states"DATA"states_ugl.shp"STATUSOFFTYPELINEPROJECTION"init=epsg:4326"ENDCLASSITEM"CLASS"CLASSNAME'State Boundary'EXPRESSION'land'STYLESYMBOL'line5'COLOR323232SIZE1ENDENDEND# States line layer ends here# End of LAYER DEFINITIONS -------------------------------END# end of map file