MAPSERVER: OPEN SOURCE GIS DEVELOPMENT
CONTENTS ?CHAPTER BUILDING MAPSERVER PLANNING THE INSTALLATION SELECTING SUPPORTING LIBRARIES GETTING THE SOFTWARE BUILDING AND INSTALLING THE SOFTWARE BUILDING AND INSTALLING ZLIB BUILDING AND INSTALLING LIBPNG BUILDING AND INSTALLING LIBJPEG BUILDING AND INSTALLING FREETYPE BUILDING AND INSTALLING GD BUILDING AND INSTALLING PROJ4 BUILDING AND INSTALLING GDAL BUILDING AND INSTALLING SHAPELIB BUILDING AND INSTALLING MAPSERVER CONFIGURING MAPSERVER AND APACHE ONLINE RESOURCES SUMMARY ?CHAPTER SIMPLE MAPSERVER EXAMPLES BASIC CONCEPTS BUILDING A “HELLO WORLD” APPLICATION CREATING THE MAPFILE CREATING THE INITIALIZATION FILE AND HTML TEMPLATE CONTENTS BUILDING THE FIRST MAP CREATING THE FIRSTMAP MAPFILE BUILDING THE HTML TEMPLATE FOR THE FIRST MAP CREATING THE MAPPING APPLICATION MAPFILE CONCEPTS THE STRUCTURE OF THE MAPFILE THE LAYER OBJECT THE CLASS OBJECT MAPFILE SYNTAX THE MAPFILE LAYER 1: URBAN AREAS LAYER 2: WATER FEATURES LAYER 3: STATE BOUNDARIES LAYER 4: ROAD NETWORK THE HTML TEMPLATE THE INITIALIZATION FILE THE TEMPLATE FILE CODE LISTINGS MODIFYING A MAP’S LOOK AND FEEL THE GRAPHIC DESIGN OF MAPS LABELING FOR CLARITY FONTS COLOR ORIENTATION USING SCALE TO REDUCE CLUTTER CLASSIFYING FEATURES USING EXPRESSIONS TO DEFINE CLASSES USING CLASSES USING SYMBOLS USING ANNOTATION LAYERS CREATING SCALE BARS CREATING LEGENDS USING REFERENCE MAPS THE CODE USING QUERY MODE HOW MAPSERVER PROCESSES A QUERY QUERY TYPES QUERY TEMPLATES MAINTAINING STATE IN QUERY MODE QUERYMAPS MAP-ONLY QUERY MODES QUERY EXAMPLES QUERY MODES QUERY MODE NQUERY MODE ITEMQUERY MODE ITEMNQUERY MODE FEATUREQUERY MODE FEATURENQUERY MODE ITEMFEATUREQUERY MODE ITEMFEATURENQUERY MODE MAP-LEVEL QUERY TEMPLATES LAYER-LEVEL QUERY TEMPLATES CLASS-LEVEL QUERY TEMPLATES THE QUERYMAP OBJECT THE JOIN OBJECT SUBSTITUTION STRINGS AND CGI VARIABLES QUERY SUBSTITUTION STRINGS QUERY CGI VARIABLES A QUERY APPLICATION THE QUERY TEMPLATES USING PERL MAPSCRIPT BUILDING AND INSTALLING PERL MAPSCRIPT BUILDING PERL BUILDING PERL MAPSCRIPT THE PERL MAPSCRIPT “HELLO WORLD” APPLICATION A PRACTICAL PERL MAPSCRIPT APPLICATION USING PYTHON MAPSCRIPT BUILDING AND INSTALLING PYTHON MAPSCRIPT BUILDING PYTHON BUILDING PYTHON MAPSCRIPT THE PYTHON MAPSCRIPT “HELLO WORLD” APPLICATION A PRACTICAL PYTHON MAPSCRIPT APPLICATION USING PHP/MAPSCRIPT BUILDING AND INSTALLING PHP/MAPSCRIPT BUILDING PHP BUILDING PHP/MAPSCRIPT THE PHP/MAPSCRIPT “HELLO WORLD” APPLICATION A PRACTICAL PHP/MAPSCRIPT APPLICATION EXTENDING THE CAPABILITIES OF MAPSCRIPT WITH MYSQL DESCRIBING APPLICATION REQUIREMENTS ADDRESSING SOME DESIGN ISSUES MOZILLA VS IE CREATING THE MYSQL DATABASE CREATING THE APPLICATION USER ACCOUNT INSTALLING THE JAVASCRIPT TOOL TIP CODE PATCHING PHP MAPSCRIPT BUILDING THE APPLICATION THE APPLICATION IN ACTION THE PHP SCRIPT UTILITY PROGRAMS MAPSERVER SHP2IMG LEGEND SCALEBAR SORTSHP SYM2IMG SHPTREE SHPTREEVIS TILE4MS SHAPELIB DBFCREATE DBFADD DBFDUMP SHPCREATE SHPADD SHPDUMP SHPREWIND DBFCAT DBFINFO SHPCAT SHPINFO SHPCENTRD SHPDXF SHPPROJ GDAL/OGR OGRINFO OGR2OGR MAPSERVER REFERENCE MAPFILE KEYWORDS MAP OBJECT CLASS OBJECT FEATURE OBJECT GRID OBJECT JOIN OBJECT LABEL OBJECT LAYER OBJECT LEGEND OBJECT OUTPUTFORMAT OBJECT PROJECTION OBJECT QUERYMAP OBJECT REFERENCE MAP OBJECT SCALEBAR OBJECT STYLE OBJECT WEB OBJECT CGI VARIABLES SUBSTITUTION STRINGS ? ? ? BUILDING MAPSERVER IN THIS CHAPTER, YOU’LL LEARN HOW TO BUILD MAPSERVER SINCE MUCH OF ITS FUNCTIONALITY IS SUPPORTED BY EXTERNAL LIBRARIES, I’LL BRIEFLY DISCUSS THE CAPABILITIES OF EACH, AND WHICH LIBRARIES ARE NEEDED TO PROVIDE A BASIC MAPSERVER ENVIRONMENT I’LL PRESENT DOWNLOAD SITES FOR THE SOFTWARE, AND I’LL ALSO DESCRIBE THE BUILD AND INSTALL PROCESSES IN SOME DETAIL THE BUILDS ARE HIGHLY AUTOMATED AND WILL USUALLY PRODUCE A BINARY EXECUTABLE, EVEN IF YOU’VE LEFT SOMETHING OUT YOU’LL ONLY NOTICE THAT YOU’VE LEFT SOMETHING OUT WHEN MAPSERVER DOES SOMETHING YOU DON’T EXPECT SINCE YOU’LL PROBABLY ASK THE QUESTION “IS IT ME OR IS IT MAPSERVER?” MANY TIMES BEFORE YOU GAIN A CLEAR UNDERSTANDING OF HOW MAPSERVER WORKS, GETTING THE BUILD RIGHT WILL GREATLY REDUCE YOUR FRUSTRATION LEVEL AFTER YOU’VE INSTALLED THE LIBRARIES AND BUILT MAPSERVER, I’LL DESCRIBE THE CONFIGURATION OF THE APACHE WEB SERVER, BUT ONLY AS IT RELATES TO THE MAPSERVER ENVIRONMENT FINALLY, I’LL PRESENT SOME POINTERS TO SOME ONLINE RESOURCES IT’S ASSUMED THAT YOU’RE FAMILIAR WITH THE SHELL ENVIRONMENT, THAT YOU UNDERSTAND DIRECTORY STRUCTURES, AND THAT YOU HAVE THE AUTHORITY TO MAKE LIBRARY AND WEB SERVER CHANGES YOU SHOULD HAVE SOME FAMILIARITY WITH THE BUILD TOOLS AUTOCONF AND MAKE, AS WELL AS THE GENERAL CONFIGURATION OF APACHE (OR KNOW SOMEONE WHO DOES) BUT IF THIS IS YOUR FIRST TIME, DON’T DESPAIR—YOU HAVE AN INTERESTING JOURNEY AHEAD PLANNING THE INSTALLATION BUILDING MAPSERVER FOR THE FIRST TIME CAN BE A CHALLENGING EXPERIENCE FOR SOMEONE UNFAMILIAR WITH UNIX BUILD ENVIRONMENTS THERE ARE MANY INTERDEPENDENCIES BETWEEN THE LIBRARIES, AND THE SEQUENCE IN WHICH THE SUPPORTING LIBRARIES ARE CREATED IS VERY IMPORTANT FOLLOW THE BUILD ORDER DESCRIBED IN THIS CHAPTER TO AVOID PROBLEMS SELECTING SUPPORTING LIBRARIES TABLE 1-1 LISTS THE EXTERNAL LIBRARIES USED BY MAPSERVER MINIMUM RELEASE LEVEL IS NOTED IF IT’S AN ISSUE; ALSO NOTED IS WHETHER THE LIBRARY IS MANDATORY OR OPTIONAL MOST OF THESE LIBRARIES ARE OPTIONAL AND WON’T BE REQUIRED FOR AN INTRODUCTION TO MAPSERVER THEY PROVIDE ACCESS TO SPATIAL INFORMATION STORED IN PROPRIETARY DATABASES, AND THEY ALSO PROVIDE SUPPORT FOR WMS (WEB MAPPING SERVICE) AND OUTPUT FORMATS OTHER THAN PNG, JPEG, AND GIF FOLLOWING THE TABLE IS A BRIEF DESCRIPTION OF EACH OF THE LIBRARIES LATER IN THIS CHAPTER, I’LL SHOW YOU HOW TO INSTALL SEVERAL OF THE MOST IMPORTANT LIBRARIES, FOLLOWED BY INSTRUCTIONS REGARDING THE INSTALLATION OF MAPSERVER OPTIONAL N LICENSE REQUIRED PROJ4 IS A LIBRARY OF CARTOGRAPHIC PROJECTION ROUTINES IT CAN BE ACCESSED ON THE FLY BY MAPSERVER OR IN STAND-ALONE MODE TO PERFORM PROJECTION ON AN ENTIRE DATA SET IT’S AVAILABLE AT HTTP:// PROJMAPTOOLSORG SHAPELIB SHAPELIB IS A LIBRARY OF C ROUTINES FOR CREATING AND MANIPULATING SHAPEFILES YOU WON’T BE WRITING ANY C CODE, BUT YOU’LL TAKE ADVANTAGE OF SEVERAL UTILITIES THAT ARE PROVIDED IN THE DISTRIBUTION THESE UTILITIES PROVIDE THE ABILITY TO CREATE SHAPEFILES (WHICH INCLUDE DBF FILES), DUMP THE CONTENTS OF SHAPEFILES AND DBF FILES, AND CHANGE THE PROJECTION OF SHAPEFILES SOME OF THE UTILITIES DEPEND ON PROJ4 THE SHAPELIB LIBRARY CAN BE FOUND AT HTTP://SHAPELIBMAPTOOLSORG LIBCURL LIBCURL IS A CLIENT-SIDE URL-TRANSFER LIBRARY THAT SUPPORTS FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE, AND LDAP IT’S REQUIRED IF YOU WISH TO PROVIDE WMS SUPPORT THE WMS PROTOCOL IS USED TO MOVE MAP IMAGES AND TEXT DATA ACROSS NETWORKS IN ORDER TO KEEP THE MAPSERVER ENVIRONMENT SIMPLE, YOU WON’T BE INSTALLING IT