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