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

GNIP 16 - Remote Services #1330

Closed
mbertrand opened this issue Jan 15, 2014 · 4 comments
Closed

GNIP 16 - Remote Services #1330

mbertrand opened this issue Jan 15, 2014 · 4 comments
Labels
gnip A GeoNodeImprovementProcess Issue

Comments

@mbertrand
Copy link
Member

GNIP 16 - Remote Services


Overview


It is proposed to add functionality to GeoNode that allows users to configure external OGC services (WMS/WFS/WCS/CSW primarily) to be included in a GeoNode site. The various ways that an external service/layer could be configured has been discussed on the geonode list (see here https://groups.google.com/a/opengeo.org/group/geonode-dev/browse_thread/thread/7815b2b724ec4d94/cf33c41672230a36?lnk=gst&q=federation#cf33c41672230a36).

From the user perspective, a GeoNode user would be able to use a service URL, discover the advertised layers and be able to add these layers as a GeoNode layer. The layer should then be available as any "internal" layer.

Initial work under this proposal has been done by Jeffrey Johnson

https://github.com/jj0hns0n/geonode/tree/remote_services

https://github.com/jj0hns0n/geonode/tree/contrib-refactor/geonode/contrib/services

Some notes on preliminary experimentation with this branch by Matt Bertrand here:

https://docs.google.com/document/d/1hg2NMVC1uTnaOIehxcqW6_G71ISpKxiGfrUcgQZrzBU/edit?usp=sharing

Proposed By

Jeffrey Johnson

Assigned to Release

TBD

State

For Review and Comment


Motivation


Currently it is possible to add an external WMS layer to a map in GeoNode by entering the URL to the service in the Add Layer Dialog in the Map Composer, but it is not possible to add an external service such that the external layers have their own GeoNode Layer pages and the features that come along with that. Many GeoNode users have asked about 'federation' functionality which would allow them to associate other GeoNodes with the site they are working on. Adding functionality for these types of external services is the first step toward accomplishing that goal.


Proposal


It is proposed to add a new Service class to geonode.maps.models that will contain fields necessary to identify and store metadata for remote WMS, WFS, WCS and CSW services, and to develop the views necessary to allow these services to be configured. It is also likely that changes will be required in both gsconfig.py and also potentially in GeoServer to accommodate these features.

Use Cases

  • Copy and paste a URL, such as for MapBox, and have it added as a service/layer(s) automatically, backend tests to determine appropriate service type
  • Search for layers and find local and/or remote layers (toggle remote layer search on/off, or search by type: WMS, ArcGIS Server, etc)
  • Command-line utility to scrape services
  • Reproject and cache layers from services that aren't web mercator (mapproxy or geoserver cascaded wms)
  • Support multiple backend geoservers

Issues

  • A lot of issues.
  • Requires modifications to the current Layer model (Foreign key to the Service model).
  • Requires new Service model.
  • Requires new page for "Registering" Services". Ideally, user should just enter a URL and app would somehow figure out what type of service it is.
  • Needs a "New Layer Page" (vs Upload Layer Page),
  • Typenames on the Layer object are unique, we need to ensure uniqueness for remote services.
  • Supported external service endpoints have very different structures.
  • Best way to handle URL’s for remote vs local - do it without if/else everywhere?
  • Lots of functionality assumes layers are local and respond to WMS/WFS requests. Some remote services will not be WxS (ArcGIS Servers) , some may be WMS only.
    • Example: layer attributes - uses WFS DescribeFeatureType to retrieve them
  • CSW services - can’t use geonetwork/csw URL for layers, need to use originating service URL. Possible approach:
    • Add parent_service field to Service model (FK to same table)?
      • CSW service could have multiple child services
      • Layers could be associated with child services and use their URL’s
      • Need to guess what kind of service type child services are, assume WMS?
  • Use separate models for service and supported service types? For example, Server 1 supports WMS & WFS, Server 2 supports WFS & WCS, Server 3 supports WMS & TMS, etc
  • Encoding - Is it important to know which encoding remote layers are in? Let user choose during service registration?
  • Remote services need to be added to proxy whitelist? Or can the proxy be avoided?

Testing

Extensive Integration tests will be required to validate this new set of features.

Alternatives

Do nothing. GeoNode does not currently provide this kind of functionality.


Feedback


Discussion of this proposal on geonode-dev is here.

https://groups.google.com/a/opengeo.org/group/geonode-dev/browse_thread/thread/2cc69e0174eff2d0


Voting


@simod
Copy link
Member

simod commented Apr 15, 2014

@bwyss and mop are assigned

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

simod commented Sep 23, 2014

Can we consider this as implemented?

@mwengren
Copy link
Member

@simod, I noticed issues with external AGS REST services such as:

  • layer thumbnails not working
  • the remote service source not being added to the list of GeoExplorer
    layer sources after a remote service is added
  • 'Create a Map' from layer_detail page not using the correct layer from
    the AGS service (seems to default to layer '0')
  • layers not projected correctly in GeoExplorer map (when attempting to
    create a map with an external AGS layer). GeoExplorer appears to interpret
    projected coordinates as geographic/wgs84
  • incorrect layer extent (affecting leaflet map default view in
    layer_detail view). Same issue as above bbox coordinates in
    base_resourcbase are projected I think, but EPSG:4269 is listed in srid
    field

Should I log these as issues and we can consider it implemented but with a
few bugs? These might be particular to my instance and services too, just
wanted to list them here to see if anyone else has come across similar
problems.

Would be great to have remote AGS REST services working fully for us
anyway! Unfortunately I can't put time towards it at the moment though.

Micah

On Tue, Sep 23, 2014 at 10:13 AM, Simone Dalmasso [email protected]
wrote:

Can we consider this as implemented?


Reply to this email directly or view it on GitHub
#1330 (comment).

@jj0hns0n
Copy link
Contributor

Closing this as implemented and merged (https://github.com/GeoNode/geonode/tree/master/geonode/services). Please file separate issues for issues related to this module. (@mwengren, @byss, @simod)

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

No branches or pull requests

5 participants