Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Remote Services #1408

Merged
merged 45 commits into from
May 9, 2014
Merged

Conversation

jj0hns0n
Copy link
Contributor

@jj0hns0n jj0hns0n commented Apr 2, 2014

What does this PR do?
Adds an initial implementation that supports remote services in GeoNode. Support for WMS, WFS, CSW, ArcGIS REST, OpenGeoPortal and Harvard Geospatial Library are provided. Additionally, it provides a basic framework for further work in this direction.

Background
Support for configuring and using Remote Services in a GeoNode instance has long been requested by GeoNode users and administratrors. This PR implements the basic functionality to make this possible. Initial support for the most common OGC services as well as ArcGIS REST and other specific services is provided.

The initial implementation of this work was done by myself (@jj0hns0n) as part of the Australia New Zealand Spatial Marketplace (ANZSM) demonstrator project, and was picked up by Matt Bertrand (@mbertrand) and is in use in the WorldMap project. Further work has been done recently to make it work with GeoNode 2.0.

'Indexed' WMS layers allow for layers in a remote WMS to be indexed and Layer records created for each of the remote layers. The Map Client makes requests directly against the remote service.

'Cascaded' WMS layers are configured in both the local GeoNode database and the catalog of the GeoServer paired with the GeoNode. This method is useful when the remote server does not support 900913 projection as GeoServer will do the reprojection on the fly. Additionally, it is possible to use the local geoserver to do caching with GeoWebCache to improve performance or handle for remote servers being offline.

The CSW support is somewhat rudimentary and only supports looking for WMS layers in the records of the remote WMS that match a specific set of conditions. @tomkralidis is planning to pick this work up and improve on it.

Additionally, Basic support for an asyncrhonous queue is added and the geonode will need to be configured with kombu support if this functionality is desired. @mbertrand can add more docs about his setup.

Issues
#1330
#770
#996
#268
#188
#188

Screenshots
Configure a new Service
register_service_-_example com

Service Layers as GeoNode Layers
welcome__-_example com

Service Information Page
example com_and_freenode_irc_network___telascience__14_users____cn_

TODO

  • Add info to Administrators Documentation about this functionality including use of management commands
  • Add documentation about setting up the queuing system to the Admin Documentation
  • Fix the issue with ModelNotActionable when configuring remote services jj0hns0n/geonode@master...services-redux#diff-65e028487582782a9d3e44fb6a9884bcR116
  • Refactor the security implementation once Add support for Groups #1406 is pulled
  • UI Improvements (current UI is still pretty bare bones and could use much improvement)
  • Better integration with GXP (currently its not possible to address remote services easily in the Map Composer)
  • Make it possible to easily add plugins for other server types (cartodb, mapbox etc)
  • Setup a test/development server so that the community can try out their services without having to setup a development environment.

Jeffrey Johnson and others added 30 commits March 24, 2014 13:23
@@ -45,5 +45,6 @@ def resource_urls(request):
GS_SECURITY_ENABLED = ogc_server_settings.GEONODE_SECURITY_ENABLED,
PROXY_URL = getattr(settings, 'PROXY_URL', '/proxy/?url='),
SOCIAL_BUTTONS = getattr(settings, 'SOCIAL_BUTTONS', True),
USE_SERVICES = 'geonode.contrib.services' in settings.INSTALLED_APPS
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing comma here :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep, I think merge was incorrect here :)

@jj0hns0n
Copy link
Contributor Author

jj0hns0n commented Apr 3, 2014

I'll fix it in the morning


while stop == 0:
if flag == 0: # first run, start from 0
startposition = 0
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be 1, not 0. Spec say non-negative integer.

@ingenieroariel
Copy link
Member

I tested this today but it does not seem to be ready for prime time (tests do not pass). I will submit a PR to you @jj0hns0n with the updates I made.

@ingenieroariel
Copy link
Member

PR created jj0hns0n#16

@ingenieroariel ingenieroariel modified the milestone: 2.1 Apr 16, 2014
@ingenieroariel
Copy link
Member

All right, all other PRs closed, I volunteer to review and merge this one once the tests are passing.

jj0hns0n added 3 commits May 9, 2014 06:04
Conflicts:
	geonode/context_processors.py
	geonode/layers/models.py
	geonode/layers/views.py
	geonode/maps/models.py
	geonode/templates/base.html
	geonode/urls.py
	setup.py
@ingenieroariel ingenieroariel merged commit e5dbbfe into GeoNode:master May 9, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gnip A GeoNodeImprovementProcess Issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants