QGIS Server is an open source OGC data server which uses QGIS engine as backend. It becomes really awesome because a simple desktop qgis project file can be rendered as web services with exactly the same rendering, and without any mapfile or xml coding by hand.
QGIS Server provides a way to serve OGC web services like WMS, WCS, WFS and WMTS resources from a QGIS project, but can also extend services like GetPrint which takes advantage of QGIS’s map composer power to generate high quality PDF outputs.
Thus, the next step was naturally to take a look at the WFS 1.1.0 thanks to the support of the QGIS Grant Program
TEAM Engine test suite for WFS 1.1.0
Test suites are available through a web interface. However, for the needs of continuous integration, these tests have to be run without user interaction. In the case of WMS 1.3.0, nothing more easy than using the REST API:
However, the WFS 1.1.0 test suite does not provide a REST API and makes the situation less straightforward. We switched to using TEAM Engine directly from command line:
The params.xml file allows to configure underlying tests. In this particular case, the GetCapabilities URL of the QGIS Server to test is given. Results are available thanks to the viewlog.sh shell script:
Finally, a Python script has been written to read these logs and generate HTML report easily readable. Thanks to our QGIS-Server-CertifSuite, providing the continuous integration infrastructure with Docker images, these reports are also generated daily.
Bugfix and Conclusion
First results were clear: a lot of work is necessary to have a QGIS Server certified for WFS 1.1.0!
We started fixing the issues one by one:
- Fixes Filter Capabilities
- Fixes Operations
- Fixes Spatial Operator
- Fixes ServiceTypeVersion
- Fixes Post element
- Various fixes in GetCapabilities
And now we have a much better support than 6 months ago
However, some work still need to be done to finally obtain the OGC certification for WFS 1.1.0. To be continued!
Please contact us if you want QGIS server to become a reference implementation for all OGC service !