Imported Upstream version 5.6.5

parent 0b87de46

Too many changes to show.

To preserve performance only 93 of 93+ files are displayed.

============ ===================== =================================== ================================
Login(s) Name Email / Contact Area(s)
============ ===================== =================================== ================================
sdlime Steve Lime steve.lime at Overall
dan Daniel Morissette dmorissette at OGC Web Services, PHP MapScript
sean Sean Gillies sgillies at SWIG MapScript (retired)
assefa Assefa Yewondwossen assefa at OGC Web Services, Flash, SVG,
julien Julien-Samuel Lacroix jlacroix at OGC Web Services
warmerdam Frank Warmerdam warmerdam at Raster, outputFormatObj,
hobu Howard Butler at mapsde.c
pramsey Paul Ramsey pramsey at mappostgis.c, maptile.c
jerryp Jerry Pisk jerry.pisk at
ned Ned Harding nharding at
attila Attila Csipa plists at imagemap, mygis
fsimon Fernando Simon fsimon at maporacle
novak John Novak hetzerrrat mapgraticule
jani Jani Averbach javerbach extendthereach com External Plugin Layers
tamas Tamas Szekeres szekerest at MapScript C#
umberto Umberto Nicoletti umberto.nicoletti at MapScript Java
tomkralidis Tom Kralidis tomkralidis at OGC, Perl Mapscript
tbonfort Thomas Bonfort thomas.bonfort at AGG, Charting
jmckenna Jeff McKenna jmckenna at Documentation
aboudreault Alan Boudreault aboudreault at OGR, general bug fixes
toby Toby Rahilly toby.rahilly at OpenGL
jbourke Jonathan Bourke jonathan.bourke at OpenGL
============ ===================== =================================== ================================
Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002 by Cold Spring Harbor Laboratory. Funded under Grant
P41-RR02188 by the National Institutes of Health.
Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
Boutell.Com, Inc.
Portions relating to GD2 format copyright 1999, 2000, 2001, 2002
Philip Warner.
Portions relating to PNG copyright 1999, 2000, 2001, 2002 Greg
Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002 John
Ellson (
Portions relating to gdft.c copyright 2001, 2002 John Ellson
Portions relating to JPEG and to color quantization copyright 2000,
2001, 2002, Doug Becker and copyright (C) 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, Thomas G. Lane. This software is
based in part on the work of the Independent JPEG Group. See the
file README-JPEG.TXT for more information.
Portions relating to WBMP copyright 2000, 2001, 2002 Maurice
Szmurlo and Johan Van den Brande.
Permission has been granted to copy, distribute and modify gd in
any context without fee, including a commercial application,
provided that this notice is present in user-accessible supporting
This does not affect your ownership of the derived work itself, and
the intent is to assure proper credit for the authors of gd, not to
interfere with your productive use of gd. If you have questions,
ask. "Derived works" includes all programs that utilize the
library. Credit must be given in user-accessible documentation.
This software is provided "AS IS." The copyright holders disclaim
all warranties, either express or implied, including but not
limited to implied warranties of merchantability and fitness for a
particular purpose, with respect to this code and accompanying
Although their code does not appear in gd, the authors wish to thank
David Koblas, David Rowley, and Hutchison Avenue Software Corporation
for their prior contributions.
This source diff could not be displayed because it is too large. You can view the blob instead.
Visit for full documentation and installation
Unix compilation instructions
See README.CONFIGURE or the document on the MapServer website at
Win32 compilation instructions
See README.WIN32 or the document on the MapServer website at
MapServer 5.4 to 5.6 Migration Guide
This section documents the changes that must be made to MapServer
applications when migrating from version 5.4.x (or earlier versions)
to 5.6 (i.e. backwards incompatibilities), as well as information
on some of the new features.
MapScript changes related to single pass queries
In RFC-52, MapServer was modified to perform queries using a single pass
on the data instead of two passes. This is transparent for CGI applications,
but MapScript scripts must be modified to use the layer.resultsGetShape()
method instead of layer.getShape().
See also:
WFS 1.1 axis orientation
The axis order in previous versions of the WFS specifications was to always use easting (x or lon ) and northing (y or lat). WMS 1.1 specifies that, depending on the particular SRS, the x axis may or may not be oriented West-to-East, and the y axis may or may not be oriented South-to-North. The WFS portrayal operation shall account for axis order. This affects some of the EPSG codes that were commonly used such as ESPG:4326. The current implementation makes sure that coordinates returned to the server for the GetFeature request reflect the inverse axis orders for EPSG codes between 4000 and 5000.
Change of mime-type for the imagemap outputformat
RFC 36 added support for templated outptformats, but this new feature
was not available for WMS GetFeatureInfo ouptut (see ticket #3024).
In MapServer 5.6 this has been resolved by implementing lookup of output
formats for query templates by mime-type. However this caused a conflict
for the text/html mime-type between the actual text/html query
templates and the preconfigured imagemap outputformat which also used the
text/html mime-type.
In order to resolve this conflict, the mime-type of the imagemap outputformat
has been changed to "text/html; driver=imagemap". This is unlikely to cause
much side-effects to existing applications, but the change is documented here
just in case.
MapServer 5.2 to 5.4 Migration Guide
This section documents the changes that must be made to MapServer
applications when migrating from version 5.2. (or earlier versions)
to 5.4 (i.e. backwards incompatibilities), as well as information
on some of the new features.
New requirements for mapfiles, symbolsets and templates
Due to some potential security vulnerabilities that were uncovered in previous
versions of MapServer, RFC-56 introduced a number of changes to tighten
access control on mapfiles and templates and limit the risk of leaking
arbitrary file contents. These changes were introduced in version 5.4.0,
and were also backported to v5.2.2 and 4.10.4.
The new requirements are as follows:
* The MAP and SYMBOLSET keywords must be added to any mapfile and symbolset
that did not contain them already.
* All MapServer templates must be updated to contain the "MapServer Template"
magic string on the first line. This string can be embedded
in a commment depending on the template formet and the whole line will
be skipped in the output generation. e.g.
* In HTML: <!-- MapServer Template -->
* In JavaScript: // MapServer Template
See also:
MapServer 4.10 to 5.0 Migration Guide
This section documents the changes that must be made to MapServer
applications when migrating from version 4.10.x (or earlier versions)
to 5.x (i.e. backwards incompatibilities), as well as information
on some of the new features.
Mapfile changes
Attribute Bindings: In an effort to stem the tide of keyword overload
and add functionality MapServer 5.0 supports a new method of binding
feature attributes to STYLE and LABEL properties. In the past keywords
like ANGLEITEM or LABELSIZEITEM were used, now you denote the attribute
in the context of the property being bound. For example, to bind an
attribute to a label size you'd do:
SIZE [mySizeItem]
The []'s denote a binding (as with logical expressions). The following
keywords are no longer supported and their presence will throw an error:
The following properties can accept bindings:
* Style: angle, color, outlinecolor, size, symbol
* Label: angle, color, outlinecolor, size, font, priority
Colors may be given as a hex value (e.g. #FFFFFF) or an RGB triplet
(e.g. 255 255 255).
Layer Transparency: The values for the TRANSPARENCY parameter have always
been backwards and in an effort to resolve that the parameter has been
renamed OPACITY. TRANSPARENCY is still recognized by the mapfile parser
but is depricated and should be avoided.
Scale Parameters: MapServer's handling of scale has long been a source
for confusion. The values use in a layer MINSCALE are really the denominators
from a representative fraction (e.g. 1:24000). To help clarify this all
scale parameters are now end with DENOM. So MINSCALE => MINSCALEDENOM,
SYMBOLSCALE => SYMBOLSCALEDENOM, and so on. The mapfile parser still
recognizes the older keywords but they are depricated and should be avoided.
Symbol file changes
Symbol Style: STYLEs are used within a symbol definition to store dash
patterns for line symbolization. However, there is potential confusion
with the style object that is used within class definitions. To resolve
that confusion the symbol STYLE parameter has been renamed PATTERN. The
symbol file parser will still recognize the STYLE keyword but it is
depricated and should be avoided.
Styling/Symbolgy changes
Prior to MapsServer 5.0, if a pixmap symbol was used in style on a Line
Layer, the symbol was used as a brush to draw the line. In MapServer 5.0,
it is possible to draw the pixmap symbol along the line (Note that this
was available using a true type symbol). To achieve this, the user needs
to use the parameter GAP with it's pixmap symbol definition in the symbol
file. The GAP represents the distance between the symbols. If the GAP is not
given, the pixmap symbol will be used as a brush.
AGG rendering changes
see `the AGG rendering specifics`_ for the changes relating to the addition
of the `Antigrain Geometry`_ rendering engine.
.. _`the AGG rendering specifics`:
.. _`Antigrain Geometry`:
URL configuration changes
Previous versions of the MapServer CGI program allowed certain parameters
to be changed via a URL using a cumbersome syntax such as
map_layer_0_class_0_color=255+0+0 which changes the color in one classObj.
Not only was this cumbersome for users but also from a code maintenance
perspective since we had to maintain seperate loaders for URL-based config
and file-based config. RFC-31 attempts to streamline both by migrating to
a single object loading function that can be used with strings (either in
MapScript or via URL) or with files.
So, in the past you have to change parameters one-at-a-time. Now you can
pass chunks of mapfiles (with security restrictions) to the CGI interface.
The map_object notation is still necessary to identify which object you
want to modify but you can change multiple properties at one time. Note
that you can use either a '_' or a '.' to seperate identifiers.
Example 1, changing a scalebar object:
Example 2, changing a presentation style:
Example 3, creating a new feature
The variable identifies an object uniquely (by name or index in the case of
layerObj's and classObj's). The value is a snippet of a mapfile. You
cannot create new objects other than inline features at this point.
Validation patterns for mapserv attribute queries
Attribute queries (qstring) done via the mapserv CGI could theoretically
be used for SQL injection.
No exploit has been reported, but in order to mitigate the risk, a new
validation pattern mechanism has been added in 5.0.
In the case of qstring attribute queries, the qstring_validation_pattern
layer-level metadata is required for qstring queries to work. The metadata
value is a regular expression that the qstring value must match otherwise
mapserv produces a fatal error. A fatal error is also produced if qstring
is used but qstring_validation_pattern is not provided.
Note that similar validation pattern mechanism has been available for
%variable% substitutions since version 4.10, but in this case it is optional.
The pattern for %myvar% is provided via a metadata called
SWIG MapScript (Python, Perl, CSharp, Java) changes
Layer Transparency: The layerObj transparency parameter is now called
opacity. Scripts setting that value in code must be updated.
Symbol Style: the symbolObj style parameter is now called pattern. MapScript
does not allow direct modification of that parameter. In Swig-based languages
the symbolObj method setStyle is now called setPattern. In PHP/MapScript, the
methods setStyle and getStyle are now called setPattern and getPattern.
A new msGetVersionInt() function returning the current MapServer version in
integer format has been added to facilitate version checks in the future.
Given version x.y.z, it returns (x*0x10000 + y*0x100 + z). For instance, for
v5.0.0 it will return 0x050000 (note the hexadecimal notation).
CSharp related changes
The MapScript C# classes are now placed into the OSGeo.MapServer namespace
The scripts should use the fully qualified names of the classes or apply
using OSGeo.MapServer;
or the corresponding language equivalent.
PHP/MapScript changes
Layer Transparency: The layerObj transparency parameter is now called
opacity. The old "transparency" name is deprecated and will be removed in
a future release. Scripts getting/setting that value in code must be updated.
All occurences of scale, minscale, maxscale, etc... parameters have been
deprecated and renamed with a "denom" suffix (e.g. minscale becomes
minscaledenom, etc.). The deprecated parameters will be removed in a
future release. Scripts getting/setting them must be updated.
SymbolObj style has been renamed pattern. The old "stylelength" parameter
and setStyle() and getStyleArray() methods have been deprecated and
"patternlength", setPattern() and getPatternArray() should be used
instead. They will be removed in a future release.
layer.getShape(int tileindex, int shapeindex)) has been deprecated and
renamed to layer.getFeature(int shapeindex [, int tileindex = -1]) to
match the SWIG MapScript equivalent. Note that the order of the arguments
is reversed since tileindex is optional in getFeature().
class.getExpression() and layer.getFilter() have been deprecated and
renamed to class.getExpressionString() and layer.getFilterString() to
match what we have in SWIG MapScript. The String suffix in the function
name also more clearly indicates that the return value is not an object
but a string representation of it.
A new ms_GetVersionInt() function returning the current MapServer version in
integer format has been added to facilitate version checks in the future.
Given version x.y.z, it returns (x*0x10000 + y*0x100 + z). For instance, for
v5.0.0 it will return 0x050000 (note the hexadecimal notation).
OGC Web Map Service (WMS)
Required Parameters for GetMap and GetFeatureInfo: previously, MapServer
did not check for the following parameters when responding to an OGC:WMS
GetMap or GetFeatureInfo request:
That is, a GetMap request would process without error if these were not
passed by the WMS client.
A compliant OGC:WMS 1.1.0 and 1.1.1 REQUIRES these parameters. This may
affect OGC:WMS client requests who were not passing these values. Ticket
1088 fully documents this issue. In addition to WMS compliance, this was also
decided that by adding this constraint, if an OGC client request (as described
earlier) breaks something, people should fix their client anyway since
if they change WMS vendor, they will have problems as well.
OGC Web Feature Service (WFS)
OGC Sensor Observation Service (SOS)
- The format of MAP/LAYER/METADATA/sos_describesensor_url
has been changed such that users now must format the value
"sos_describesensor_url" ""
This change has been made to clarify and unify the meaning of procedure
within SOS Server's context of a DescribeSensor request.
- Metadata associated with an observedProperty element's
swe:component value have been changed to support a URN
scheme, instead of the previous "sos_componenturl" metadata. The
"sos_componenturl" metadata is no longer supported. Instead,
"sos_observedproperty_authority" and "sos_observedproperty_version"
should be used to format the swe:component value.
Build Changes
MapServer's main include file has been renamed from "map.h" to "mapserver.h".
A new mapserver-config script has been created with the following options:
Usage: mapserver-config [OPTIONS]
The shared and static link libraries for MapSserver have been renamed and libmapserver.a respectively.
The --enable-coverage configure option has been renamed to --enable-gcov
since the former name led users to think it might be related to enabling
support for WCS or Arc/Info coverages:
--enable-gcov Enable source code coverage testing using gcov
Features Heading for Deprecation
Some features present in MapServer are likely to be removed in a future
release. Features might be headed for deprecation because:
- they have been replaced by a superior or more capable solution
- they have stopped being maintained
Users of these features should be prepared for these upcoming changes
and start adapting their mapfiles in consequence. If you have strong
and motivated objections as to the removal of one or more of these
features please open a discussion in the usual Mapserver communication
Cartoline symbols: these were a hack to overcome GD weaknesses, and their
functionality is now supported by the AGG renderer. They have become poorly
supported in current MapServer versions. Keywords allowing for setting the
style of line joins and caps will be moved to the STYLE block.
RGB/RGBA output with GD: support for RGB and RGBA image types will likely not
be maintained anymore. PC256 will continue to be supported with GD, while RGB
and RGBA will liekly only be supported with AGG
# Run ./configure in the main MapServer directory to turn this
# into a proper Makefile
prefix = @prefix@
exec_prefix = @exec_prefix@
INST_PREFIX = @exec_prefix@
INST_LIB = @libdir@
INST_BIN = @bindir@
# MS_VERSION - Set by configure based in mapserver.h
# Name of static and shared libs to produce
LIBMAP_STATIC= libmapserver.a
LIBMAP_SHARED= libmapserver.@SO_EXT@
LIBMAP_SH_VER= libmapserver.$(MS_VERSION).@SO_EXT@
# If you want to ignore missing datafile errors uncomment the following
# line. This is especially useful with large tiled datasets that may not
# have complete data for each tile.
# If you want to use shape Z and M parameter this option must be set.
# It's OFF by default.
# If you want to use disable fast versions of NINT (used by default) then
# define the following
# It's OFF by default.
# Apparently these aren't as commonplace as I'd hoped. Edit the
# following line to reflect the missing functions on your platform.
# Proj.4 distribution (cartographic projection routines). Not required for normal use.
# GD distribution (graphics library GIF and/or PNG support). (REQUIRED)
# - Versions 1.3 to 1.5 write non-LZW GIF (-DUSE_GD_1_3).
# - Versions 1.6 and greater write PNG (-DUSE_GD_1_6). Add -lpng -lz to GD_LIB line.
GDFONT_OBJ=gd-1.2/gdfontt.o gd-1.2/gdfonts.o gd-1.2/gdfontmb.o gd-1.2/gdfontl.o gd-1.2/gdfontg.o
# Optional Anti-Grain Geometry Support.
# Optional Opengl Support.
# Optional Opengl Support.
# ZLIB option (compressed SVG)
# PDFlib distribution (PDF library w/ PDF support). (EXPERIMENTAL)
# TIFF distribution (raster support for TIFF and GEOTIFF imagery). (RECOMMENDED)
# JPEG distribution (raster support for grayscale JPEG images, INPUT ONLY).
# EPPL7 Support (this activates ERDAS as well) Included in the distribution. Probably the best raster alternative if
# you've got EPPL7 laying around. See for more information. (RECOMMENDED)
# ESRI SDE Support. You MUST have the SDE Client libraries and include files
# on your system someplace. The actual SDE server you wish to connect to can
# be elsewhere.
# Optional OGR Support. OGC Simple Feature inspired interface for vector
# formats. See
# Note that since OGR is part of the GDAL library, it uses GDAL_LIB + GDAL_INC
# Optional GDAL Support (provides read access to a variety of raster formats)
# See
# Optional GEOS Support.
# See
# Optional PostGIS Support. See
# Optional MyGIS Support.
# Optional ORACLESPATIAL Support. Contact:
# Optional MING/SWF/FLASH Support. Contact:
# libcurl ... required for WMS/WFS Client Connections
# libfribibi ...
# libxml2 ... required for OGC SOS Server
# Optional FastCGI
# OWS: OGC Web Services support
# OGC WMS Server: -DUSE_WMS_SVR (Requires PROJ4 support)
# OGC WMS Client Connections: -DUSE_WMS_LYR (Requires PROJ4 and libcurl)
# OGC WFS Server: -DUSE_WFS_SVR (Requires OGR, PROJ4 recommended)
# OGC WFS Client: -DUSE_WFS_LYR (Requires OGR, PROJ4 and libcurl)
# OGC WCS Server: -DUSE_WCS_SVR (Requires GDAL and PROJ4)
# OGC SOS Server: -DUSE_SOS_SVR (Requires PROJ4 and libxml2)
# In order to compile the PHP_MAPSCRIPT module, we have to make MapServer
# use the same version of the REGEX library that PHP was compiled with:
# Multithreading support.
# libiconv - Enables Internationalization
# Pick a compiler, etc. Flex and bison are only required if you need to modify the mapserver lexer (maplexer.l) or expression parser (mapparser.y).
CC= @CC@
AR= ar rc
# figure out how to build a shared library.
# most of the relevant stuff is in AC_LD_SHARED in
# aclocal.m4