gfdrr / geoserver_bridge Goto Github PK
View Code? Open in Web Editor NEWGeoNode - QGIS bridge
GeoNode - QGIS bridge
The user should be asked if he/she wants to override or not the data if there is already the same datastore (for shapefiles) in GeoServer.
Export the basic metadata from GeoServer into an ISO xml
Allow the user to tick a checkbox to save the currently displayed style in QGIS for the layer, write it as a new SLD file, then upload it and apply it to the uploaded layer.
See: http://www.webrian.ch/2012/04/native-sld-support-in-qgis.html
Write it in the same format that geonode-extract uses to download from geonode, this will be then used to upload into geonode.
Refactor geonode-extract to get back all the files (style, metadata, data) from a geonode, given the typename.
For example:
def download(geonode_url, name):
...
download('http://localhost:8000', 'geonode:rivers')
Upload a sld file if there is one with the same name as the shapefile in the same folder and apply it as the default style
Allow the user to choose the workspace he wants to upload the feature to. By default, load the data into the defined default workspace
Start with some basic text boxes.
Also allow the users to specify the folder where the data is downloaded to.
I am not sure if it is possible yet with the QGIS api, see http://www.webrian.ch/2012/04/native-sld-support-in-qgis.html (it is a year old so it may be possible now)
By default, when clicking on a row, only one cell is selected and not the entire row which then causes issues for processing. Instead select the entire row when any cell in the row is clicked.
Same as #5 but with a raster.
Refactor geonode-extract to let you get the list of layers with metadata as a python object.
Create a function to load a layer as downloaded from Geonode, into the active QGIS workspace.
Look into the code at: http://github.com/AIFDR/inasafe and http://github.com/safe/safe-geonode for some examples of code handling download from geonode and loading layers into qgis.
Include dependencies with plugin (gsconfig, requests and other new one if necessary) before releasing the plugin
For each QGSLayer object created in https://github.com/GFDRR/geoserver_bridge/blob/master/storage/qgscatalog.py#L24
Each of these lines using gsconfig.py library:
https://github.com/GFDRR/geoserver_bridge/blob/master/storage/qgslayer.py#L29-L34
is making between 5 and 15 calls to the server.
For instance:
self.workspace = self.resource.workspace.name does the following calls:
/geoserver/rest/layers/ds_divisions_admin_level_4.xml
/geoserver/rest/workspaces.xml
/geoserver/rest/workspaces/geonode/datastores.xml
/geoserver/rest/workspaces/geonode/datastores.xml
/geoserver/rest/workspaces/geonode/coveragestores.xml
/geoserver/rest/workspaces/geonode/coveragestores.xml
/geoserver/rest/workspaces/geonode/datastores/postgres_imports/featuretypes.xml
/geoserver/rest/workspaces/geonode/datastores/postgres_imports/featuretypes.xml
Need to cut down the number of calls and do some local caching.
Also, need to use some UI tricks, displaying initially only the workspace name and display the layers only when unfolding a workspace name
Something like that to show a pop up dialog:
import errno
try:
...
except socket.error, v:
errorcode=v[0]
if errorcode==errno.ECONNREFUSED:
Show dialog "Connection Refused"
Operations using gsconfig.py requires login and password even for public layers.
One option could be to enable a workflow using only ows to access public layers.
Create basic table UI to list the layers available on the GeoServer instance, allow the user to select the layers he wants and then to download the selected one. Optionally, add the layer to the current QGIS workspace.
Using the code developed in #4, load a vector layer directly to geonode.
List the layers from the current QGIS workspace. Allow the user to select some layers and to upload them to GeoServer.
Have at least title, description and keywords out of qgis and into an ISO xml (like the one provided by geonode), verify this information is correctly uploaded to geonode.
When exporting to a file, enable the user to choose the export location
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.