Title: GeoMOOSE
1GeoMOOSE
- 1.6.0
- Dan Ducky Little, Independent Consultant
- Jim Klassen Bob Basques, City of Saint Paul
- Brian Fischer, Houston Engineering
2The Plan
- Cover the Background and Concepts of GeoMOOSE
- Install GeoMOOSE and get the Demo Working
- Play Take a Break (20 min)
- Add a layer to the interface
- Get the new layer working with select and
identify tools. - Get Printing to Work!
3Origins
- City of Saint Paul Public Works GISmo
- Additional Improvements by the OpenMNND project
- Now being implemented by
- City of Saint Paul
- Houston Engineering
- A few Metro Counties
- Morton County, ND
- Richland County, ND
- Florida State University
- Now Used World Wide! Implementers in Germany,
South America, and Greece!
4Design Goals
- Object Oriented
- Reusable Code Components
- Service Oriented Architecture
- Objects on a Grand Scale
- Configurable
- For implementers
- Scalable Use
- Beginners with little training to expert users
- Many layers, services, data maintainers, clients
5What does this jargon mean?
- GeoMOOSE is flexible.
- Two GeoMOOSE installations can have different
behaviors. Its all configurable. - GeoMOOSE integrates easily.
- GeoMOOSE can talk to just about any type of CGI
script for additional functionality and reporting.
6The Old Guard
- In older applications the user typically must
reload all of the page. - Links to other scripts/programs were done
manually via Javascript hacks on top of the
application. - This requires setting up many server side
resources.
7Traditional All-Server
User Action/Information Request
Server Renders HTML Page
Stan gets the new HTML Page
8Problems/Annoyances
- The page is relatively limited to a single
script. - The page is always reloading slowing down overall
user-perceived quickness. - The main script needs to usually be modified to
support additional functionality.
9Typical AJAX-Enhanced Apps
- Most AJAX Applications do the following
- Send a small bit of commands to the server (like
a SQL statement) - Get text/XML in return and displays it with some
formatting. - This is really just ENHANCING traditional
CGI-based applications.
10How AJAX Works
Stan Requests the Page
The server returns the page to Stan.
AJAX communicates with the server in the
background. Stan never sees the page reload.
11Good, Bad, Ugly?
- Vast improvement in user experience (not as much
reloading) - The enhancements can be very nice for searching
for features, etc. - Traditional AJAX Applications tend not to be
modular enough to be useful.
12Why GeoMOOSE is different.
- GeoMOOSE considers everything a service
- Layers are Image Services Each layer is
rendered individually and added to the interface. - All of the tools are defined in XML as a
service, including navigation. - GeoMOOSE is a standalone application. No CGI/PHP
required.
13What services means.
- One service (or layer) being broken DOES NOT
break the application as whole. - Interfaces can be customized in every way.
Including addition and elimination of tools.
Without ever touching the code base. - GeoMOOSE can integrate with existing scripts and
tools.
14Other advantages.
- GeoMOOSE does not have any direct server-side
dependencies. GeoMOOSE itself is only HTML and
Javascript files! - The majority of functionality can be achieved
using just Mapserver. - Advanced functionality can a be written using
simple short scripts in any programming language.
15But wait, theres more!
- Small Server Foot Print. Even with all of the
scripts, art-work, and demonstration data,
GeoMOOSE is less than 15 MB. - Low server loading. Since GeoMOOSE is not
rendered by a script all the server must do is
serve static pages. - Components are re-usable!
- GeoMOOSE is complete, no need for significant
programming!
16Whatever, how do I install it?
- Good question! Well cover that today.
- http//www.geomoose.org/ is the home page,
installation and download links are available
there! - Download Size (including MS4W Demos and Source
tree) 14 MB
17Scope of this Workshop
- MS4W installation.
- This presentation will focus mainly on installing
and running GeoMOOSE on Windows with Apache - The package includes IIS instructions for those
who would prefer IIS on Windows but it will not
be covered. - We welcome Linux and Mac OS/X users but the
slides will only loosely pertain to your
installations.
18What-chew-need?
- The provided CD!
- A computer capable of running MS4W (or Mapserver
and Apache) - Any Windows version that supports Services
- Would recommend at least a Pentium IV with 512 Mb
of RAM
19Extracting the MS4W Install
- Right click on the ms4w zip file and click
Extract All
20Extracting the MS4W Install
21Extracting the MS4W Install
- Change the path to c\ or d\, this will create a
ms4w folder on that drive.
22Extracting MS4W Package
- Relax! The extraction takes about 3 minutes.
- You should see this when finished.
23Substitution Warning!
- C\ will be used for the rest of the
presentation. If you used D\ or any other drive
letter for the MS4W install, continue as if C\
translates to your drive letter of choice!
24Get Apache Running
- Go to the C\MS4W directory, it should look like
this
25Get Apache Running
- Double click on the icon apache-install.bat
- IF YOU HAVE IIS RUNNING STOP ALL IIS SERVICES!
26Get Apache Running
- After double clicking the icon a terminal window
will pop up with some ugly diagnostic messages.
This window will ultimately close. - After this window closes, Apache should be
running. - The apache-install.bat script installed a
service. If you would like to remove the service
later all you need to do is double-click the
apache-uninstall.bat file.
27Test Apache and PHP
- The first test is to make sure that Apache is, in
fact, working. Type http//localhost into your
favorite Web-browser. It should look something
like this
28Test Apache and PHP
- Now enter http//localhost/phpinfo.php into the
Web Browser and you should see
29Extract GeoMOOSE Application
- Filename on CD
- Click Extract All
30Extract GeoMOOSE Application
31Extract GeoMOOSE Application
- Use the Same Path as the MS4W Install
32Extract GeoMOOSE Application
- Go Back to C\MS4W
- Restart Apache by double clicking
apache-restart.bat
33Test the GeoMOOSE Demo App
- Clear the browser cache and go to
http//localhost in your web browser - Scroll down to the bottom, it should look like
this
34Test the GeoMOOSE Demo App
35You should now see.
36A Brief Aside on Organization
- Index.html
- The page actually requested by the server.
- Lib/GeoMOOSE.js
- The compiled Javascript library.
- Statedemo.xml
- A Mapbook, service and layer configuration.
- Configuration.js
- Site Configuration options.
- .map
- Mapserver Mapfile that define how to access and
render data.
37Demo of Built-in Tools
Zoom To Full Extent
Zoom to Previous Extent
Zoom to Next Extent
Reload Layers
Clear Selection
Measure Length
Measure Area
Zoom Out
Identify
Zoom In
Select
Pan
Print
38Demo of Built-in Tools
- One of the presenters demonstrates stuff in the
browser.
39Adding a Dataset to GeoMOOSE
- Goal
- Get a layer to display in GeoMOOSE
- Get that layer to be identifiable
- Add the ability to select and highlight objects
from that layer.
40Adding a Dataset to GeoMOOSE
- How Configuring Layers Works in GeoMOOSE
- Each layer in GeoMOOSE has its own Mapserver
Mapfile - Each layer/Mapfile is referenced in the Mapbook,
an XML file that contains the majority of
GeoMOOSEs configuration
41Adding a Layer to GeoMOOSE
- Copy the monuments Folder from the CD to
- C\ms4w\apps\GeoMOOSE\maps_countydemo
42Adding a Dataset to GeoMOOSE
- In this directory you will find
- monuments.map
- This is a Mapserver Mapfile. It is provided as a
time saver. If you require more knowledge about
Mapserver Mapfiles please visit the Mapserver
website http//mapserver.gis.umn.edu - monuments.shp, monuments.shx, monuments.dbf
43Adding a Layer to GeoMOOSE
- Add the Layer to the Mapbook
- Go to C\ms4w\apps\GeoMOOSE\htdocs
- Edit the countydemo.xml
- Double clicking on countydemo.xml will open it
in IE! Right-click on the statedemo.xml and click
Open With and then WordPad (or your
favorite text editor)
44Add a Layer to GeoMOOSE
- Scroll to the Fire Stations entry and copy it.
45Add a Layer to GeoMOOSE
- Paste the Fire Stations into the file again.
Should look like this
46Add a Layer to GeoMOOSE
- Remove the popupstrue and datatrue
strings. - Change Fire Stations to Monuments
- Change the contents of ltfilegtlt/filegt to
- ./monuments/monuments.map
- When completed it should look like this
ltmap title"Monuments defaulttruegt
ltfilegt./monuments/monuments.maplt/filegt lt/mapgt
47Add a Layer to GeoMOOSE
- Save the file.
- Clear the Web browsers Cache (Temporary Internet
Files) - Reload the web-browser.
48Add a Layer to GeoMOOSE
- The Page should now have your layer
49Make that Layer Identify!
- The Monuments file has a few columns
- COGO (the ID)
- OLD
- HYPERLINK
- PHOTO
- TIES
50Make that Layer Identify!
- We want to show the COGO and OLD IDs
- Open a new text document and add the following
lttrgt lttd colspan"2"gtltbgtMonument
Layerlt/bgtlt/tdgt lt/trgt lttrgt lttdgtCOGOlt/tdgtlttdgtCOGO
lt/tdgt lt/trgt lttrgt lttdgtOld IDslt/tdgtlttdgtOLDlt/tdgt lt
/trgt lttrgtlttd colspan"2"gtlthrgtlt/tdgtlt/trgt
51Make that Layer Identify!
- Save the file to the monuments directory
- (C\ms4w\apps\GeoMOOSE\maps_countydemo\monuments)
- Name the file identify_monuments.html
- Your monuments directory should now look like
this
52Make that Layer Identify!
- Now, we need to add it to the Identify tools
Mapfile. - The Identify tool is a separate service based on
Mapserver. - Identify does not require anything but the
Mapfile, not additional scripting required. - Open the file
- C\ms4w\apps\GeoMOOSE\maps_countydemo\identify.map
53Make that Layer Identify
- Create a new Layer entry in the Mapfile
- The quickest way to do this is copy and paste
another entry and modify it.
LAYER NAME 'Monuments' DATA
'monuments/monuments.shp' STATUS ON TYPE
POINT TOLERANCE 2000 TOLERANCEUNITS
INCHES TEMPLATE 'monuments/identify_monuments.ht
ml' END
54Select It!
- Configuring the Select tool requires changing the
select.map file in the demo directory - C\ms4w\apps\GeoMOOSE\maps_countydemo
- And adding it to the Mapbook. Only one layer can
be selected from at a time!
55Select It!
- Select Requires adding even more than identify
since you need to code the highlighting and
symbology again.
LAYER NAME 'Monuments' DATA
'monuments/monuments.shp' STATUS ON TYPE
POINT HEADER 'monuments/header.html'
TEMPLATE 'monuments/record.html' FOOTER
'monuments/footer.html' CLASS SYMBOL
'star' SIZE 15 COLOR -1 -1
-1 OUTLINECOLOR 255 255 0 END END
56Select It!
- Open the Mapbook XML File
- C\ms4w\apps\GeoMOOSE\htdocs\countydemo.xml
57Select It!
- Find the ltservice titleSelect Feature gt
entry. It looks like this
ltservice title"Select Feature" default"true"
locked"true" cursor"url(cursors/select.cur),
auto" shape"box" type"inspect-search"
icon"shared/images/toolbar/draw_polygon.jpg"
highlight"shared/images/toolbar/draw_polygon_sele
cted.jpg"gt lturlgtphp/select.phplt/urlgt
ltinput type"multipoint" name"coords"/gt
ltinput type"hidden" name"shape" value"poly"/gt
ltinput type"hidden" name"map"
value"./select.map"/gt ltinput type"hidden"
name"select" value"../../maps_countydemo/select.
map"/gt lt!--
LAYER_NAMECOLUMN_NAME to specify which query
column to return --gt ltinput
type"select" name"layer" title"Layer to
Select"gt ltoption value"ParcelsPIN"gtParcelslt/op
tiongt ltoption value"FireStationsDak_GIS__1"gtFir
e Stationslt/optiongt lt/inputgt
ltinput type"hidden" name"output"
value"html"/gt lt/servicegt
58Select It!
- Change the highlighted line
ltservice title"Select Feature" default"true"
locked"true" cursor"url(cursors/select.cur),
auto" shape"box" type"inspect-search"
icon"shared/images/toolbar/draw_polygon.jpg"
highlight"shared/images/toolbar/draw_polygon_sele
cted.jpg"gt lturlgtphp/select.phplt/urlgt
ltinput type"multipoint" name"coords"/gt
ltinput type"hidden" name"shape" value"poly"/gt
ltinput type"hidden" name"map"
value"./select.map"/gt ltinput type"hidden"
name"select" value"../../maps_countydemo/select.
map"/gt lt!--
LAYER_NAMECOLUMN_NAME to specify which query
column to return --gt ltinput
type"select" name"layer" title"Layer to
Select"gt ltoption value"ParcelsPIN"gtParcelslt/op
tiongt ltoption value"FireStationsDak_GIS__1"gtFir
e Stationslt/optiongt ltoption valueMonumentsCOGO
gtMonumentslt/optiongt lt/inputgt
ltinput type"hidden" name"output"
value"html"/gt lt/servicegt
59PRINTING!!!
- For Printing to Work, we need to first extract
fpdf! - Right Click on fpdf16.pdf
- Select Extract All
- Path C\ms4w\apps\GeoMOOSE\htdocs\php\fpdf
60Now Click Print!!!
61Thus concludes