# quality-result-gui
QGIS plugin for visualizing quality check results.
## Plugin
Not implemented yet.
## Library
To use this library as an external dependency in your plugin or other Python code, install it using `pip install quality-result-gui` and use imports from the provided `quality_result_gui` package. If used in a plugin, library must be installed in the runtime QGIS environment or use [qgis-plugin-dev-tools] to bundle your plugin with runtime dependencies included.
### Minimal working example (with JSON file)
For quality dock widget to work, a subclass of QualityResultClient needs to be first implemented. Instance of the created API client class is then passed to QualityErrorsDockWidget. For a real-world application, a separate backend application is needed for checking data quality and provide the quality check results for the QGIS plugin.
Example of the expected api response can be seen in [this file](./src/quality_result_gui_plugin/dev_tools/example_quality_errors/quality_errors.json). [Example parser class](./src/quality_result_gui_plugin/dev_tools/example_quality_errors/quality_errors.json) for json response is also provided for the following example to work:
```python
import json
from qgis.utils import iface
from quality_result_gui.api.quality_api_client import QualityResultClient
from quality_result_gui.api.types.quality_error import QualityError
from quality_result_gui_plugin.dev_tools.response_parser import QualityErrorResponse
from quality_result_gui.quality_error_manager import QualityResultManager
class ExampleQualityResultClient(QualityResultClient):
def get_results(self) -> Optional[List[QualityError]]:
"""
Retrieve latest quality errors from API
Returns:
None: if no results available
List[QualityError]: if results available
Raises:
QualityResultClientError: if request fails
QualityResultServerError: if check failed in backend
"""
full_path_to_json = "some-path/example_quality_errors.json"
example_response = json.loads(Path(full_path_to_json).read_text())
return QualityErrorResponse(example_response).quality_results
def get_crs(self) -> QgsCoordinateReferenceSystem:
return QgsCoordinateReferenceSystem("EPSG:3067")
api_client = ExampleQualityResultClient()
quality_manager = QualityResultManager(api_client, iface.mainWindow())
quality_manager.show_dock_widget()
```
## Development of quality-result-gui
See [development readme](./DEVELOPMENT.md).
## License & copyright
Licensed under GNU GPL v3.0.
This tool is part of the topographic data production system developed in National Land Survey of Finland. For further information, see:
- [Abstract for FOSS4G](https://talks.osgeo.org/foss4g-2022/talk/TDDGJ9/)
- [General news article about the project](https://www.maanmittauslaitos.fi/en/topical_issues/topographic-data-production-system-upgraded-using-open-source-solutions)
Copyright (C) 2022 [National Land Survey of Finland].
[National Land Survey of Finland]: https://www.maanmittauslaitos.fi/en
[qgis-plugin-dev-tools]: https://github.com/nlsfi/qgis-plugin-dev-tools
# CHANGELOG
## [2.0.8] - 2024-09-27
- Feat: Add finnish translations
- Fix: Set annotation rendering order based on priority
## [2.0.7] - 2024-01-17
- Fix: Process modifications in quality error tree correctly when multiple filters are present
## [2.0.6] - 2024-01-05
- Fix: Show correct results when user processed filter is toggled with map extent filter active
## [2.0.5] - 2023-12-12
- Fix: Filter newly inserted quality error rows correctly with user processed and map extent filters
## [2.0.4] - 2023-10-05
- Fix: Redraw map when an error is selected and errors are not visualized on map
## [2.0.3] - 2023-09-12
- Fix: Include .qm translation files to the zip generated by release workflow action
## [2.0.2] - 2023-09-06
- Fix: Make Finnish translations visible
## [2.0.1] - 2023-07-12
- Feat: Add Finnish translations
## [2.0.0] - 2023-07-11
- Refactor!: replace hierarchical representation of quality errors with a flat quality error list
## [1.1.6] - 2023-05-23
- Feat: Add functionality to display quality error feature type and attribute names from layer aliases.
## [1.1.5] - 2023-03-29
- Fix: Do not zoom to error when geometry is null geometry
## [1.1.4] - 2023-03-08
- Fix: Show correct error count when errors are filtered
- Fix: Remove selected error visualization from map when error is removed from list
## [1.1.3] - 2023-03-03
- Feat: Add method to hide dock widget and functionality to recreate error visualizations
## [1.1.2] - 2023-03-01
- Fix: Do not hide filter menu when a filter is selected
- Fix: Fix missing marker symbol from line type annotations
- Feat: Allow configuring quality layer styles
- Feat: Add keyboard shortcut for visualize errors on map
## [1.1.1] - 2023-02-23
- Feat: Change Show user processed filter into checkbox selection
## [1.1.0] - 2023-02-16
- Feat: Add optional extra info field to quality error. Extra info is displayed in the tooltip of error description and may contain html formatted text.
- Refactor: Remove language specific description fields from quality error and include only a single field for description.
## [1.0.0] - 2023-02-14
- Feat: Added an API to add custom filters for errors.
- Fix: Hide empty branches from quality error list when user processed errors are hidden and user processes all errors for a feature
- Fix: Error layer stays visible after minimizing QGIS.
## [0.0.4] - 2022-12-28
- Feat: Emit mouse event signal for selected error feature
- Feat: New filter to filter quality errors by error attribute value
- Feat: Add tooltip for quality error description
- Feat: Update data in tree view partially when data changes
- Fix: Minor styling fixes of tree view
- Fix: Visualize error when description is clicked
## [0.0.3] - 2022-12-15
- Fix: Use glob paths for missing build resource files
## [0.0.2] - 2022-12-14
- Fix: Fix missing ui and svg files by including them in setuptools build
## [0.0.1] - 2022-12-14
- Initial release: QGIS dock widget for visualizing quality check results
[0.0.1]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.1
[0.0.2]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.2
[0.0.3]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.3
[0.0.4]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.4
[1.0.0]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.0.0
[1.1.0]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.0
[1.1.1]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.1
[1.1.2]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.2
[1.1.3]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.3
[1.1.4]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.4
[1.1.5]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.5
[1.1.6]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.6
[2.0.0]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.0
[2.0.1]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.1
[2.0.2]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.2
[2.0.3]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.3
[2.0.4]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.4
[2.0.5]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.5
[2.0.6]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.6
[2.0.7]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.7
[2.0.8]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.8
Raw data
{
"_id": null,
"home_page": "https://github.com/nlsfi/quality-result-gui",
"name": "quality-result-gui",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "qgis",
"author": "National Land Survey of Finland",
"author_email": "os@nls.fi",
"download_url": "https://files.pythonhosted.org/packages/88/c0/0f8a83f2ceda8ff45226486b0d6a51c431ac4e4a000dd7dd8322407288bc/quality_result_gui-2.0.8.tar.gz",
"platform": null,
"description": "# quality-result-gui\n\nQGIS plugin for visualizing quality check results.\n\n## Plugin\n\nNot implemented yet.\n\n## Library\n\nTo use this library as an external dependency in your plugin or other Python code, install it using `pip install quality-result-gui` and use imports from the provided `quality_result_gui` package. If used in a plugin, library must be installed in the runtime QGIS environment or use [qgis-plugin-dev-tools] to bundle your plugin with runtime dependencies included.\n\n### Minimal working example (with JSON file)\n\nFor quality dock widget to work, a subclass of QualityResultClient needs to be first implemented. Instance of the created API client class is then passed to QualityErrorsDockWidget. For a real-world application, a separate backend application is needed for checking data quality and provide the quality check results for the QGIS plugin.\n\nExample of the expected api response can be seen in [this file](./src/quality_result_gui_plugin/dev_tools/example_quality_errors/quality_errors.json). [Example parser class](./src/quality_result_gui_plugin/dev_tools/example_quality_errors/quality_errors.json) for json response is also provided for the following example to work:\n\n```python\nimport json\n\nfrom qgis.utils import iface\n\nfrom quality_result_gui.api.quality_api_client import QualityResultClient\nfrom quality_result_gui.api.types.quality_error import QualityError\nfrom quality_result_gui_plugin.dev_tools.response_parser import QualityErrorResponse\nfrom quality_result_gui.quality_error_manager import QualityResultManager\n\n\nclass ExampleQualityResultClient(QualityResultClient):\n\n def get_results(self) -> Optional[List[QualityError]]:\n \"\"\"\n Retrieve latest quality errors from API\n\n Returns:\n None: if no results available\n List[QualityError]: if results available\n\n Raises:\n QualityResultClientError: if request fails\n QualityResultServerError: if check failed in backend\n \"\"\"\n full_path_to_json = \"some-path/example_quality_errors.json\"\n example_response = json.loads(Path(full_path_to_json).read_text())\n\n return QualityErrorResponse(example_response).quality_results\n\n def get_crs(self) -> QgsCoordinateReferenceSystem:\n return QgsCoordinateReferenceSystem(\"EPSG:3067\")\n\n\n\napi_client = ExampleQualityResultClient()\nquality_manager = QualityResultManager(api_client, iface.mainWindow())\nquality_manager.show_dock_widget()\n\n```\n\n## Development of quality-result-gui\n\nSee [development readme](./DEVELOPMENT.md).\n\n## License & copyright\n\nLicensed under GNU GPL v3.0.\n\nThis tool is part of the topographic data production system developed in National Land Survey of Finland. For further information, see:\n\n- [Abstract for FOSS4G](https://talks.osgeo.org/foss4g-2022/talk/TDDGJ9/)\n- [General news article about the project](https://www.maanmittauslaitos.fi/en/topical_issues/topographic-data-production-system-upgraded-using-open-source-solutions)\n\nCopyright (C) 2022 [National Land Survey of Finland].\n\n[National Land Survey of Finland]: https://www.maanmittauslaitos.fi/en\n[qgis-plugin-dev-tools]: https://github.com/nlsfi/qgis-plugin-dev-tools\n\n# CHANGELOG\n\n## [2.0.8] - 2024-09-27\n\n- Feat: Add finnish translations\n- Fix: Set annotation rendering order based on priority\n\n## [2.0.7] - 2024-01-17\n\n- Fix: Process modifications in quality error tree correctly when multiple filters are present\n\n## [2.0.6] - 2024-01-05\n\n- Fix: Show correct results when user processed filter is toggled with map extent filter active\n\n## [2.0.5] - 2023-12-12\n\n- Fix: Filter newly inserted quality error rows correctly with user processed and map extent filters\n\n## [2.0.4] - 2023-10-05\n\n- Fix: Redraw map when an error is selected and errors are not visualized on map\n\n## [2.0.3] - 2023-09-12\n\n- Fix: Include .qm translation files to the zip generated by release workflow action\n\n## [2.0.2] - 2023-09-06\n\n- Fix: Make Finnish translations visible\n\n## [2.0.1] - 2023-07-12\n\n- Feat: Add Finnish translations\n\n## [2.0.0] - 2023-07-11\n\n- Refactor!: replace hierarchical representation of quality errors with a flat quality error list\n\n## [1.1.6] - 2023-05-23\n\n- Feat: Add functionality to display quality error feature type and attribute names from layer aliases.\n\n## [1.1.5] - 2023-03-29\n\n- Fix: Do not zoom to error when geometry is null geometry\n\n## [1.1.4] - 2023-03-08\n\n- Fix: Show correct error count when errors are filtered\n- Fix: Remove selected error visualization from map when error is removed from list\n\n## [1.1.3] - 2023-03-03\n\n- Feat: Add method to hide dock widget and functionality to recreate error visualizations\n\n## [1.1.2] - 2023-03-01\n\n- Fix: Do not hide filter menu when a filter is selected\n- Fix: Fix missing marker symbol from line type annotations\n- Feat: Allow configuring quality layer styles\n- Feat: Add keyboard shortcut for visualize errors on map\n\n## [1.1.1] - 2023-02-23\n\n- Feat: Change Show user processed filter into checkbox selection\n\n## [1.1.0] - 2023-02-16\n\n- Feat: Add optional extra info field to quality error. Extra info is displayed in the tooltip of error description and may contain html formatted text.\n- Refactor: Remove language specific description fields from quality error and include only a single field for description.\n\n## [1.0.0] - 2023-02-14\n\n- Feat: Added an API to add custom filters for errors.\n- Fix: Hide empty branches from quality error list when user processed errors are hidden and user processes all errors for a feature\n- Fix: Error layer stays visible after minimizing QGIS.\n\n## [0.0.4] - 2022-12-28\n\n- Feat: Emit mouse event signal for selected error feature\n- Feat: New filter to filter quality errors by error attribute value\n- Feat: Add tooltip for quality error description\n- Feat: Update data in tree view partially when data changes\n- Fix: Minor styling fixes of tree view\n- Fix: Visualize error when description is clicked\n\n## [0.0.3] - 2022-12-15\n\n- Fix: Use glob paths for missing build resource files\n\n## [0.0.2] - 2022-12-14\n\n- Fix: Fix missing ui and svg files by including them in setuptools build\n\n## [0.0.1] - 2022-12-14\n\n- Initial release: QGIS dock widget for visualizing quality check results\n\n[0.0.1]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.1\n[0.0.2]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.2\n[0.0.3]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.3\n[0.0.4]: https://github.com/nlsfi/quality-result-gui/releases/tag/v0.0.4\n[1.0.0]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.0.0\n[1.1.0]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.0\n[1.1.1]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.1\n[1.1.2]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.2\n[1.1.3]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.3\n[1.1.4]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.4\n[1.1.5]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.5\n[1.1.6]: https://github.com/nlsfi/quality-result-gui/releases/tag/v1.1.6\n[2.0.0]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.0\n[2.0.1]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.1\n[2.0.2]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.2\n[2.0.3]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.3\n[2.0.4]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.4\n[2.0.5]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.5\n[2.0.6]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.6\n[2.0.7]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.7\n[2.0.8]: https://github.com/nlsfi/quality-result-gui/releases/tag/v2.0.8\n",
"bugtrack_url": null,
"license": "GNU GPL v3.0",
"summary": "QGIS plugin for visualizing quality check results.",
"version": "2.0.8",
"project_urls": {
"Changelog": "https://github.com/nlsfi/quality-result-gui/blob/main/CHANGELOG.md",
"Homepage": "https://github.com/nlsfi/quality-result-gui"
},
"split_keywords": [
"qgis"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "739d34e9bf162db9af10dbdd943ac92605323efaa6485676454f3ae0031f29ba",
"md5": "6df3ab6138cf3ede01a7ed17bfda1015",
"sha256": "58eaf78fc6dd86e63f870ac071fc09a34e6cc63cbe3e50e8884d630a1bb5aee0"
},
"downloads": -1,
"filename": "quality_result_gui-2.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6df3ab6138cf3ede01a7ed17bfda1015",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 82525,
"upload_time": "2024-09-27T08:30:01",
"upload_time_iso_8601": "2024-09-27T08:30:01.044209Z",
"url": "https://files.pythonhosted.org/packages/73/9d/34e9bf162db9af10dbdd943ac92605323efaa6485676454f3ae0031f29ba/quality_result_gui-2.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "88c00f8a83f2ceda8ff45226486b0d6a51c431ac4e4a000dd7dd8322407288bc",
"md5": "2f417c60abc9b5db6c6a3e8aa2453494",
"sha256": "93e829ef7c7b993828279a15a75e22c85f266342fcc26b70df2a6bd49c6f9910"
},
"downloads": -1,
"filename": "quality_result_gui-2.0.8.tar.gz",
"has_sig": false,
"md5_digest": "2f417c60abc9b5db6c6a3e8aa2453494",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 58939,
"upload_time": "2024-09-27T08:30:02",
"upload_time_iso_8601": "2024-09-27T08:30:02.933480Z",
"url": "https://files.pythonhosted.org/packages/88/c0/0f8a83f2ceda8ff45226486b0d6a51c431ac4e4a000dd7dd8322407288bc/quality_result_gui-2.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-27 08:30:02",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nlsfi",
"github_project": "quality-result-gui",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "quality-result-gui"
}