MapServer is an open source, map server for web applications. I have written a Tcl interface for Mapscript, MapServer's scripting interface. MapScript/Tcl is now a part of the MapServer 3.4 (beta) release. Get the 'nightly' CVS build from the MapServer pages while 3.4 is still in development.


MapServer Workbench

Tools for creating MapServer applications

source and README
current version is 0.3, released Jan. 5, 2001.

MapServer Workbench is a suite of cooperative tools to build MapServer applications. The tools are written in Tcl/Tk, and use the Mapscript/Tcl interface.


GRASS (and here too) is an open source, geographical information system. Below are some tools that I have developed for GRASS. All software on this page is offered under the GNU Public License (GPL), the same as the rest of GRASS.


HTMLMAP driver

Create HTML image maps

source and README

HTMLMAP allows creation of HTML image maps, the kind that let you define clickable regions for images. You use the GRASS display commands d.area and d.text to send information to the driver. For a silly sample, look here (Javascript required).

The HTMLMAP driver is now a part of Grass5.


s.to.poly.sh

Create coarse-grained polygons around site data

source and man page

s.to.poly.sh creates coarse-grained polygons around site data. It allows the site data to 'clump' into several smaller area, rather than trying to totally encompass all data.


r.demdma2ll.sh

Easy import of DEM data into a lat-lon database

source and man page

Makes importing DEM data into a Lat-Lon database a piece of cake. The tedious part of finding the DEM's boundaries is totally automated.


mklocation.sh

Creates the most used sub-directories for a new mapset location

source and man page

This simply creates most of the sub-directories used in a mapset.


g.pushregion.sh, g.popregion.sh, g.clearregion.sh

Manipulate a region statck

g.pushregion.sh source,
g.popregion.sh source,
g.clearregion.sh source
and man pages

These three scripts create and manipulate a region stack. Handy when you want to temporarily create or switch to another region definition with g.region, but want to come back to your original one later.