Accessing Data from External Clients (QGIS)
Install QGIS Desktop
-
Open the
Ubuntu Software
app -
Click
CTRL + F
and search forqgis
; click on theQGIS Desktop
icon -
Click on
INSTALL
and wait for the process to finish -
Once the app has been installed, open it by clicking on the icon
Connect through BASIC Auth
This is the easiest way to connect the client to GeoNode:
- Pros: very easy to configure
- Cons: it uses always a fixed user and you need to change it anytime if you want to switch it
-
Let’s add a
VECTORIAL
layer accessible totest_user1
to the client; click onLayer > Add Layer > Add WFS Layer...
-
Create a
New Connection
-
Provide a name, e.g.
GeoNode WFS
and the following URL:http://localhost/gs/ows
IMPORTANT: It is mandatory to pass through the GeoNode proxy
/gs/
instead of hitting the GeoServer endpoint directly -
If the client asks for a
NEW master password
you can just provide anyone, e.g.geonode
-
Switch to
Basic
authentication, provide thetest_user1
credentials and click onConvert to configuration
-
Make sure the converted configuration is selected and click on
Detect
in order to verify that it works; click onOK
when finished
Connect through OAuth2
This is the easiest way to connect the client to GeoNode:
- Pros: difficult to configure
- Cons: it redirects to GeoNode to authenticate, so you can use any login provided by GeoNode
-
We need to prepare GeoNode first; as an
admin
go to theAdmin Dashboard
and look forDjango OAuth Toolkit > Applications
-
Edit the
GeoServer
one -
Add the following URL to the
Redirect URIs
section and take note of theClient ID
andClient Secret
keys:- Copy the Client ID / Client Secret
- Add Redirect URIs and Save:
http://127.0.0.1:7070/qgis-client
-
Let’s add a
VECTORIAL
layer accessible totest_user1
to the client; click onLayer > Add Layer > Add WFS Layer...
-
Add a new
OAuth2 Authentication
config and fill the fields as follows:- Name: Provide any name you want e.g.
GeoNode OAuth2
- Grant Flow:
Authorization Code
- Request URL:
http://localhost/o/authorize/
(the/
at the end is IMPORTANT!) - Token URL:
http://localhost/o/token/
(the/
at the end is IMPORTANT!) - Refresh token URL:
http://localhost/o/token/
(the/
at the end is IMPORTANT!) - Client ID / Client Secret: The ones above
- Scope:
openid write
- Token session:
True
- Access method:
Header
- Token header: empty (*it is important you leave this param empty)*
- Save
- Name: Provide any name you want e.g.
-
Make sure the new configuration is selected and click on
Detect
in order to verify that it works; click onOK
when finished -
The client will open automatically a browser session, if you are not logged in, sign in with
test_user1
-
The window below means that the authetnication process was successfull; you can safely close it and go back to the client
Attach Layer to the Project
-
Once the connection has been configured and saved, whatever it is, go back to the
WFS
panel, select the connection you just created and click onConnect
-
If everything goes weel, you should be able to see the server offering; it will list all the layers the user has access to
-
Select the
Test Layer
and click onAdd
-
QGIS will create a new project with the layer already loaded and centered to the map
Editing Contents: Values
-
Enable
Editing Mode
on QGIS and click on theInfo
button -
Click over the geometry to edit and, on the right panel, expand and click on the link
Edit feature form
-
That will show a small form with the values, change few ofthem and click on
OK
button -
A small
floppy disk
button will pop near the editing one meaning that there are some pending changes to be committed to the server; click on it in order to persist the changes -
At a successfull commit, the
floppy disk
button will be disabled again
Editing Contents: Geometries
-
Enable
Editing Mode
on QGIS and click on theInfo
button -
Click on the
Vertex Tool
and enable it; from now on by moving over a geometry you will be able to modify its vertices -
Once happy with the changes, save them like we have done previously on the values
-
With this specific layer most probably you will get an error on the bounding box extension; this is caused by the native projection of the layer and the QGIS not being able to correctly manage the
dateline
-
It is still possible to edit the layer from GeoNode directly, however in order to fix this issue easily, we will convert the layer into a
Mercator Projected
one.
We will pass through the database in order to perform such operation. In the next section we will see how to re-project and store and a DB table a layer and then push it back to GeoNode.