We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

G3W-SUITE and QGIS integration: state of the art, latest developments and future prospects

00:00

Formal Metadata

Title
G3W-SUITE and QGIS integration: state of the art, latest developments and future prospects
Title of Series
Number of Parts
156
Author
Contributors
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
G3W-SUITE is a modular, client-server application (based on QGIS-Server) for managing and publishing interactive QGIS cartographic projects of various kinds in a totally independent, simple and fast way. Accessing administration, consultation of projects, editing functions and use of different modules are based on a hierarchic system of user profiling, open to editing and modulation. The suite is made up of two main components: G3W-ADMIN (based on Django and Python) as the web administration interface and G3W-CLIENT (based on OpenLayer and Vue) as the cartographic client that communicate through a series of API REST. The application, released on GitHub with Mozilla Public Licence 2.0, is compatible with QGIS LTR versions and it is based on strong integration with the QGIS API. This presentation will provide a brief history of the application and insights into key project developments over the past year. The developments affected both the administration and management component of the exposed WebGis services, both the aspects of interaction with web maps and their contents, as well as the aspects and functions related to online editing through integration with the QGIS API. A specific development, specifically covered in another submission, concerns the integration with the QGIS Processing API in order to migrate the analysis models, created in QGIS via the ModelDesigner, to a web environment. The talk, accompanied by examples of application of the features, is dedicated to both developers and users of various levels who want to manage their cartographic infrastructure based on QGIS.
Keywords
127
Total S.A.Client (computing)Group actionModul <Datentyp>HierarchyMacro (computer science)Physical systemZugriffskontrolleData managementSuite (music)OracleArchitectureContent (media)Plot (narrative)Form (programming)GUI widgetConstraint (mathematics)Default (computer science)Service (economics)Finitary relationComponent-based software engineeringFunctional (mathematics)Latent heatSystem administratorFunction (mathematics)Modul <Software>Attribute grammarGeometryService-oriented architectureCodeServer (computing)Process (computing)Computer-generated imageryStapeldateiMessage passingComputer-aided designEncryptionSoftware suiteMobile appPhysical systemComputer fileMultiplication signSystem administratorMobile appRight angleInstance (computer science)Projective planeDefault (computer science)Client (computing)Shape (magazine)Interface (computing)Medical imagingService (economics)Modul <Software>Slide ruleProcess (computing)Web 2.0Computer architecturePoint (geometry)CodeData structureGroup actionGeometryDatabaseCache (computing)Server (computing)View (database)Level (video gaming)Revision controlBCH codeMessage passingCASE <Informatik>Patch (Unix)Letterpress printingService-oriented architectureGUI widgetForm (programming)Information technology consultingConstraint (mathematics)Plug-in (computing)Cartesian coordinate systemPlotterMoment (mathematics)Web applicationText editorSuite (music)Type theoryFile viewerFilter <Stochastik>Single-precision floating-point formatComponent-based software engineeringSoftware suiteTotal S.A.Endliche ModelltheorieINTEGRALTable (information)Classical physicsSoftware frameworkAttribute grammarSoftware developerState of matterPresentation of a groupHierarchyToken ringNumeral (linguistics)Game controllerAsynchronous Transfer ModeStapeldateiFile systemProxy serverContent (media)TelecommunicationLatent heatLecture/ConferenceComputer animationProgram flowchart
Data typeSource codeSoftwareCorrelation and dependenceVideoconferencingSuite (music)Computer animationLecture/Conference
GoogolView (database)Data typeSuite (music)Projective planeWeb 2.0Service (economics)Computer animation
RotationData managementSystem programmingService (economics)DisintegrationProcess (computing)Mathematical analysisSeries (mathematics)Vector spaceActive DirectoryAuthenticationPhysical systemPolygon meshModul <Datentyp>Electronic visual displayPlanningTraffic reportingMetadataClient (computing)GUI widgetFinitary relationData recoveryRaster graphicsImage registrationPasswordGroup actionServer (computing)Macro (computer science)Maxima and minimaDigital filterTable (information)Personal digital assistantScale (map)File formatLetterpress printingRevision controlModul <Software>Web 2.0Service (economics)Endliche ModelltheorieGame controllerPlug-in (computing)Software suiteProcess (computing)Physical systemLetterpress printingRevision controlRootSystem administratorRaster graphicsType theoryPasswordData recoveryModul <Software>Software frameworkINTEGRALFile formatData managementMultiplication signKey (cryptography)Perspective (visual)Field (computer science)GUI widgetGroup actionUser interfaceTime seriesDirectory serviceTable (information)Suite (music)AuthenticationDependent and independent variablesScaling (geometry)MetadataGeometryOpen setInheritance (object-oriented programming)Mobile appClient (computing)Extension (kinesiology)Projective planeImage registrationComponent-based software engineeringMedical imagingMoment (mathematics)BitTraffic reportingLevel (video gaming)MereologyTheory of relativityMultiplicationForm (programming)Server (computing)Computer animationLecture/Conference
InformationModul <Software>Process (computing)DisintegrationGeometryFunction (mathematics)Attribute grammarGUI widgetComputer configurationData managementFinitary relationSoftwareTable (information)AuthenticationData storage deviceDatabaseSuite (music)Component-based software engineeringState transition systemPhysical systemTunisMobile appMusical ensembleSlide ruleService (economics)System administratorClassical physicsComponent-based software engineeringCartesian coordinate systemINTEGRALClient (computing)Type theorySoftware suiteEndliche ModelltheorieMoment (mathematics)Server (computing)Data managementSpherical capMereology2 (number)Revision controlPhysical systemField (computer science)Projective planeDefault (computer science)Presentation of a groupCache (computing)AdditionGUI widgetLebesgue integrationWorkstation <Musikinstrument>Proxy serverWeb applicationFront and back endsMenu (computing)DebuggerCore dumpBitDatabaseTable (information)GeometrySoftware developerData storage deviceComplete metric spaceCode refactoringData structureDirection (geometry)Strategy gameAttribute grammarBinary fileSuite (music)Inheritance (object-oriented programming)TesselationFlow separationLevel (video gaming)Open setComputer animationLecture/ConferenceMeeting/Interview
Component-based software engineeringState transition systemAuthenticationGeometryComputer-assisted translationMeeting/InterviewComputer animation
Transcript: English(auto-generated)
Thank you, thank you for attending this presentation. I'm Walter of GSDW. And today I try to show you what is the state of art and last development and the first process about the JWTW suite. For those who don't know what is JWTW suite,
I can tell you that the JWTW suite is a web app for the publication of QGIS project as WebGI services. In fact, the idea behind the birth of JWTW suite I can summarize in these following four points. First, therefore have a detailed application
for the publisher as QGIS project as WebGI services in total economy with few steps and in a very simple way. Second, have an app where organize the WebGI services in container in a hierarchical way with, for example,
cartographic group and macro-cartographic group. Third point, have an access control in front to our WebGI services with users and role, also them organizing in hierarchical mode. And fourth and last, as I have a plugin system
for the developing of custom models for to respond to the customer's request. From this point is birth of JWTW suite. In this slide you can see that there is the architecture
of JWTW suite and as you see, there is two main components. At the top we have, we can try, okay, it's working. At the top you can find a JWTW client that is made by JavaScript and OpenView.js framework. This is a classier WebGI as interfaces with map,
reference map, map widget, the token, et cetera. And it's a communicator with a JWTW admin that is administration component. It's made by Python, Django, and is fully integrated with QGIS server thanks to PyQGIS API.
In fact, thanks to this integration, JWTW admin works also as OGC services server for the JWTW client and works as APRS services also for the JWTW client. At the base we have a database, Postgres database that use it as a demonstration database
but it's all can be used as a geodatabase but for the data. But you can use inside JWTW suite every type of data, also file system data, geopackage, shapefile, et cetera. So in conclusion, every type that QGIS servers can read. Our policy is to follow the QGIS server LTR version.
In fact, now we support the 3.34 version. How old is JWTW suite? JWTW suite, in a very simple way, you can get your QGIS project file
and the project inside JWTW suite for to get a WebGI services running. In fact, during these uploading go for, JWTW suite inherit many capabilities in future from the QGIS project file. In fact, it is an area, for example, to get capability on GCC services,
the structure of talk, themes, the alleged features, et cetera. Sure, it inherited every aspect about the map, symbology, labeling, item, views, et cetera. And if there is some relationship between layers inside your projects,
for example, one-to-n, one-to-m, one-to-one, and a relationship between layers, they are inherited inside JWTW suite. But not at all. It inherited also aspects about the consultation
and editing aspects of your QGIS project. In fact, it inherited the structure of forms that you can create inside your QGIS desktop, aliases, the editing widgets, cost trains, default video, et cetera. It inherited also the print layout,
the simple print layout, and the atlas. And thanks to integration with the data plotting plugin, if you know, you can take the chart that the plot that you can make inside the QGIS desktop and make available on your WebGI services.
Now, I want to show you what the works and of every component, of two components of JWTW suite. JWTW, I said before, is the administration component.
And its behavior is to publish the QGIS project as WebGI services and control the expectation for them. Inside the JWTW suite, you can create the users, the group of users, and you can set the role
for these users. In fact, inside the JWTW suite, at the moment, we are four level of roles. You have the administration level, one and two, editor one, level two, and viewers. And also in JWTW, you can manage your WebGI services. In particular, you can create searches,
constraints, and the features for single layer inside a single project, et cetera. You can activate the editing component, the download component, et cetera. In fact, as you can, as I show you after, JWTW suite is made by strong editing component that make it possible
to make strong editing online activities. Yes, but thanks to the plugin system, you can manage also the specific model that can be activated for specific WebGI services.
JWTW client, as I said before, is a classical WebGI client. You can find as a, oh, sorry. You can select a main map, reference map, talk, map widget, et cetera. And it's based on the modular approach.
And thanks to JWTW admin, and thanks to the API rest at recent phases, you can set the layer visibility, the attribute table visibility, the alphanumeric, geometric, generic, cost-strain visibility, et cetera. All these aspects can be activated, it can be set inside the JWTW admin for the client.
In for every WebGI services that JWTW suite can run. How is it possible to deploy JWTW suite? JWTW suite as default is a Django app. As a Django app, you can deploy it
as a classical Django app, thanks to WestGI interfaces. But the model and the simple way for to try and to deploy JWTW suite is by Docker and Docker Compose. You can use, in this way, you can use JWTW suite also in Kubernetes and so in your orchestrate system.
In this slide, I show you how the JWTW suite is orchestrated by Docker and Docker Compose. And by default, we have four Docker images, four Docker contents running. At the top, we have a Docker engine X image
that is used as a Rails proxy in front of a main JWTW suite image that contain the code of JWTW suite and the QGIS server at the same time. At the base, we have the Bosque's database get the user as before as administration database, but it can be used also as a geo database.
And in the middle of the right, you can see the Redis instance that is used as internal caching system. But JWTW suite, with JWTW suite is possible make also batch processing in back
and so you can deploy another instance of JWTW suite for to do that. And in this case, Redis is used also as a message broker for these between the main web JWTW suite image container and the batch processing image container. Now, to open, okay, you see, yes, it's okay.
This is a video that show how JWTW suite works, what is the workflow. As you can see, you are in your QGIS desktop, you can make your QGIS project.
After that, you can take your QGIS project update inside the JWTW suite and set other features. For example, the accesses and the user and the role that can access to these services. After that, after the save of the services, the web JWTW services is starting to run. So with few step, with one step or two step
is possible to make available web JWTW services.
JWTW suite, what can I do with JWTW suite? Not only publish a web JWTW service with my QGIS project, but as you can see, I can make many things with it. Thanks to integration with JWTW services,
it can expose my OGC services with many layer in front of that, for example, for the access control. But thanks to advanced editing system, I can make, for example, by self web cartography management systems.
Or thanks to integration with byte CSV, I can expose my layer and the metadata about this layer. And last one I will show you in the afternoon today. We have developed a new module, a new plugin for the integration of QGIS processing API
and QGIS process framework. We have developed a new module for the QGIS desktop into JWTW suite. In fact, thanks to the plugin system, we have developed many models for to extend the features of JWTW suite.
We have made module for the integration of data for the time series. In the same way, you can use inside the QGIS desktop. We have made reporting system models. We have made models for public administration.
Example for to consult on the cadastral data or for to make verbal planning activity. But we have make models for extended other capabilities. For example, the authentication capability of JWTW suite. We have models for the active directory authentication,
CSV services, as I said before. And thanks to integration with the open root services, we have developed a model for to create on-fly and to show easy-growing layer. In this very first part, I show you how JWTW suites work
and now I want to show you what is the last news about the last two releases of JWTW suite, the 3.7, the 3.8 version. And I will show you what is the next perspective and next news about the 3.9. First of all, in these last two releases,
we supported the new QGIS LTR version, the 3.34. We extended the capabilities to import the relationship between layer. In fact, now we support also the relationship based on multi-key fields, before only with one couple of key fields that we supported.
We have extended the importation and the behavior of QGIS widget form, for example, where a relation, where a map, a reference widget, also inside the searching system of the JWTW suite.
Thanks for our customer and friends. We have made a registration system for end users and the recovery password. And we added the support to QGIS type layer,
post user raster layer. We make some update about the user interfaces of JWTW admin. We create some filter to reach our cartographic group
and our project in a very fast way. We have exposed also the OGG API future services of QG server, because at the moment, only it posted the WMS and WFS. Now it's possible to choose the type of format
of the WMS services for JWTW client. Now it's possible to set up PNG, JPEG, and PNG one bit, et cetera. And also, now it's possible to,
for every layer inside the project, specify a layer in the talk, make it available in the talk of the BIRGIS client or not. Until now, the editing activity on a layer,
it was possible only activating this capability layer by layer. Now it's possible to activate these capabilities for many layers at the same time. We extended the download future, adding the possibility to download a single future querying response in PDS format.
And on the side of JWTW client, we have added some future, for example, the possibility to save by user the filtering data on the map, and to catch again in the future.
And we have extended the possibility to create a custom themes directory on QGIS on JWTW client, and save it. About the editing capabilities, now it's possible to editing table that are in the relationship one to one
and end to one with a parent layer, without editing before one layer and after the second layer. Now it's possible also, now it's possible also editing a relationship in cascade between layer.
And now it's possible to make editing with layer with multi-geometry, an example table with multi-type geometry inside the podgis layer. And for layer, for geometric layer, where there is a future without geometric component,
now it is possible to add it. About the print layout, now it is possible to export the print in the JPG and SVG-AGI-PDF format, and it's possible to specify the scale and the DPI of the download of the print.
As I said before, we have developed this model for the app integration of co-processing inside gttable suite. As you can see, it will be possible to create your model inside the QGIS desktop
and add, and as the same model inside the GTW client, and GTW bin, so. And what about for the next 3.9? We want to extend the table field solder capabilities
that you can make inside your QGIS desktop. We are making integration with new database storage for the QGIS DB that are at the moment under development thanks to Alessandro Bozzotti. And we want to extend the editing capabilities,
for example, adding new tools for geometric editing, new attribute table widget, et cetera. About the possible future for .0,
a complete refactoring of the gttable suite for gttable bin and gttable client, in particular for gttable bin, for making it more modern with a structure client server also for the GTW min, for to expose many APRS services for the integration
with the third part application. We want to make a complete separation between the two components, between client and admin, thanks to GPT integration. We want to update the Django version
and migrate to Open Layer 8210. Thank you for your attention. So thank you, Walter, for this interesting presentation. Are there any questions? Hi, thank you for the presentation.
I was just wondering, from the last slide then, you mentioned that you don't have any capability of interacting with it via unrest API, as in setting user management or these kind of things, so this is on the... Yeah, yeah, at the moment it is not possible, because gttable bin is a classical Django map,
so it's a very classical Django map, so we don't have any API, no more API for that. We have developed some few API for some customer, but for to do that, but I'd like to split these
to expose this type of API, for example, for publishing project or create user enroll from a third part application. Okay, and the second question. Do you have the capability to actually mix layers, or every project you publish stays in the same format?
If you have two projects published, can you inherit layers from one project to another? You get my point? Oh, okay, if I understand that, do you ask me if I have two projects with the same layer? No, no, two different layers, but I would like to use the one layer from another project
which has been published already. Oh, okay, okay, it's possible, it's possible. It's worth also the, in adding system of the project, of the QGIS project, in QGIS desktop you can incorporate another project inside the project that you can, and it works in the same way in the gttable suite.
I was wondering in the front-end, not in the back-end. You have external layers. So you can inherit external layers? Yes, yeah. Okay, thank you. And I have a question. How do you deal with performance,
or do you have some experience, like how you do some caching, I saw you use Redis, or do you use the internal cache of QGIS server? Maybe you can share some experiences. By default, we use the internal cache of QGIS server, but we have another model that I don't show you
that integrate, we have integrate map proxy server for to caching, in particular for layer that is not refreshing very often. So gttable suite has also a default caching system
based on all the tile station. In fact, it's very old for this application, and nothing. We use this type of caching. One thing, can I do a question?
Someone at the moment using gttable suite? I know Tudo, yeah? Yes? Yes, okay. Thank you. I don't want to steal the session, but I was wondering, can you create a project
without publishing a project? Can you create a layer, a project with gttable suite without publishing one? I know. No, so it's always dependent on the, okay. Yeah, you have to create your QGIS project. And since it is such a, it's QGIS project,
have you ever had any discussions with the core QGIS team to make interoperability a little bit easier, like having a simple menu, on the menu button, publish, publish to, and then making the user experience really easy for people who are not QGIS experts?
Yeah, some customer has asked you to this, but we choose to, Perke, I asked him and my colleague, but we choose a very simple system for the user. At the beginning of the project, we choose this direction
because we wanted that the workflow was simple as possible. So every user can get this project and upload it in a web app.
So we choose this workflow. And our strategy is to, first of all, inherit every, we can inherit from the QGIS project. If a QGIS project don't give some future,
for example, searches, search system, I decide to implement it since I did it.