In fact a good bit of this code is already written. I've implemented
the cascading method for both WMS and WFS using GeoServer's cascading
functionality. I've also implemented the indexing method for WMS, but
it doesnt seem to make sense for WFS. Additionally, I added
functionality to 'harvest' external CSW's and add the harvested
records as GeoNode Layer pages with the map only displaying the
footprint rather than the actual data. These pages then provide a link
to the URI specified in the CSW GetRecord. I have *not* done any work
on 'real-time' cascading (searching against external services at
run-time). I think discussion on something like that should take place
under a separate GNIP.
> What changes do you see being required in gsconfig.py? What does GeoServer
> configuration have to do with connecting to third-party services?
Again, the necessary changes have already been made in gsconfig.py and
in GeoServer. Changes were necessary in gsconfig.py in order to allow
Cascaded services to be configured via the REST api in gsconfig.py.
You can see my diff here.
https://github.com/jj0hns0n/gsconfig.py/compare/master...wms_store ...
In GeoServer, a few problems were encountered when implementing the
cascading method, mostly having to do with the metadata
(abstracts/keywords etc) that was received from external services not
being completely stored for the new layers by GeoServer. Additionally,
Gabriel Roldan and Justin Deolivera made a few patches that helped
with the configuration of things like connect and read-timeouts. Im
happy to dig up the Geoserver tickets and link them here if anyone is
interested.
Tom, It would be good to take a crack at this kind of thing
eventually, and also against other real-time search services (like
opensearchgeo and google etc) ... but our current concentration has
been on cascading services via geoserver, and addressing remote wms
directly from within the geonode map-composer and pages.
This is the place to check this out in my remote_services branch. I
intended for the X type to be 'real-time' services.
https://github.com/jj0hns0n/geonode/blob/remote_services/src/GeoNodePy/geonode/maps/views.py#L1878