[ka-Map-users] setting ka-map on mac osx
Paul Spencer
pspencer at dmsolutions.ca
Wed Oct 10 09:45:00 EDT 2007
change $szMap = 'gmap' to $szMap = 'weather' in config.php
Paul
On 24-Sep-07, at 6:57 AM, massimo di stefano wrote:
> Hi,
>
> this is my first approach to ka-map,
> (please apologize me for the newbie question)
>
> i'm on a mac OsX
> as php, mapserver and phpmapscript ( i'm using the binaries
> package at : http://www.kyngchaos.com )
> ka-map downloaded from cvs
>
> following the ka-map wiki instruction i downloaded the data :
> cloud.tif , countries_simpl.shp ...
>
> i copied the ka-map folder in :
>
> /Users/epifanio/Sites/ka-map/
>
> then i put the data folder in :
>
> /Users/epifanio/Sites/ka-map/htdocs/data/
>
> i created a directory "tmp" with read + write permisions in :
>
> /Users/epifanio/Sites/ka-map/htdocs/tmp/
>
> then i modified the global.map file to load my data :
>
> MAP
> NAME global_map
> STATUS ON
> SIZE 600 300
> EXTENT -180 -90 180 90
> UNITS DD
> IMAGECOLOR 255 255 255
> IMAGETYPE png
> WEB
> IMAGEPATH "/Users/epifanio/Sites/ka-map/htdocs/tmp/"
> IMAGEURL "/ka-map/tmp/"
> END
> LEGEND
> TRANSPARENT TRUE
> END
> SCALEBAR
> TRANSPARENT TRUE
> END
> LAYER
> NAME clouds
> TYPE RASTER
> STATUS ON
> DATA "data/day_clouds.tif"
> END
> LAYER
> NAME countries
> TYPE LINE
> STATUS ON
> DATA "data/countries_simpl.shp"
> CLASS
> NAME "Country Boundaries"
> STYLE
> COLOR 200 100 100
> END
> END
> END
> END #MAP END
>
>
> i tested it using shp2image :
>
> /usr/local/mapserver/bin/shp2img -m /Users/epifanio/Sites/ka-map/
> htdocs/global.map -o test.png
>
>
> to set-up ka-map i modified
> /Users/epifanio/Sites/ka-map/include/config.php
>
> as follow :
>
> ############################################## config.php
> #####################
>
> <?php
> /
> **********************************************************************
> *
> * $Id: config.dist.php,v 1.13 2007/02/05 12:47:54 pspencer Exp $
> *
> * purpose: configuration file for kaMap, hopefully well documented
> *
> * author: Paul Spencer (pspencer at dmsolutions.ca)
> *
> * TODO:
> *
> * - consider moving per-map configuration to metadata in map files
> *
> **********************************************************************
> *
> * Copyright (c) 2005, DM Solutions Group Inc.
> *
> * Permission is hereby granted, free of charge, to any person
> obtaining a
> * copy of this software and associated documentation files (the
> "Software"),
> * to deal in the Software without restriction, including without
> limitation
> * the rights to use, copy, modify, merge, publish, distribute,
> sublicense,
> * and/or sell copies of the Software, and to permit persons to whom
> the
> * Software is furnished to do so, subject to the following conditions:
> *
> * The above copyright notice and this permission notice shall be
> included
> * in all copies or substantial portions of the Software.
> *
> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR
> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
> EVENT SHALL
> * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
> OR OTHER
> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> ARISING
> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> * DEALINGS IN THE SOFTWARE.
> *
> **********************************************************************
> /
>
> /
> **********************************************************************
> ********
> * basic system configuration
> *
> * kaMap! uses PHP/MapScript and the PHP GD extension to
> * render tiles, and uses PHP/MapScript to generate initialization
> parameters
> * a legend, and a keymap from the selected map file.
> *
> * Make sure to set the correct module names for your PHP extensions.
> *
> * WINDOWS USERS: you will likely need to use php_gd2.dll instead of
> php_gd.dll
> */
> $szPHPMapScriptModule = 'php_mapscript.'.PHP_SHLIB_SUFFIX;
> $szPHPGDModule = 'php_gd.'.PHP_SHLIB_SUFFIX;
>
> /
> **********************************************************************
> ********
> * tile generation parameters
> *
> * kaMap! generates tiles to load in the client application by first
> rendering
> * larger areas from the map file and then slicing them up into
> smaller tiles.
> * This approach reduces the overhead of loading PHP/MapScript and
> PHP GD and
> * drawing the map file. These larger areas are referred to as
> metaTiles in
> * the code. You can set the size of both the small tiles and the
> metaTiles
> * here. A reasonable size for the small tiles seems to be 200
> pixels square.
> * Smaller tiles seem to cause problems in client browsers by
> causing too many
> * images to be created and thus slowing performance of live
> dragging. Larger
> * tiles take longer to download to the client and are inefficient.
> *
> * The number of smaller tiles that form a metaTile can also be
> configured.
> * This parameter allows tuning of the tile generator to ensure optimal
> * performance and for label placement. MapServer will produce
> labels only
> * within a rendered area. If the area is too small then features
> may be
> * labelled multiple times. If the area is too large, it may exceed
> MapServer,s
> * maximum map size (by default 2000x2000) or be too resource-
> intensive on the
> * server, ultimately reducing performance.
> */
> $tileWidth = 256;
> $tileHeight = 256;
> $metaWidth = 6;
> $metaHeight = 6;
> /* $metaBuffer = Buffer size in pixels to add around metatiles to
> avoid
> * rendering issues along the edge of the map image
> */
> $metaBuffer = 10;
>
> /
> **********************************************************************
> ********
> * in-image debugging information - tile location, outlines etc.
> * to use this, you need to remove images from your cache first.
> This also
> * affects the meta tiles - if debug is on, they are not deleted.
> */
> $bDebug = false;
>
> /
> **********************************************************************
> ********
> * aszMapFiles - an array of map files available to the
> application. How this
> * is used is determined by the application. Each map file is
> entered into
> * this array as a key->value pair.
> *
> * The key is the name to be used by the tile caching system to
> store cached
> * tiles within the base cache directory. This key should be a
> single word
> * that uniquely identifies the map.
> *
> * The value associated with each key is an array of three values.
> The first
> * value is a human-readable name to be presented to the user
> (should the
> * application choose to do so) and the second value is the path to
> the map
> * file. It is assumed that the map file is fully configured for
> use with
> * MapServer/MapScript as no error checking or setting of values is
> done. The
> * third value is an array of scale values for zooming.
> */
>
> $aszGMap = array (
> 'title' => 'GMap 75',
> 'path' => '../../gmap/htdocs/gmap75.map',
> 'scales' => array( 40000000, 25000000, 12000000, 7500000,
> 3000000, 1000000 ),
> 'format' =>'PNG'
> /* Sample authorized_users entry. See auth.php for more
> details:
> * ,'authorized_users' => array('popplace' => array
> ('user1', 'user2'),
> * 'park' => array('user1')
> */
> );
>
>
> $aszMapFiles = array(
> "weather" => array( "Global Weather",
> "/Users/epifanio/Sites/ka-map/htdocs/
> global.map",
> array( 100000000, 50000000, 15000000 ),
> "PNG")
> );
>
> /
> **********************************************************************
> ********
> * figure out which map file to use and set up the necessary
> variables for
> * the rest of the code to use. This does need to be done on every
> page load
> * unfortunately.
> *
> * szMap should be set to the default map file to use but can change if
> * this script is called with map=<mapname>.
> */
> $szMap = 'gmap';
>
> /
> **********************************************************************
> ********
> * kaMap! caching
> *
> * this is the directory within which kaMap! will create its tile
> cache. The
> * directory does NOT have to be web-accessible, but it must be
> writable by the
> * web-server-user and allow creation of both directories AND files.
> *
> * the tile caching system will create a separate subdirectory
> within the base
> * cache directory for each map file. Within the cache directory
> for each map
> * file, directories will be created for each group of layers.
> Within the group
> * directories, directories will be created at each of the
> configured scales
> * for the application (see mapfile configuration above.)
> */
> $szBaseCacheDir = "/tmp/kacache/";
>
> /* Uncomment the following if you have a web accessible cache */
> //$szBaseWebCache = "kacache/";
>
> /
> **********************************************************************
> ********
> * Authentication and access control:
> *
> * Uncomment the following lines to load auth.php and enable access
> control.
> * See docs at the top of auth.php for more details.
> */
> //include_once('auth.php');
> //$oAuth = new kaBasicAuthentication(&$aszMapFiles[$szMap]
> ['authorized_users']);
>
>
> /***** END OF CONFIGURABLE STUFF - unless you know what you are
> doing *****/
>
> if (isset($_REQUEST['map']) && isset($aszMapFiles[$_REQUEST['map']]))
> {
> $szMap = $_REQUEST['map'];
> }
>
> $szMapCacheDir = $szBaseCacheDir.$szMap;
> $szMapName = $aszMapFiles[$szMap]['title'];
> $szMapFile = $aszMapFiles[$szMap]['path'];
> $anScales = $aszMapFiles[$szMap]['scales'];
> setOutputFormat($aszMapFiles[$szMap]['format']);
> /
> **********************************************************************
> ********
> * output format of the map and resulting tiles
> *
> * The output format used with MapServer can greatly affect
> appearance and
> * performance. It is recommended to use an 8 bit format such as PNG
> *
> * NOTE: the tile caching code in tile.php is not configurable
> here. It
> * currently assumes that it is outputting 8bit PNG files. If you
> change to
> * PNG24 here then you will need to update tile.php to use the gd
> function
> * imagecreatetruecolor. If you change the output format to jpeg then
> * you would need to change imagepng() to imagejpeg(). A nice
> enhancement
> * would be to make that fully configurable from here.
> *
> * DITHERED is a special output format that uses the 24bit png
> renderer to
> * render the entire map and then quantizes the final image into
> some number
> * number of colours just before saving, typically 256.
> *
> * To use DITHERED, you need MapServer 4.9 CVS after 2006-03-08, or
> any later
> * release. You also need to create an OUTPUTFORMAT block in your
> * map file as follows:
> *
> OUTPUTFORMAT
> NAME dithered
> DRIVER "GD/PNG"
> EXTENSION "png"
> MIMETYPE "image/png"
> IMAGEMODE RGBA
> TRANSPARENT OFF
> FORMATOPTION "QUANTIZE_FORCE=ON"
> FORMATOPTION "QUANTIZE_DITHER=OFF"
> FORMATOPTION "QUANTIZE_COLORS=256"
> END
> *
> */
> function setOutputFormat($szFormat)
> {
> switch(strtoupper($szFormat)) {
> case "DITHERED":
> $GLOBALS['szMapImageFormat'] = 'dithered';
> $GLOBALS['szMapImageCreateFunction'] =
> "imagecreatefrompng";
> $GLOBALS['szImageExtension'] = '.png';
> $GLOBALS['szImageCreateFunction'] = "imagecreate";
> $GLOBALS['szImageOutputFunction'] = "imagepng";
> $GLOBALS['szImageHeader'] = 'image/png';
> break;
> case "PNG24":
> $GLOBALS['szMapImageFormat'] = 'PNG24';
> $GLOBALS['szMapImageCreateFunction'] =
> "imagecreatefrompng";
> $GLOBALS['szImageExtension'] = '.png';
> $GLOBALS['szImageCreateFunction'] =
> "imagecreatetruecolor";
> $GLOBALS['szImageOutputFunction'] = "imagepng";
> $GLOBALS['szImageHeader'] = 'image/png';
> break;
> case "ALPHA":
> $GLOBALS['szMapImageFormat'] = 'PNG24';
> $GLOBALS['szMapImageCreateFunction'] =
> "imagecreatefrompng";
> $GLOBALS['szImageExtension'] = '.png';
> $GLOBALS['szImageCreateFunction'] =
> "imagecreatetruecolor";
> $GLOBALS['szImageOutputFunction'] = "imagepng";
> $GLOBALS['szImageHeader'] = 'image/png';
> break;
> case "GIF":
> $GLOBALS['szMapImageFormat'] = 'GIF';
> $GLOBALS['szMapImageCreateFunction'] =
> "imagecreatefromgif";
> $GLOBALS['szImageExtension'] = '.gif';
> $GLOBALS['szImageCreateFunction'] = "imagecreate";
> $GLOBALS['szImageOutputFunction'] = "imagegif";
> $GLOBALS['szImageHeader'] = 'image/gif';
> break;
> case "JPEG":
> $GLOBALS['szMapImageFormat'] = 'JPEG';
> $GLOBALS['szMapImageCreateFunction'] =
> "imagecreatefromjpeg";
> $GLOBALS['szImageExtension'] = '.jpg';
> $GLOBALS['szImageCreateFunction'] =
> "imagecreatetruecolor";
> $GLOBALS['szImageOutputFunction'] = "imagejpeg";
> $GLOBALS['szImageHeader'] = 'image/jpeg';
> break;
> case "PNG":
> $GLOBALS['szMapImageFormat'] = 'PNG';
> $GLOBALS['szMapImageCreateFunction'] =
> "imagecreatefrompng";
> $GLOBALS['szImageExtension'] = '.png';
> $GLOBALS['szImageCreateFunction'] = "imagecreate";
> $GLOBALS['szImageOutputFunction'] = "imagepng";
> $GLOBALS['szImageHeader'] = 'image/png';
> break;
> }
> }
>
> /**
> * create all directories in a directory tree - found on the php web
> site
> * under the mkdir function ...
> */
> function makeDirs($strPath, $mode = 0777)
> {
> return is_dir($strPath) or ( makeDirs(dirname($strPath), $mode)
> and mkdir($strPath, $mode) );
> }
>
> /**
> * This function replaces all special characters in the given string.
> *
> * @param szString string - The string to convert.
> *
> * @return string converted
> */
> function normalizeString($szString)
> {
> // Normalize string by replacing all special characters
> // e.g. "http://my.host.com/cgi-bin/mywms?"
> // becomes "http___my_host_com_cgi_bin_mywms_"
> return preg_replace("/(\W)/", "_", $szString);
> }
> ?>
>
>
> ######################################################################
> ####################
>
> i modified this line :
>
>
> 49: $szPHPMapScriptModule = 'php_mapscript.'.PHP_SHLIB_SUFFIX;
> 50: $szPHPGDModule = 'php_gd.'.PHP_SHLIB_SUFFIX;
>
>
> i added :
>
> 118: $aszMapFiles = array(
> 119: "weather" => array( "Global Weather",
> 120: "/Users/epifanio/Sites/ka-map/
> htdocs/global.map",
> 121: array( 100000000, 50000000,
> 15000000 ),
> 122: "PNG")
> 123: );
>
>
> obviously i'm missing something in it beacouse when i try to load
> the link :
>
> http://10.37.129.3/~epifanio/ka-map/htdocs/
>
> but it do not load the map-file,
> this is the apache log :
>
>
> computer-di-epifanio:~ epifanio$ tail /private/var/log/httpd/error_log
> [Mon Sep 24 00:42:46 2007] [error] [client 10.37.129.3] File does
> not exist: /Users/epifanio/Sites/ka-map/htdocs/tools/kaExplorer/
> images/icon_set_explorer/tool_query_1.png
> [Mon Sep 24 00:42:46 2007] [error] PHP Notice: Undefined index:
> gmap in /Users/epifanio/Sites/ka-map/include/config.php on line 171
> [Mon Sep 24 00:42:46 2007] [error] PHP Notice: Undefined index:
> gmap in /Users/epifanio/Sites/ka-map/include/config.php on line 172
> [Mon Sep 24 00:42:46 2007] [error] PHP Notice: Undefined index:
> gmap in /Users/epifanio/Sites/ka-map/include/config.php on line 173
> [Mon Sep 24 00:42:46 2007] [error] PHP Notice: Undefined index:
> gmap in /Users/epifanio/Sites/ka-map/include/config.php on line 174
> [Mon Sep 24 00:42:47 2007] [error] PHP Notice: Undefined index:
> path in /Users/epifanio/Sites/ka-map/htdocs/init.php on line 124
> [Mon Sep 24 00:42:47 2007] [error] PHP Notice: Undefined index:
> scales in /Users/epifanio/Sites/ka-map/htdocs/init.php on line 125
> [Mon Sep 24 00:42:47 2007] [error] PHP Warning: implode() [<a
> href='function.implode'>function.implode</a>]: Bad arguments. in /
> Users/epifanio/Sites/ka-map/htdocs/init.php on line 125
> [Mon Sep 24 00:42:47 2007] [error] PHP Warning: Invalid argument
> supplied for foreach() in /Users/epifanio/Sites/ka-map/htdocs/
> init.php on line 151
> [Mon Sep 24 00:42:47 2007] [error] PHP Notice: Undefined index:
> title in /Users/epifanio/Sites/ka-map/htdocs/init.php on line 240
>
>
>
>
> thanks for any suggestion on how to set-up the file config.php :-)
>
>
> regards,
> Massimo.
>
> _______________________________________________
> ka-Map-users mailing list
> ka-Map-users at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/ka-map-users
+-----------------------------------------------------------------+
|Paul Spencer pspencer at dmsolutions.ca |
+-----------------------------------------------------------------+
|Chief Technology Officer |
|DM Solutions Group Inc http://www.dmsolutions.ca/ |
+-----------------------------------------------------------------+
More information about the ka-Map-users
mailing list