Beginning MapServer Open Source GIS Development, by Bill Kropla; publ. Apress 2005
This book serves as an introduction to UMN MapServer. Despite the title, MapServer is not a true GIS package. However, it is a powerful map server package with some query abilities. It is a popular choice for web developers who wish to develop their map application without having to rely on a third party server such as Google Maps or Virtual Earth.
The book covers everything from installation and simple map files through to more advanced features, databases, and queries. It will be a useful complement to the various online resources, and invaluable for a newcomer to MapServer.
The book is organised in a logical manner. The first chapter covers building and installing MapServer, and is followed by a simple "Hello World" example before progressing through more sophisticated examples. A long chapter on Query Mode is followed by sample applications using MapScript's PERL, Python, and PHP interfaces. Finally the main section of the book ends with chapter devoted to using MapScript with MySQL to produce a practical application. The final two chapters and appendix cover useful reference material.
Although the "Hello World" example is trivial, it is actually a very useful example as this proves to be a good test that MapServer is installed correctly and that Apache is talking to it correctly. It also illustrates how MapServer can be used to serve an image that is embedded in a HTML file. The remaining examples all work with real map data such as the US National Atlas data set.
MapServer layers are described using a map file. This is a text file that provides data formatting information. Map file functionality is introduced in a logical manner. Common tricks are described. This is where MapServer design moves from the technical/programming to the more visual side of design. Effects such as making a group of features appear, disappear or otherwise change their appearance according to the scale, are described. Auxiliary images such as keys and overview maps are also covered.
MapServer's Query Mode can query features according to their geography or attributes, and results can be returned visually or as text. With all this functionality and nine different query modes, the Query Mode chapter is the longest chapter in the book. The chapter also covers some efficiency issues.
The chapters covering MapScript are virtually identical. These three chapters take the same basic application and implement it using PERL, Python, and PHP respectively. At this point, the map files should be familiar to the reader. The only differences are the programming interfaces.
The final application example uses PHP MapScript with MySQL, and serves to demonstrate how to pull all the different subjects together into a working application.
The last two chapters are reference chapters and could have been listed as appendices. The first gives descriptions of the various utilities that ship with MapServer, shapelib, and GDAL/OGR. You will find these utilities invaluable when you try to massage your data into a form that can be used by MapServer efficiently. For example, raster images will need to be tiled, and shapefiles may need to be indexed.
The final chapter is a reference for MapServer map files. This lists each keyword in alphabetical order for each object type in turn. This makes it difficult to find keywords. It would be easier to find a keyword if each object started on a new page with a short list of all applicable keywords. A tab or page marker for each object would also prove useful.
The appendix covers a number of miscellaneous but useful subjects: the Shapefile specification, cartographic projections, symbol definitions, FONTSET examples, and HTML legends.
So overall, this is a useful book that will be invaluable for a newcomer to UMN MapServer. As with all significant open source projects, MapServer has an active online community. The book should be used alongside the resources provided by this helpful community.