Skip to content

Commit

Permalink
Merge branch 'master' into point-cloud-editing-tidyup
Browse files Browse the repository at this point in the history
  • Loading branch information
uclaros authored Jan 28, 2025
2 parents a892098 + 0225742 commit 4f5c249
Show file tree
Hide file tree
Showing 188 changed files with 2,432 additions and 869 deletions.
8 changes: 7 additions & 1 deletion .ci/run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ test -n "${DOCKER}" || {

DOCKER_COMPOSE=$(command -v podman-compose docker-compose | head -1)
test -n "${DOCKER_COMPOSE}" || {
DOCKER_COMPOSE="${DOCKER} compose" # TODO: check if supported
DOCKER_COMPOSE="${DOCKER} compose"
# check if supported
${DOCKER_COMPOSE} > /dev/null || {
echo "Cannot find podman-compose or docker-compose, and '${DOCKER_COMPOSE}' fails" >&2
echo "HINT: try installing podman-compose" >&2
exit 1
}
}

IMAGE_BUILD_DEPS=docker.io/qgis/qgis3-build-deps:latest
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ jobs:
echo QT_VERSION: ${QT_VERSION}
- name: Login to Docker Hub
if: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
if: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
Expand All @@ -131,7 +131,7 @@ jobs:
context: .
file: .docker/qgis3-qt${{ matrix.qt-version }}-build-deps.dockerfile
tags: qgis/qgis3-build-deps-${{ matrix.distro-version }}-qt${{ matrix.qt-version }}:${{ github.event.pull_request.base.ref || github.ref_name }}
push: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
push: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
pull: true
build-args:
DISTRO_VERSION=${{ matrix.distro-version }}
Expand Down Expand Up @@ -297,7 +297,7 @@ jobs:
echo CTEST_BUILD_NAME: ${CTEST_BUILD_NAME}
- name: Login to Docker Hub
if: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
if: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
Expand All @@ -310,7 +310,7 @@ jobs:
context: .
file: .docker/qgis3-qt${{ matrix.qt-version }}-build-deps.dockerfile
tags: qgis/qgis3-qt${{ matrix.qt-version }}-build-deps-bin-only:${{ github.event.pull_request.base.ref || github.ref_name }}
push: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
push: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
pull: true
target: ${{ matrix.docker-target }}
build-args:
Expand Down Expand Up @@ -408,7 +408,7 @@ jobs:
fetch-depth: 2

- name: Login to Docker Hub
if: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
if: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
Expand All @@ -421,7 +421,7 @@ jobs:
context: .
file: .docker/qgis3-qt${{ matrix.qt-version }}-build-deps.dockerfile
tags: qgis/qgis3-qt${{ matrix.qt-version }}-build-deps-bin-only:${{ github.event.pull_request.base.ref || github.ref_name }}
push: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
push: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
pull: true
target: ${{ matrix.docker-target }}
build-args:
Expand Down
9 changes: 5 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ You can help us **by submitting bug reports or fixing bugs** in the [QGIS bug tr

If you wish to contribute patches you can:

1. [fork the project](https://help.github.com/forking/)
1. make your changes
1. commit to your repository
1. and then [create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/).
1. [Fork the project](https://help.github.com/forking/)
2. Install the [pre-commit](https://pre-commit.com/) hook: `pre-commit install --install-hooks` (version 4.1+ required)
3. Make your changes
4. Commit to your repository
5. [Create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/)

The development team can then review your contribution and commit it upstream as appropriate.

Expand Down
6 changes: 3 additions & 3 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -585,23 +585,23 @@ cmake .. -DBUILD_WITH_QT6=ON -DWITH_QTWEBKIT=OFF -DWITH_QTWEBENGINE=ON

## 4.1. Building with Microsoft Visual Studio

This section describes how to build QGIS using Visual Studio (MSVC) 2019 on Windows.
This section describes how to build QGIS using Visual Studio (MSVC) 2022 on Windows.
The official Windows packages are built using OSGeo4W.

This section describes the setup required to allow Visual Studio to be used to
build QGIS.

### 4.1.1. Visual Studio 2022 Community Edition

Download and install the [free (as in free beer) Community installer](https://download.visualstudio.microsoft.com/download/pr/68d6b204-9df0-4fcc-abcc-08ee0eff9cb2/b029547488a9383b0c8d8a9c813e246feb3ec19e0fe55020d4878fde5f0983fe/vs_Community.exe)
Download and install the [free (as in free beer) Community installer](https://c2rsetup.officeapps.live.com/c2r/downloadVS.aspx?sku=community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030:7851336a02d44ba38a548acc719002df)

Select "Desktop Development with C++"

### 4.1.2. Other tools and dependencies

Download and install following packages:

* [CMake](https://cmake.org/files/v3.12/cmake-3.12.3-win64-x64.msi)
* [CMake](https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-windows-x86_64.msi)
* GNU flex, GNU bison and GIT with [cygwin 64bit](https://cygwin.com/setup-x86_64.exe)
* [OSGeo4W](https://download.osgeo.org/osgeo4w/v2/osgeo4w-setup.exe)
* [ninja](https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip): Copy the `ninja.exe` to `C:\OSGeo4W\bin\`
Expand Down
1 change: 1 addition & 0 deletions python/PyQt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ set(PYQT_COMPAT_FILES
QtWebEngineCore.py
QtWebEngineQuick.py
QtWebEngineWidgets.py
QtMultimedia.py
QtNetwork.py
QtXml.py
QtQuickWidgets.py
Expand Down
24 changes: 24 additions & 0 deletions python/PyQt/PyQt/QtMultimedia.py.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-

"""
***************************************************************************
QtMultimedia.py
---------------------
Date : January 2025
Copyright : (C) 2025 by Julien Cabieces
Email : julien dot cabieces at oslandia dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""

__author__ = 'Julien Cabieces'
__date__ = 'January 2025'
__copyright__ = '(C) 2025, Julien Cabieces'

from PyQt@[email protected] import *
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,15 @@ Performs raster layer calculations.
};


QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
%Docstring
QgsRasterCalculator constructor.

:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param outputExtent: output extent, CRS is specified by outputCrs parameter
:param outputCrs: destination CRS for output raster
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
Expand All @@ -79,15 +80,14 @@ QgsRasterCalculator constructor.
.. versionadded:: 3.8
%End

QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
%Docstring
QgsRasterCalculator constructor.

:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
:param outputExtent: output extent, CRS is specified by outputCrs parameter
:param outputCrs: destination CRS for output raster
:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
Expand All @@ -96,15 +96,15 @@ QgsRasterCalculator constructor.
.. versionadded:: 3.8
%End


QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
%Docstring
QgsRasterCalculator constructor.

:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param outputExtent: output extent, CRS is specified by outputCrs parameter
:param outputCrs: destination CRS for output raster
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
Expand All @@ -114,15 +114,14 @@ QgsRasterCalculator constructor.
Use the version with transformContext instead.
%End

QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
%Docstring
QgsRasterCalculator constructor.

:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
:param outputExtent: output extent, CRS is specified by outputCrs parameter
:param outputCrs: destination CRS for output raster
:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
Expand Down
4 changes: 2 additions & 2 deletions python/PyQt6/analysis/class_map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,8 @@ QgsRasterCalcNode.setRight: src/analysis/raster/qgsrastercalcnode.h#L108
QgsRasterCalcNode.toString: src/analysis/raster/qgsrastercalcnode.h#L125
QgsRasterCalcNode.type: src/analysis/raster/qgsrastercalcnode.h#L96
QgsRasterCalcNode: src/analysis/raster/qgsrastercalcnode.h#L38
QgsRasterCalculator.lastError: src/analysis/raster/qgsrastercalculator.h#L162
QgsRasterCalculator.processCalculation: src/analysis/raster/qgsrastercalculator.h#L156
QgsRasterCalculator.lastError: src/analysis/raster/qgsrastercalculator.h#L161
QgsRasterCalculator.processCalculation: src/analysis/raster/qgsrastercalculator.h#L155
QgsRasterCalculator: src/analysis/raster/qgsrastercalculator.h#L74
QgsRasterCalculatorEntry: src/analysis/raster/qgsrastercalculator.h#L39
QgsRasterMatrix.absoluteValue: src/analysis/raster/qgsrastermatrix.h#L147
Expand Down
21 changes: 14 additions & 7 deletions python/PyQt6/core/__init__.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -569,11 +569,15 @@ try:
raise ValueError(f"The raster block data type '{str(self.dataType())}' is not compatible with NumPy arrays.")
src_array = _numpy.frombuffer(self.data(), dtype=raster_dtype)
src_array = src_array.reshape((self.height(), self.width()))
if not self.hasNoDataValue() or not use_masking:
return src_array
else:
no_data_value = self.noDataValue() if isinstance(self.noDataValue(), raster_dtype) else 0
if use_masking:
if not self.hasNoDataValue():
# Default to 0 as noDataValue if none is set
no_data_value = 0
else:
no_data_value = self.noDataValue()
return _numpy.ma.masked_equal(src_array, no_data_value)
else:
return src_array

QgsRasterBlock.as_numpy = _raster_block_as_numpy

Expand All @@ -586,7 +590,10 @@ try:
src_array = block.as_numpy(use_masking=use_masking)
arrays.append(src_array)

return _numpy.array(arrays) # This converts any maskedArrays to numpy.array
if use_masking:
return _numpy.ma.stack(arrays, axis=0)
else:
return _numpy.array(arrays)

QgsRasterLayer.as_numpy = _raster_layer_as_numpy

Expand Down Expand Up @@ -646,7 +653,7 @@ try:


QgsGeometry.as_numpy = _qgsgeometry_as_numpy

except ModuleNotFoundError:
def _raster_block_as_numpy(self, use_masking:bool = True):
raise QgsNotSupportedException('QgsRasterBlock.as_numpy is not available, numpy is not installed on the system')
Expand All @@ -657,7 +664,7 @@ except ModuleNotFoundError:
raise QgsNotSupportedException('QgsRasterLayer.as_numpy is not available, numpy is not installed on the system')

QgsRasterLayer.as_numpy = _raster_layer_as_numpy

def _geometry_as_numpy(self):
raise QgsNotSupportedException('QgsGeometry.as_numpy is not available, numpy is not installed on the system')

Expand Down
Loading

0 comments on commit 4f5c249

Please sign in to comment.