qgis / QGIS

QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS)
https://qgis.org
GNU General Public License v2.0
10.52k stars 2.99k forks source link

The Geonode client do not show the "WCS" node #42761

Closed gioman closed 3 years ago

gioman commented 3 years ago

Screenshot_20210411_172749

It only show WMS and WFS even if the endpoint has some layers published as WCS too.

timlinux commented 3 years ago

Yeah in the original scope of work we focussed on WMS and WFS only. @Samweli can you drop in WCS too? @gioman we are busy with a brand new client for GeoNode though that makes it a bit uncertain if we want to spend more time on the old implementation. See https://github.com/kartoza/qgis_geonode and cc @ricardogsilva

roya0045 commented 3 years ago

@timlinux out of curiosity: does that mean QGIS will have a suboptimal provider in core, will the provider be replaced, or removed from core and delegated to the plugin?

Samweli commented 3 years ago

@Samweli can you drop in WCS too?

Sure @timlinux,

Something like this @gioman @timlinux? wcs_geonode_qgis_support

gioman commented 3 years ago

@gioman we are busy with a brand new client for GeoNode though that makes it a bit uncertain if we want to spend more time on the old implementation

@timlinux @Samweli @ricardogsilva well then it is up to you! Thanks for the effort around this client!

timlinux commented 3 years ago

@timlinux out of curiosity: does that mean QGIS will have a suboptimal provider in core, will the provider be replaced, or removed from core and delegated to the plugin?

@roya0045 Just a semantic note that it is not actually a provider, it uses the existing OGC service providers in QGIS.

We are developing a new implementation which will be a huge improvment on the current. Our developers preferred to make it in Python. Once the work is complete, we will discuss with the community options for integrating the work which would be between:

  1. Keep the existing work in C++, providing basic maintenance only, and have the new work available as a plugin where we can actively add features etc.
  2. Remove the C++ implementation, let users fetch the new version from the plugin repo
  3. Remove the C++ implementation, add the new implementation as a core, shipped and enabled by default plugin
  4. Port the new version over to C++ once the plugin is feature complete

My preference is (in order) 4 then 3, though we probably dont have enough funding for 4 and given the moves over the last few years to strip out python plugins from core, I guess the community won't be keen on 3.

Our developers will probably prefer 2 but then we need community buy in to strip the C++ stuff out (maybe there won't be much resistance). My downside to this is that a) we spent a lot of time and effort getting acceptance for having core integration of GeoNode support it would be a shame to lose that and b) it is a great user experience for both QGIS users and GeoNode users being able to connect to GeoNode 'out of the box' on default QGIS installs.

1 Might be a good interim solution and what I propose we do in the mean time. When we are ready, @ricardogsilva will write a QEP to discuss all this properly.

@Samweli or @ricardogsilva could you attach the latest screencast of the new plugin so folks watching can get a sense of the improvements?

Hope that helps clarify things a bit!

Regards

Tim

timlinux commented 3 years ago

@Samweli can you drop in WCS too?

Sure @timlinux,

Something like this @gioman @timlinux? wcs_geonode_qgis_support

Yah perfect thanks @samweli, will you make a PR?

ricardogsilva commented 3 years ago

@roya0045 @gioman

As @timlinux is saying, this is pretty much a work-in-progress. We are working on a new GeoNode client for QGIS, which is being developed as a Python plugin. You can find it here:

https://kartoza.github.io/qgis_geonode/

We've setup a private plugin registry for it that you can use to get it installed in QGIS if you are keen to test it out - any feedback will be much appreciated :smile_cat: - however, at this stage the work is not really ready for prime time yet and the docs are really lacking.

The reason for making it a plugin boils down to the fact that the GeoNode project is moving fast and it would be harder to keep the QGIS integration working smoothly if it was in the core, as GeoNode's new API is still evolving. With a Python plugin we can control the release cycle independently from QGIS and ensure we implement and deliver changes faster. That being said, we are providing support for older GeoNode versions too in the plugin. We are working closely with the GeoNode core team on this current effort.

The current plan is to propose option 2. to the wider QGIS community (remove GeoNode support from core and direct users to the plugin). We will be posting a QEP for this soon, probably sometime next month.

gioman commented 3 years ago

Nice!

any feedback will be much appreciated smile_cat

@ricardogsilva hopefully you won't regret giving me the link, I'm a bug magnet ;) Jokes apart I will be happy to test the plugin!

gioman commented 3 years ago

@ricardogsilva the geonode client as it is now do not support authentication (as the other clients WMS, WFS, etc.), the plugin support it?

ricardogsilva commented 3 years ago

@ricardogsilva the geonode client as it is now do not support authentication (as the other clients WMS, WFS, etc.), the plugin support it?

Yes, that is one of the improvements we are delivering with the plugin.

For new GeoNode versions (v3.0 and up I believe) we are using OAuth2 authentication and for older GeoNode deployments we are relying on the session-based auth. Both are implemented in the plugin and seem to be working good.

As it currently stands we are working on read support, i.e. being able to search and load GeoNode resources onto QGIS, bringing in the metadata information onto QGIS and also using SLD to match the same styles as seen on GeoNode - it is mostly working, but we still need to polish it up a bit more.

We are also planning on implementing write support, i.e. being able to modify a layer and update it on GeoNode, and also directly create new GeoNode layers from QGIS. This work depends on the new GeoNode API, which is still being implemented though. But that is the direction we are moving to.

gioman commented 3 years ago

Yes, that is one of the improvements we are delivering with the plugin.

For new GeoNode versions (v3.0 and up I believe) we are using OAuth2 authentication and for older GeoNode deployments we are relying on the session-based auth. Both are implemented in the plugin and seem to be working good.

@ricardogsilva GN >= 3.0 do not support (session-based auth) basic http auth? actually I'm struggling with it while testing geonode services (wms,wfs) with the credential of a geonode user. I tried oauth2 and works but it is not really an option for most of the users.

As it currently stands we are working on read support, i.e. being able to search and load GeoNode resources onto QGIS, bringing in the metadata information onto QGIS and also using SLD to match the same styles as seen on GeoNode - it is mostly working, but we still need to polish it up a bit more.

We are also planning on implementing write support, i.e. being able to modify a layer and update it on GeoNode, and also directly create new GeoNode layers from QGIS. This work depends on the new GeoNode API, which is still being implemented though. But that is the direction we are moving to.

this is really cool!

ricardogsilva commented 3 years ago

@gioman

AFAIK GeoNode does not really support HTTP basic auth at all.

GeoNode is based on the django project and uses two types of authentication:

For accessing OWS web services GeoNode relies on GeoServer and the way it handles user authentication is by having GeoNode be an OAuth server that basically tells GeoServer if a user should be allowed to access an OWS URL depending on the validity of an access token that the user must supply when performing requests. Now I believe there might be a way to get HTTP basic auth working, by configuring GeoServer. However, I don't think it is currently possible to do HTTP basic auth with the same user credentials as the ones from GeoNode. I might be wrong though.

Samweli commented 3 years ago

will you make a PR

will do @timlinux

gioman commented 3 years ago

AFAIK GeoNode does not really support HTTP basic auth at all.

@ricardogsilva thanks for the info! but weird, I was really sure that in a WMS/WFS client was possible to use geonode credentials (basic http auth) to authenticate in a geonode/geoserver endpoint and so access layer that are protected trough the geonode permissions. Am I wrong?