| Home | Products | Issue Tracker | Service Providers | FAQ | Twitter | Download

# Example1-7.map

    # The annotated map file (sort of)
    # Created by Pericles S. Nacionales for the MapServer tutorial
    # 20050408
    #
    # 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.
    MAP
      IMAGETYPE      PNG
      EXTENT        201621.496941 -294488.285333 1425518.020722 498254.511514 # LAEA
      #EXTENT         -97.5 41.619778 -82.122902 49.38562 # Geographic
      SIZE           400 300
      SHAPEPATH      "../data"
      SYMBOLSET      "../symbols/symbols35.sym"
      FONTSET        "../fonts/fonts.list"

      # 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.4 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.
      WEB
        IMAGEPATH "/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 although a limit is typically hard-coded
      # in map.h in the MapServer source.  The default limit is set at 100.  You'd
              # have to have a very specialized application to need more than 100 layers in
      # your application.
      #
      # Start of LAYER DEFINITIONS ---------------------------------------------
      LAYER # States polygon layer begins here
        NAME         states
        DATA         states_ugl
        STATUS       OFF
        TYPE         POLYGON

        # 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"

        # The class object is defined within the layer object.  You can define as
        # many classes as you need (well, there are limits as with layers, but it's
        # senseless to define more than ten on a "normal" layer.  There are
        # situations, however, where you might have to do it.)
        CLASS
          NAME '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.
          STYLE
            COLOR      232 232 232
          END
        END
      END # 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 4.x 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 here
        NAME         modis
        DATA         "raster/mod09a12003161_ugl_ll_8bit.tif"
        STATUS       OFF
        TYPE         RASTER
        PROCESSING   "BANDS=1,2,3"
        OFFSITE      71 74 65

        PROJECTION
          "init=epsg:4326"
        END
      END # MODIS raster layer ends here

      # MapServer can consume (in ESRI parlance) 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 JPL has a WMS server
      # that serves out MODIS and LandSat maps for the whole world--try storing
      # those datasets on your computer!
      LAYER # MODIS WMS map from JPL
        NAME         modis_jpl
        TYPE         RASTER
        OFFSITE      0 0 0
        STATUS       OFF
        CONNECTIONTYPE WMS
        CONNECTION "http://wms.jpl.nasa.gov/wms.cgi?"

        METADATA
          "wms_srs" "EPSG:4326"
          "wms_name" "modis"
          "wms_server_version" "1.1.1"
          "wms_format" "image/jpeg"
        END

        PROJECTION
          "init=epsg:4326"
        END
      END # Modis WMS image ends here

      LAYER # States line layer begins here
        NAME         states
        DATA         states_ugl
        STATUS       OFF
        TYPE         LINE

        PROJECTION
          "init=epsg:4326"
        END

        CLASSITEM    "CLASS"
        CLASS
          NAME       'State Boundary'
          EXPRESSION 'land'
          STYLE
            SYMBOL     'line5'
            COLOR      32 32 32
            SIZE       1
          END
        END
      END # States line layer ends here

      LAYER # States label layer begins here
        NAME         states_label
        DATA         states_ugl
        STATUS       OFF
        TYPE         ANNOTATION

        PROJECTION
          "init=epsg:4326"
        END

        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"

        CLASS
          EXPRESSION 'land'
          STYLE
            COLOR      -1 -1 -1
          END

          # 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
          # http://www.mapserver.org/mapfile for more information.
          LABEL
            COLOR 132 31 31
            SHADOWCOLOR 218 218 218
            SHADOWSIZE 1 1
            TYPE TRUETYPE
            FONT arial-bold
            SIZE 12
            ANTIALIAS TRUE
            POSITION CL
            PARTIALS FALSE
            MINDISTANCE 200
            BUFFER 4
          END # end of label
        END # end of class
      END # States label layer ends here
      # End of LAYER DEFINITIONS -------------------------------

    END # end of map file