Geospatial Portal Beta
I recently deployed a new web mapping site as a beta (ala Google): Geospatial Portal Beta.
I bring it up here because it uses a bunch of bits I haven't used before, and I'd like to post my happy thoughts about the whole affair. In particular:- It utilizes the OpenLayers mapping library.
- It uses Tilecache to serve the maps (WMS), which in turn uses GeoServer as the back end (which in turn uses PostgreSQL/PostGIS).
- It uses the jQuery library for Javascript effects and AJAX.
- All tabular data is pulled from REST web services (JSON) dynamically via AJAX, including spatial analysis via PostGIS. No page refreshes.
- Because it's all AJAX, there's no server side code in the application itself. There's nothing but Javascript and HTML.
From a developer’s perspective, the biggest advantages I’ve found with OpenLayers-Tilecache-jQuery-REST is speed and simplicity. The beta site went from an empty text file to release in only a few weeks of actual development time nestled in between other projects, with a lot of that taken up by a jQuery/OpenLayers/GeoServer/SLD learning curve, design, web service work, software setup, etc. It is also marvelously simple, being nothing more than Javascript and HTML. From an end-user perspective, you get a much more responsive application, a nicer map interface than I usually give people via OpenLayers, and everything is free and open source.
An added bonus is the infrastructure itself. GeoServer is a highly capable WMS/WFS-T server, and Tilecache is an extremely quick WMS server. These projects can form a big part of your GIS service oriented architecture, acting as a server to web, desktop, and mobile applications.
It’s a lot of tech I haven’t used before, so even though I’ve squished all of my release blockers I’m leaving it in Beta for now. The only downer I’ve run into is the speed of the initial page load. OpenLayers 2.5 is ~330kb packed, which is a whopper over a slow connection. There are also some browser quirks, which is part of the territory when you deal in a lot of Javascript. But overall, so far, so good.