Announcement - MapServer Browser Client (Another one)

Bob Basques bob.basques at CI.STPAUL.MN.US
Wed Dec 21 15:33:35 PST 2005


All,

I'm looking for feedback on the following.   We've put a Simple but 
powerful Web Interface together in our office that builds against 
MapServer-CGI.  We would like to put the Code out into the Community as 
we think it has a lot of potential.

I'm making this Project (proposal) Announcement here first to gage 
interest.  I've put up a few screen shots as well with links intersprsed 
in this message.   Depending on Interest we'll put up a Simple demo as a 
follow-up, are there suggestions for a data set to use?  I could use the 
MapServer Demo, or????

Thanks and read on . . . .

-----------------------

Announcement of "GISmo" for MapServer (and other Raster Map Services)
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss1.jpg

"GISmo" is the name, and Map viewing is the game.

The City of Saint Paul, Public Works has been using MapServer for 
Mapping Distribution via the Web for a little over two years now with 
outstanding results.  Our needs list was short but finite.

   * How to distribute up-to-date mapping data.
   * Enable the data owners to maintain their own data sets for
     distribution and provide an easy publishing mechanism.
   * Use one source of data (MapServer) for all Clients.  We
     implemented the system for Internet Browsers as well as AutoCAD 
User sessions, and it
     can be extended to other formats/clients as needed.
   * The User Interface needed to be very Simple to operate, little to 
no training required in it's use.
   * Ability to integrate with other Web Based Systems.

The list above looks short but it did have it's problems with 
implementation.   We went through a couple of different versions before 
getting to where we are now.  What we have now is a good base to start 
from and seems like the logical point to present it to a larger 
audience, the MapServer Community.

-----------------

GISmo is a XML based web Client for viewing MapServer Web Services or 
any other Raster based Service, for that matter.  
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss2.jpg   It 
could easily be extended to handle WMS calls for example.    This Client 
Page gets it's Imagery from The MapServer via a MAP file but using a 
separate Map File per layer. Something akin to WMS only inside of a 
single MapServer Service.  This can be extended to hit other MapServer 
Services as well BTW.  Assuming there is interest to proceed with 
development further (we're going to keep moving on it internally either 
way) it may suggest some different ways to handle the MapServer Map file 
Layouts. http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss2.jpg

Short list of the Capabilities of the "GISmo" package:

  * User Customizable Catalog View (assuming you know XML, the plan is 
to build a Catalog maker as well)
  * Cross-Browser
        o FireFox 7 (tested)
        o IE( tested)
        o Should work for the most part in Opera too
  * Multiple layer Control
        o external to the MapServer, IE a layer can break and the
          whole service keeps on running, this allows for data 
administrators
          to update their respective layers at will)
        o The layers are assembled in the Browser via DHTML  stacking,
          so only the images are retrieved once the interface is loaded, 
and only the images after that.
  * XML based Main Page
        o Can originate as a local page for those that want to make
          their own view into the available Layers.
        o Settings for Initial view parameters for each layer.
          (ON/OFF, FADE-Value, etc)
  * GISmo view Panes.
        o Layer "Catalog" Chooser View
              + Cascaded Layer listings
        o "Visible Layers" Control
              + Layer Stacking ("Z" value of layer) user Control.
              + opacity control (fading of individual layers)
                    
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss3_bg-unfaded.jpg
                    
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss3_bg-faded.jpg
        o Map Layer View
              + Automatic re-sizing of the Map View upon browser re-size.
              + Attribute Viewer based on MapServer Templating of a
                IMAGEMAP.
              + ToolTip Popups for ImageMaps on a per layer Basis.  
These ImageMaps can be swapped out for viewing by the Users in the 
client for each View limit.
                    
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss3_popup.jpg
              + Sticky Tooltips
                    
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss1.jpg
  * Systems Integration Hooks to other (non-spatial) data services.
        
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss4_infra1.jpg
         o Sticky Tools Tips contain HTML code for linking to other 
Systems, a Field Photo in this Case:
        
http://pwultra5.ci.stpaul.mn.us/tmp/gismo_images/gismo_ss4_infra2.jpg

The Client is DHTML with multiple transparent Layers on top of one 
another.   There is no middle ware required unless you consider the 
multiple Map files a middle ware piece.  Other than the MapServer Web 
Service, there is no requirement for any additional service, this is not 
to say that other services can't be hooked to, because we are internally 
hooking into three other services that are spatially enabled with our 
GISmo interface, a Infrastructure Maintenance Management Tool, An 
Address Lookup/Geocoding Tool, and a Field Photography lookup tool that 
can be easily converted into a Simple Document Management tool that is 
spatially enabled (Think Documents with a Spatial Index). Some of these 
other tools may be considered for additional projects to submit to the 
Community as well, but I thought we should just start out slow.

The back end data storage is a shared Folder structure with assigned 
Folder for SHP/MAP file and Database/MAP file locations.  With this 
Folder structure in place, each Data layer owner has complete control 
over their respective data layer and how often it's updated.  The Front 
end Catalog "MapBook" description is simply a XML file that describes 
the basics of where the MAP files for MapServer are located and some 
basic view parameters for use during startup of the interface.  See the 
end of this message.  This simple XML file can originate externally to 
the MapServer Web Service.  It allows a Admin to set up and interface 
with just the layers they are interested in displaying.

Basically, the components are as standalone as possible and don't depend 
on each other where ever possible.  All services can be run 
independently of one another.

We're prepared to put this code out (giving back to the MapServer 
Community) as Open source.   We're actively using these JavaScript LIBs 
internally, and can put together a sample database for use.  I may even 
modify one of the Sample datasets distributed with MapServer to work 
with this interface.   The Libs that are distributed to this Open source 
effort will be the same one we use internally so they will be kept up as 
we modify/bug-fix them.

All that's required for set will be a separate Map File per viewable 
layer desired.  Internally we have assigned folders with a somewhat 
strict Folder tree that denotes Ownership, Type of Data, Responsibility, 
and date of data release.

We'll be setting up a Demo service within the next couple of weeks to 
gage feedback on whether we should proceed.

There are also some complimentary utilities (mostly PERL based) :

  * "Fusion" - Print facility that takes the separate images and fuses
    them together into a single image for printing. We're adding onto 
this a PDF output format


Basic structure looks like this:

XML
|
\--XSL
   |
   |--Client Code (Page Origination, Catalog description)
   |
   |--URL.JS          - Resizing and Map Population controller
   |
   |--OPACITY.JS      - Layer Opacity controller
   |
   |--DUCKLOADER.JS   -
   |
   |--POPUPS.JS       - ToolTip Controller
   |
   |--POINTMANAGER.JS -
   |
   \--MENUS.JS        -


Thanks

Bob Basques
GIS Systems Developer - Public Works
25 West 4th Street, 1000 CHA
City of Saint Paul, Mn 55102.

------------------------------------

XML "Map Book" File:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="./gambit_rlb.xsl"?>


<mapbook title="GISmo2">

	<group title="Administrative and Political Boundaries">
		<map title="Cities" zindex="10" opacity="50">
			<file>
				/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/CITIES/cities_ramseymn-f.map
			</file>
		</map>

	</group>
	<group title="Elevation">
		<map title="contours_1ft">
			<file>
				/pearl/DB/SAINT_PAUL/PUBLIC_WORKS/CONTOURS/contours_1ft.map
			</file>
		</map>
	</group>
	<!--<group title="Base Maps, Scanned Maps and Charts">
	</group>-->

	<group title="Imagery and Photographs">
	<!--	<map title="geospan">
			<file>
				/pearl/DB/SAINT_PAUL/PUBLIC_WORKS/GEOSPAN/geospan.map
			</file>
		</map>-->
		<service name="geospan" title="Street Level Photos - GEOSPAN" points="1">
			<url>/gis/geospan/cgi-bin/geospan.pl</url>
			<input type="layers" name="layers"/>

			<point type="combined" name="point"/>
			<input type="hidden" name="r_min" value="10" title="Minimum Distance from Picture"/>
			<input type="hidden" name="r_max" value="100" title="Maximum Distance from Picture"/>

			<input type="hidden" name="theta_tol" value="30" title="Degrees from centre of Picture"/>
		</service>

		<map title="Aerial Photos 2003 - Horizons" zindex="-1">
			<file>
				/pearl/RASTER/RAMSEY_COUNTY/PUBLIC_WORKS/AERIAL_HORIZONS/horizons_2003.map
			</file>
		</map>
		<map title="Aerial Photos 2001 - Kodak Citipix" zindex="-1">
			<file>

				/pearl/RASTER/SAINT_PAUL/PUBLIC_WORKS/AERIAL_CITIPIX/citipix_2001.map
			</file>
		</map>
		<map title="Aerial Photos 1985 - RCSWCD" zindex="-1">
			<file>
			/pearl/RASTER/RAMSEY_COUNTY/PUBLIC_WORKS/AERIAL_RAMSEY/rswcd_1985.map
			</file>
		</map>
		<map title="Aerial Photos 1974 - RCSWCD" zindex="-1">
			<file>

				/pearl/RASTER/RAMSEY_COUNTY/PUBLIC_WORKS/AERIAL_RAMSEY/rswcd_1974.map
			</file>
		</map>
		<map title="Aerial Photos 1953 - RCSWCD" zindex="-1">
			<file>
				/pearl/RASTER/RAMSEY_COUNTY/PUBLIC_WORKS/AERIAL_RAMSEY/rswcd_1953.map
			</file>
		</map>
		<map title="Aerial Photos 1940 - RCSWCD" zindex="-1">
			<file>

				/pearl/RASTER/RAMSEY_COUNTY/PUBLIC_WORKS/AERIAL_RAMSEY/rswcd_1940.map
			</file>
		</map>
	</group>
	<group title="Water Resources (INLAND)">
			<map title="Lakes and Rivers">
				<file>
					/pearl/SHP/MINNESOTA/MNDOT/LAKES/lakes.map
				</file>
			</map>

	</group>
	<group title="Geodetic Networks and Control Points">
		<map title="Property Lines">
			<file>
				/pearl/RASTER/SAINT_PAUL/PUBLIC_WORKS/PROPERTY/property.map
			</file>
		</map>
		<map title="Benchmarks">
			<file>

				/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/BENCHMARKS/benchmarks.map
			</file>
		</map>
		<map title="Monuments">
			<file>
				/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/MONUMENTS/monuments.map
			</file>
		</map>
	</group>
	<group title="Land Ownership">

		<map title="Parcels  - Rubbersheeted" opacity="50">
                        <file>/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/PARCELS/parcels_rubber.map</file>
                </map>
	</group>
	<!--<group title="Planning and Development">
	</group>
	<group title="Recreation and Tourism">
	</group>-->
	<group title="Facilities, Buildings and Structures">
		<group title="Bridges">
			<map title="Bridge Outlines">

				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/BRIDGES/bridge_maps.map
				</file>
			</map>
		</group>
		<group title="Planimetrics">
			<map title="planimetrics_lines">
				<file>
					/pearl/SHP/RAMSEY_COUNTY/PUBLIC_WORKS/PLANIMETRICS/planimetrics_lines.map
				</file>

			</map>
			<map title="planimetrics_poly">
				<file>
					/pearl/SHP/RAMSEY_COUNTY/PUBLIC_WORKS/PLANIMETRICS/planimetrics_poly.map
				</file>
			</map>
		</group>
	</group>
	<group title="Transportation">

		<map title="Streets (TLG)" default="true">
			<file>
				/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/CENTERLINES_TLG/tlg01.map
			</file>
		</map>
		<map title="Streets (TLG) With Address Ranges" default="true">
			<file>
				/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/CENTERLINES_TLG/tlg01_add_ranges.map
			</file>
		</map>

		<group title="Traffic Operations">
			<map title="Signals">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/SIGNALS/signals.map
				</file>
			</map>
			<map title="Signs">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/SIGNS/sign_points.map
				</file>

			</map>
			<map title="Stripings">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/PAVEMENT_STRIPINGS/stripings.map
				</file>
			</map>
			<map title="Markings">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/PAVEMENT_MARKINGS/markings.map
				</file>

			</map>
			<map title="Street Lights">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/LIGHTING/lighting.map
				</file>
			</map>
			<map title="Intersections">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/INTERSECTIONS/intersections.map
				</file>

			</map>
			<map title="Parking Meters">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/METERS/meters_parking.map
				</file>
			</map>
		</group>
	</group>
	<group title="Utilities and Communications">

		<group title="Sewers">
			<map title="Catch Basins">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/CATCHBASINS/catchbasins.map
				</file>
			</map>
			<map title="Sewer Permit Points">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/SEWERS/permit_points.map
				</file>

			</map>
			<map title="Sewer Test">
				<file>
					/pearl/SHP/SAINT_PAUL/PUBLIC_WORKS/SEWERS/sewer_test.map
				</file>
			</map>
		</group>
		<group title="Water Supply">
			<map title="Mains">

				<file>
					/pearl/SHP/SPRWS/MAPPING/MAIN/main.map
				</file>
			</map>
			<map title="Hydrants">
				<file>
					/pearl/SHP/SPRWS/MAPPING/HYDRANT/hydrant.map
				</file>
			</map>
			<map title="Valves">

				<file>
					/pearl/SHP/SPRWS/MAPPING/CONTROL_VALVE/control_valve.map
				</file>
			</map>
		</group>
	</group>
	<group title="Annotation">
		<map title="Scale Bar" default="true">
			<file>

				/usr/local/GIS/gambit/mapfiles/scalebar.map
			</file>
		</map>
	</group>
	<group title="Places and Things">
		<view title="Zoom To County" >539368,134025,604711,222260</view>
		<view title="Zoom To City" status="default">544668,135639,598640,174180</view>
		<view title="Zoom To Downtown">572682,155285.5,578462,160037.5</view>

		<map title="Selected Point" status="invisible">
			<file>
				/usr/local/GIS/gambit/mapfiles/point.map
			</file>
		</map>
		<service name="fido" title="Find Asset by ID" points="0">
			<!-- <url>/gis/fusion/cgi-bin/fusion.pl</url>-->
			<url>/gis/fido/cgi-bin/fido.pl</url>
			<input type="user" name="id" value="" title="ID:"/>

		</service>
		<link title="STAMP Search">/gis/address/cgi-bin/gambitLookup.pl</link>	
		<map title="amanda05">
			<file>
				/pearl/SHP/SAINT_PAUL/LIEP/AMANDA/amanda05.map
			</file>
		</map>
		<map title="Address Numbers">
			<file>

			/pearl/DB/SAINT_PAUL/PUBLIC_WORKS/ADDRESS/numbers_only.map
			</file>
		</map>
		<map title="address2">
			<file>
				/pearl/DB/SAINT_PAUL/PUBLIC_WORKS/ADDRESS/address2.map
			</file>
		</map>


		<map title="STAMP">

			<file>
				/pearl/DB/SAINT_PAUL/PUBLIC_WORKS/ADDRESS/STAMP.map
			</file>
		</map>
	</group>	

</mapbook>



More information about the MapServer-users mailing list