Hello Everyone,
Thank you for the great degree of interest.
Currently, our existing implementation of Islandora GIS integration lies within several stages. I'll speak now more directly to the technologies involved in the Islandora ecosystem.
* Fedora Commons
Throughout the summer, we initially sought to involve Islandora community members while structuring the proposed Content Models implemented for the management of Shapefiles. The following documentation outlines our progress:
(Logical Data Models)
https://www.lucidchart.com/documents/view/bd3f98c5-7b6e-4f30-82cc-42e159c8d5b5(The Ingestion Sequence)
https://www.lucidchart.com/documents/view/d6bf440e-1bb9-41ac-b2ea-eee20f94fdd1(The Dependency Network Diagram)
https://www.lucidchart.com/documents/view/495053ec-410d-4173-8770-bba8902d1bfdAddressing, the physical data models, I will refer to our existing implementation:
https://github.com/LafayetteCollegeLibraries/islandora_dss_solution_pack_gis/blob/testing/islandora_gis/xml/islandora_sp_shapefile_cmodel.xmlPlease note that I did attempt to implement the Object-Oriented functionality for derivative-generation found within Islandora 6 Content Model implementation:
https://github.com/LafayetteCollegeLibraries/islandora_dss_solution_pack_gis/blob/testing/islandora_gis/libraries/ShapefileProcessor.phphttps://github.com/LafayetteCollegeLibraries/islandora_dss_solution_pack_gis/blob/testing/islandora_gis/libraries/FgdcProcessor.php* GeoServer
GeoServer is a Java web application which we've successfully deployed into our staging environment for testing. The application itself it not at all needed for directly serving Datastream content into a JavaScript geovisualization widget (we're currently using OpenLayers; I shall outline this in a greater degree of detail within the context of discussing Drupal integration).
This was my primary reasoning underlying why two Modules were structured for our local solution pack: islandora_gis and islandora_gis_geoserver. islandora_gis simply serves either KML or GeoJSON Datastream content into OpenLayers.
GeoServer requires an additional component which I've also developed and tested, that being the GeoServer RESTful consumer. This is essentially a client which permits one to map either a Shapefile (managed within a Datastream) or a GeoTIFF (managed within an Islandora Large Image Object), and to create the related resource within GeoServer. The results yielded are WMS and WFS resources which can be integrated into OpenLayers as a "map layer". Further, the ability to submit Shapefiles into GeoServer to be managed as a collection of Features permits one to select, at a granular level, each feature specified within a given Shapefile.
Regarding the FGDC metadata, we simply transform this using the XSL Stylesheet developed and managed by the GeoHydra project. This permits one to map the FGDC Document into a MODS Document. I've drafted some initial MODS ingestion forms which should map to the essential FGDC elements for essential curation tasks.
* Drupal
The geoserver Module is primarily maintained by those managing and maintaining the Cartaro project. Cartaro essentially permits one to manage WFS Features as Drupal Content Nodes; The benefit to this approach is that it permit any given user to create and manage geospatial data from within the Drupal site.
This morning, I've released an early (functional) prototype to this team on Drupal.org:
https://www.drupal.org/node/2389233I hope that this shall lead to some fruitful exchange, as their existing implementation simply leverages cURL bindings within PHP.
As a consequence to some of the limitations we've found when working with the OpenLayers Module, we've been forced to maintain a local fork of the Module itself:
Three essential features could not be implemented using the existing Drupal/OpenLayers API:
* Styling for individual map layers (e. g. rendering Features with certain colors)
* Overriding functionality for clicking on certain features (we've implemented the ability to generate thumbnails for Islandora Objects, and to link these Objects to individual features on the map)
* Symbolization logic (this has yet to be implemented, but essentially, we require the ability to override the functionality for rendering a given geospatial Feature as a point, geometric primitive, or polygon; We must render, in certain cases, a density plot using values within the attribute-value table for a given feature - this is supported by OpenLayers fully, but again, cannot be configured through any Drupal interface)
There are also additional feature requests and improvements pending, but our current focus is elsewhere until at least late January of 2015.
How this relates to the future of the GIS Interest Group is, I feel, straightforward. Firstly, I would ask of the community:
* Where are the faults within these Content Models? How can we work to yield forth Content Models which address the functional requirements for edge use cases?
* How best shall the integration of external WMS and WFS applications be undertaken (this would abstract the role of GeoServer for any WMS/WFS with the appropriate RESTful endpoints)
* OpenLayers seems to be one of the strongest candidates for a JavaScript visualization widget; Are there any alternatives which might be preferred?
* We default to using GeoJSON (in actuality, I have a preference for TopoJSON; but this will only be supported by OpenLayers 3) - are there any strong use cases for serving KML by default?
* How best to approach the myriad of issues regarding integrating OpenLayers (or, for that matter, any JavaScript visualization widget)?
** My preference here would be to work closely with contributors within the Drupal community, as applying pressure to leverage the abilities of those working with this code case actively seems to me to be more efficient
Please freely comment, as I'm hoping that these key points (as well as those identified by the community) shall be used to next construct our roadmap.
Thank you for your time.
Sincerely,
James