| Foreword | p. xiii |
| About the Author | p. xv |
| About the Technical Reviewers | p. xvii |
| Acknowledgments | p. xix |
| Introduction | p. xxi |
| Building MapServer | p. 1 |
| Planning the Installation | p. 1 |
| Selecting Supporting Libraries | p. 1 |
| Getting the Software | p. 4 |
| Building and Installing the Software | p. 5 |
| Building and Installing zlib | p. 6 |
| Building and Installing libpng | p. 7 |
| Building and Installing libJPEG | p. 7 |
| Building and Installing FreeType | p. 8 |
| Building and Installing GD | p. 9 |
| Building and Installing Proj.4 | p. 9 |
| Building and Installing GDAL | p. 9 |
| Building and Installing shapelib | p. 10 |
| Building and Installing MapServer | p. 11 |
| Configuring MapServer and Apache | p. 12 |
| Online Resources | p. 13 |
| Summary | p. 14 |
| Simple MapServer Examples | p. 15 |
| Basic Concepts | p. 15 |
| Building a "Hello World" Application | p. 16 |
| Creating the Mapfile | p. 16 |
| Creating the Initialization File and HTML Template | p. 20 |
| Building the First Map | p. 23 |
| Creating the first.map Mapfile | p. 24 |
| Building the HTML Template for the First Map | p. 28 |
| Summary | p. 30 |
| Creating the Mapping Application | p. 31 |
| Mapfile Concepts | p. 31 |
| The Structure of the Mapfile | p. 32 |
| The LAYER Object | p. 33 |
| The CLASS Object | p. 34 |
| Mapfile Syntax | p. 34 |
| The Mapfile | p. 35 |
| Urban Areas | p. 37 |
| Water Features | p. 39 |
| State Boundaries | p. 41 |
| Road Network | p. 41 |
| The HTML Template | p. 43 |
| The Initialization File | p. 43 |
| The Template File | p. 44 |
| Summary | p. 50 |
| Code Listings | p. 51 |
| Modifying a Map's Look and Feel | p. 55 |
| The Graphic Design of Maps | p. 61 |
| Labeling for Clarity | p. 66 |
| Fonts | p. 66 |
| Color | p. 67 |
| Orientation | p. 67 |
| Using Scale to Reduce Clutter | p. 71 |
| Classifying Features | p. 74 |
| Using Expressions to Define Classes | p. 74 |
| Using Classes | p. 76 |
| Using Symbols | p. 79 |
| Using Annotation Layers | p. 81 |
| Creating Scale Bars | p. 83 |
| Creating Legends | p. 85 |
| Using Reference Maps | p. 87 |
| Summary | p. 88 |
| The Code | p. 88 |
| Using Query Mode | p. 103 |
| How MapServer Processes a Query | p. 103 |
| Query Types | p. 104 |
| Query Templates | p. 105 |
| Maintaining State in Query Mode | p. 107 |
| Querymaps | p. 107 |
| Map-Only Query Modes | p. 107 |
| Query Examples | p. 108 |
| Query Modes | p. 129 |
| QUERY Mode | p. 130 |
| NQUERY Mode | p. 130 |
| ITEMQUERY Mode | p. 131 |
| FEATURENQUERY Mode | p. 132 |
| FEATURENQUERY Mode | p. 132 |
| ITEMFEATUREQUERY Mode | p. 132 |
| ITEMFEATURENQUERY Mode | p. 133 |
| INDEXQUERY Mode | p. 133 |
| Query Templates | p. 133 |
| Map-Level Query Templates | p. 133 |
| Layer-Level Query Templates | p. 134 |
| Class-Level Query Templates | p. 135 |
| The QUERYMAP Object | p. 135 |
| The JOIN Object | p. 136 |
| Substitution Strings and CGI Variables | p. 137 |
| Query Substitution Strings | p. 137 |
| Query CGI Variables | p. 138 |
| A Query Application | p. 139 |
| The Mapfile | p. 139 |
| The Initialization File | p. 145 |
| The HTML Template | p. 146 |
| The Query Templates | p. 150 |
| Summary | p. 155 |
| Code Listings | p. 156 |
| Using Perl MapScript | p. 167 |
| Building and Installing Perl MapScript | p. 168 |
| Building Perl | p. 168 |
| Building Perl MapScript | p. 169 |
| The Perl MapScript "Hello World" Application | p. 169 |
| A Practical Perl MapScript Application | p. 172 |
| Summary | p. 181 |
| Code Listings | p. 181 |
| Using Python MapScript | p. 187 |
| Building and Installing Python MapScript | p. 187 |
| Building Python | p. 187 |
| Building Python MapScript | p. 188 |
| The Python MapScript "Hello World" Application | p. 189 |
| A Practical Python MapScript Application | p. 191 |
| Summary | p. 200 |
| Code Listings | p. 200 |
| Using PHP/MapScript | p. 207 |
| Building and Installing PHP/MapScript | p. 207 |
| Building PHP | p. 208 |
| Building PHP/MapScript | p. 209 |
| The PHP/MapScript "Hello World" Application | p. 210 |
| A Practical PHP/MapScript Application | p. 212 |
| Summary | p. 222 |
| Code Listings | p. 222 |
| Extending the Capabilities of MapScript with MySQL | p. 231 |
| Describing Application Requirements | p. 232 |
| Addressing Some Design Issues | p. 233 |
| Mozilla vs. IE | p. 233 |
| Creating the MySQL Database | p. 234 |
| Creating the Application User Account | p. 237 |
| Installing the JavaScript Tool Tip Code | p. 238 |
| Patching PHP MapScript | p. 238 |
| Building the Application | p. 239 |
| The Application in Action | p. 239 |
| Creating the Mapfile | p. 247 |
| The PHP Script | p. 251 |
| Summary | p. 265 |
| Code Listings | p. 265 |
| Utility Programs | p. 291 |
| MapServer | p. 291 |
| shp2img | p. 291 |
| legend | p. 292 |
| scalebar | p. 292 |
| sortshp | p. 292 |
| sym2img | p. 293 |
| shptree | p. 293 |
| shptreevis | p. 294 |
| tile4ms | p. 296 |
| shapelib | p. 297 |
| dbfcreate | p. 297 |
| dbfadd | p. 297 |
| dbfdump | p. 297 |
| shpcreate | p. 298 |
| shpadd | p. 298 |
| shpdump | p. 298 |
| shprewind | p. 299 |
| dbfcat | p. 299 |
| dbfinfo | p. 300 |
| shpcat | p. 300 |
| shpinfo | p. 300 |
| shpcentrd | p. 301 |
| shpdxf | p. 301 |
| shpproj | p. 301 |
| GDAL/OGR | p. 301 |
| ogrinfo | p. 302 |
| ogr2ogr | p. 304 |
| ogrtindex | p. 307 |
| Summary | p. 307 |
| MapServer Reference | p. 309 |
| Mapfile Keywords | p. 310 |
| Map Object | p. 310 |
| CLASS Object | p. 315 |
| FEATURE Object | p. 320 |
| GRID Object | p. 320 |
| JOIN Object | p. 321 |
| LABEL Object | p. 323 |
| LAYER Object | p. 327 |
| LEGEND Object | p. 334 |
| OUTPUTFORMAT Object | p. 336 |
| PROJECTION Object | p. 340 |
| QUERYMAP Object | p. 341 |
| Reference Map Object | p. 342 |
| SCALEBAR Object | p. 344 |
| STYLE Object | p. 347 |
| WEB Object | p. 348 |
| CGI Variables | p. 350 |
| Substitution Strings | p. 357 |
| Appendix | p. 369 |
| The Shapefile Specification | p. 369 |
| File Structure | p. 370 |
| Shapefile Data Structures | p. 371 |
| Cartographic Projections | p. 373 |
| Projection Categories | p. 373 |
| Creating and Using Symbols | p. 381 |
| Symbol Definition Reference | p. 381 |
| Creating Vector Symbols | p. 383 |
| FONTSET Examples | p. 385 |
| HTML Legends | p. 386 |
| Index | p. 391 |
| Table of Contents provided by Ingram. All Rights Reserved. |