Wiki

Clone wiki

gnd / CandidateTechnologies

Solutioneering? Hell no, I just need a place to record my ideas before I forget them.

System components

This is an annotated version of the User interaction models.

candidate technologies

Web UI

OpenLayers is the definitive browser-based geospatial viewer. It even has built in support for replaying vehicle tracks: http://dev.openlayers.org/addins/timedpointtrack/trunk/examples/time-select-control.html

It relies on an OpenLayers class (TimedPointTrack) that a someone with surprising foresight procured 3 1/2 years ago - and may only now be exploiting... Still, it now represents quite mature code.

There's an up to date GWT wrapper for OpenLayers at https://bitbucket.org/gwtopenlayers/gwt-openlayers There's another version at: http://www.gwt-openlayers.org/ that appears to be under steady development. Aah, they're, err, the same version ;-)

Here's a showcase for the GWT version: http://demo.gwt-openlayers.org/gwt_ol_showcase/GwtOpenLayersShowcase.html

Beyond mapping, we may wish to display time/variable data. There's a GWT wrapper for Flot at http://code.google.com/p/gflot/

GWT

Clearly I've a strong desire to use GWT in the UI. I'm not JS proficient, but spend all day working in a JAVA IDE - so it's the natural way ahead.

SmartGWT

I've seen that the SmartGWT has high level support for REST vis JSON (and XML). So, you can just point a data-table at a JSON URL and it will load/display the data.

Here are some thoughts on other SmartGWT capabilities that may be of value:

A GWT/SmartGWT developer and I just debated the merits of SmartGWT for this project. A copy of the relevant part of the chat is at Transcript_SmartGWT

CouchDb

Pah, CouchDb? That's so 2010! We're currently trialling OrientDb. It has a native Java interface (for easy config extension), plus an Http/REST interface (meaning it may be the only server component we need).

AND NOW we're back on CouchDb. See the discussion.

CouchDb has these merits that relate to our project:

  • REST interface
  • Well-documented both printed and online
  • Validation functions (to ensure schema integrity)
  • Robust, well tested (BBC is running a cluster of 32 nodes!)

It's got a strong reliance on JavaScript, which personally detest, but hopefully this will be overcome by sufficient plagiarism.

I've found what appears to be a good CouchDb Java interface at: http://ektorp.org/ This seems to be the Java driver with the most active support.

Advanced Search for CouchDb

CouchDb falls short on indexed search. C'est la vie. In Feb 2012 my feeling is that the positives outweigh this negative.

There are two applications advertised on the CouchDb website that support a more complex search. CouchDb-Lucene and ElasticSearch. They're actually both based on Lucene, but Elastic Search seems more mature. Detailed instructions on integrating CouchDb with ElasticSearch are at https://github.com/elasticsearch/elasticsearch-river-couchdb/blob/master/README.md

Don't forget the ElasticSearch diagnostics UI at http://mobz.github.com/elasticsearch-head/

I've also created a safe place to store ElasticSearch trials

GWT for CouchDb

Obviously I'll fight tooth & nail against learning Javascript. Fortunately someone has written a GWT wrapper for CouchDb at: https://github.com/jnorthrup/gwt-couchdb-1 But, note it's not very active at all.

If we're interfacing with the database from GWT using REST, there may be merit in finding a strategy where the same code/library is used from GWT and from Java - to ease code reuse.

Update: there's a more maintained GWT-Openlayers library at: https://bitbucket.org/gwtopenlayers/gwt-openlayers

GWT into CouchDb via CouchApp

Here's an article on how to move the GWT app into the CouchDb server instance: http://davidvancouvering.blogspot.com/2010/04/deploying-google-web-toolkit-app-to.html

In this way we don't have to do JSONP to overcome cross-domain problems. There again, I don't really mind using JSONP.

GeoSpatial search

Fortunately CouchDb has a GeoSpatial add-in, GeoCouch. That should help with finding documents within boundaries. Alternatively, if we adopt ElasticSearch for search support then that comes with built-in search abilities. Having said that, I have demoted the importance of Spatial Search.

RDBMs solution

Don't forget, we don't have to go doc-store. There's still the RDBMs route, as implemented by the ocean recording system.

JSON Schema Validation

Jackson seems to be the "go-to" library for JSON in Java. But, it can't (yet) do schema validation. Here's a blog post on how to do it: http://nico.vahlas.eu/2010/04/23/json-schema-specifying-and-validating-json-data-structures/

OGC Sensor standards

There's lots to cover in this set of standards, but significant highlights include: Sensor Observation Service: pages in the mid 20s describe a service/sensor discovery mechanism

OGC have thought about RESTful SOS, slide 52 at: http://www.slideshare.net/cappelaere/restful-ogc-services

Updated