Well I think we have all the software installed that we need to build some pretty nice GIS web applications!!! So, I thought this would be a good time to stop and think about what we have done and all the possibilities from here. In following blog posts, I will talk about ways to develop custom software solutions using this server setup.
This set of technologies is really quite similar to working with the Microsoft / ESRI platform that I use professionally. The difference is you are not paying for IIS / ASP.Net for the web server, Sql Server for the database, and the ESRI stack of GIS technologies like SDE and ArcGIS Server. With this completely free solution we have a spatially enabled enterprise database with PostgreSQL and PostGIS and an incredibly fast mapping server in Geoserver. With a bit of development you could do anything with this setup.
One of the things that I am really amazed by is how many great technologies we have installed on this server, yet the footprint is still very very small. Here are the specs for this server...
Size of VirtualBox image on disk: 1.9 Gigabytes
RAM used at rest: 382 Megabytes
A server build with the Microsoft / ESRI software would probably be 20 GigaBytes in size and use at least a GigaByte of RAM at rest. This server can run very well on older and probably free hardware. If you are hosting this server it will be cheaper too because Linux servers are cheaper than Microsoft servers. It would also take many days of CPU type to install all of the software needed to build this type of solution using Microsoft and ESRI. But, for this linux server I could easily script everything we have done and run it in less than an hour to rebuild this server!!!! I think that is pretty remarkable.
Below this paragraph is a link to the Geoserver main page running on this linux server that we have just built. This is the administrative interface for Geoserver and without logging in you can still play around with some of the functionality. The "Demos" and "Layer Preview" links allow you to view and query the data on the server. The "Demo Requests" link lets you formulate and send Open Geospatial Consortium requests to the server like WMS, WFS, and WCS requests, so give it a try. Don't bother trying to hack this server because it gets reverted to a previous snapshot of the OS every so often, which will remove any hacks. :)
Here are a few more links of projects using this server. These are just little pet projects that I have built using this system. In fact these applications are running on the same headless linux server that I have been building while writing this blog.
The Appalachian Trail Hiker Map site is an Mono/C# web application that uses the Google Maps API in combination with Geoserver. Geoserver is used to deliver the map tiles for all of the trail, towns, parking lots, shelters, etc. All of the actual data that make up the tiles reside in PostgreSQL/PostGIS, of course. This is an example of a completely asynchronous application because it never does a full post back to the server. All requests are AJAX oriented. It also does asynchronous calls to geoserver to get information about features on the map using the WMS GetFeature request. This is simple stuff, but illustrates some basic usage of this platform for viewing cached tiles and retrieving feature attributes.
The Search OGC website doesn't really do much mapping, but it again is an Mono/C# application running on Ubuntu Linux. It uses an open source GIS component called SharpMap to gather and store information from OGC mapping servers around the world and indexes them for searching. I use OpenLayers to make a simple map of any data that can easily be displayed on a map (this needs a lot of work and doesn't work for all sites yet, but take a look anyway).
Anyway, these are pretty simple mapping applications that don't do any really complex GIS work, but it is a place to start. In the next blog entries I hope to delve deeper into these technologies and explain how to use them to do things that we may take for granted using Microsoft / ESRI technologies; like doing spatial queries, geoprocessing, map overlay, geocoding, etc.
Anyway, enough for now...