fire2a.processing_utils

This module is related to qgis processing algorithms, needing a special initialization

 1#!python3
 2"""
 3This module is related to qgis processing algorithms, needing a special initialization
 4"""
 5__author__ = "Fernando Badilla"
 6__revision__ = "$Format:%H$"
 7import logging
 8import os
 9import sys
10
11from qgis.core import QgsProcessingFeedback
12
13from .utils import fprint
14
15logger = logging.getLogger(__name__)
16
17from platform import system as platform_system
18
19# Append the path where processing plugin can be found
20# TODO macos
21if platform_system() == "Windows":
22    sys.path.append("C:\\PROGRA~1\\QGIS33~1.1\\apps\\qgis\\python\\plugins")
23else:
24    sys.path.append("/usr/share/qgis/python/plugins")
25
26# import processing
27# from processing.core.Processing import Processing
28# Processing.initialize()
29from processing.algs.gdal.GdalUtils import GdalUtils
30
31
32def get_vector_driver_from_filename(filename: str) -> str:
33    return GdalUtils.getVectorDriverFromFileName(filename)
34
35
36def get_output_raster_format(filename: str, feedback: QgsProcessingFeedback = None) -> str:
37    """Gets a valid GDAL output raster driver name, warns if not found, defaults to GTiff.
38
39    Args:
40        filename (str): The name with extension of the raster. (Not implemented for suffixes with multiple dots, e.g. mpv.gz)
41        feedback (QgsProcessingFeedback): The feedback object to push warnings to.
42
43    Returns:
44        str: The GDAL short format name for extension.
45
46    Sample usage:
47        driver_name = get_output_raster_format(filename, feedback)
48        dst_ds = gdal.GetDriverByName(raster_format).Create(filename, W, H, 1, GDT_Float32)
49
50    Based/copied from qgis.python.grassprovider.grass_utils.py GrassUtils
51    """
52    ext = os.path.splitext(filename)[1].lower()
53    ext = ext.lstrip(".")
54    if ext:
55        supported = GdalUtils.getSupportedOutputRasters()
56        for name in list(supported.keys()):
57            exts = supported[name]
58            if ext in exts:
59                return name
60    fprint(
61        f"Using GTiff format! No supported GDAL raster format for {filename=} {ext=} found.",
62        level="warning",
63        feedback=feedback,
64    )
65    return "GTiff"
66
67
68def check_gdal_readable_raster(filename):
69    """Based/copied from qgis.python.grassprovider.grass_utils.py GrassUtils"""
70    ext = os.path.splitext(filename)[1].lower()
71    ext = ext.lstrip(".")
72    if ext:
73        supported = GdalUtils.getSupportedRasters()
74        for name in list(supported.keys()):
75            exts = supported[name]
76            if ext in exts:
77                return True
78    return False
logger = <Logger fire2a.processing_utils (WARNING)>
def get_vector_driver_from_filename(filename: str) -> str:
33def get_vector_driver_from_filename(filename: str) -> str:
34    return GdalUtils.getVectorDriverFromFileName(filename)
def get_output_raster_format(filename: str, feedback: qgis._core.QgsProcessingFeedback = None) -> str:
37def get_output_raster_format(filename: str, feedback: QgsProcessingFeedback = None) -> str:
38    """Gets a valid GDAL output raster driver name, warns if not found, defaults to GTiff.
39
40    Args:
41        filename (str): The name with extension of the raster. (Not implemented for suffixes with multiple dots, e.g. mpv.gz)
42        feedback (QgsProcessingFeedback): The feedback object to push warnings to.
43
44    Returns:
45        str: The GDAL short format name for extension.
46
47    Sample usage:
48        driver_name = get_output_raster_format(filename, feedback)
49        dst_ds = gdal.GetDriverByName(raster_format).Create(filename, W, H, 1, GDT_Float32)
50
51    Based/copied from qgis.python.grassprovider.grass_utils.py GrassUtils
52    """
53    ext = os.path.splitext(filename)[1].lower()
54    ext = ext.lstrip(".")
55    if ext:
56        supported = GdalUtils.getSupportedOutputRasters()
57        for name in list(supported.keys()):
58            exts = supported[name]
59            if ext in exts:
60                return name
61    fprint(
62        f"Using GTiff format! No supported GDAL raster format for {filename=} {ext=} found.",
63        level="warning",
64        feedback=feedback,
65    )
66    return "GTiff"

Gets a valid GDAL output raster driver name, warns if not found, defaults to GTiff.

Args: filename (str): The name with extension of the raster. (Not implemented for suffixes with multiple dots, e.g. mpv.gz) feedback (QgsProcessingFeedback): The feedback object to push warnings to.

Returns: str: The GDAL short format name for extension.

Sample usage: driver_name = get_output_raster_format(filename, feedback) dst_ds = gdal.GetDriverByName(raster_format).Create(filename, W, H, 1, GDT_Float32)

Based/copied from qgis.python.grassprovider.grass_utils.py GrassUtils

def check_gdal_readable_raster(filename):
69def check_gdal_readable_raster(filename):
70    """Based/copied from qgis.python.grassprovider.grass_utils.py GrassUtils"""
71    ext = os.path.splitext(filename)[1].lower()
72    ext = ext.lstrip(".")
73    if ext:
74        supported = GdalUtils.getSupportedRasters()
75        for name in list(supported.keys()):
76            exts = supported[name]
77            if ext in exts:
78                return True
79    return False

Based/copied from qgis.python.grassprovider.grass_utils.py GrassUtils