83 Commits

Author SHA1 Message Date
Alessandro Pasotti
7e7cb41b80 Const correct provider temporal capabilities 2020-04-06 10:50:04 +02:00
Vincent Cloarec
75ddf3c7a6
[FEATURE][MESH] plug mesh layer to QGIS temporal framework (#35466)
[FEATURE] Use temporal controller for the mesh layer time handling.
2020-04-03 08:21:15 +02:00
Samweli
76fcdf1163 removed wmst specific logis in temporal tab 2020-03-30 08:01:58 +10:00
Samweli
8cd1c0f7ab separated wms static range from raster layer temporal properties 2020-03-30 08:01:58 +10:00
Nyall Dawson
9959a22e54 Don't inherit QgsTemporalProperty for QgsDataProviderTemporalCapabilities
The QgsTemporalProperty interface has members which are geared more to
user-setable temporal properties (e.g. "isActive()"/"setIsActive()". Instead, use
more explicit "hasTemporalCapabilities()" API in
QgsDataProviderTemporalCapabilities to make it immediately clear
what this flag means for data provider temporal capabilities
2020-03-06 11:56:13 +10:00
Nyall Dawson
fa6d62f9dd Minor header cleanups and documentation improvements 2020-03-06 11:56:13 +10:00
Samweli
1abbc2a586 saving and restoring temporal properties 2020-03-05 18:41:35 +10:00
Samweli
2517b566d1 suggested changes from the review 2020-03-05 18:41:35 +10:00
Samweli
1cbb8e76b6 fixed conflicts 2020-03-05 18:41:35 +10:00
Samweli
6352d6889c added abstract temporal class
updates on tests and abstract temporal class

updates on qgsabstracttemporal sip and tests

update qgsabstracttemporal test

updated docs

moved qgsabstracttemporal class to qgstemporalrangeobject class as per review suggestions

edits per review on qgs map canvas

remove access of private members from qgstemporalrangeobject

updated render context test and fix travis tests

added new temporal property class

added tests for temporal property

added tests for temporal property

added temporal widget ui

temporal support in raster layers, from wms provider

temporal properties in raster layer properties

added abstract temporal class

updates on tests and abstract temporal class

updates on qgsabstracttemporal sip and tests

update qgsabstracttemporal test

updated docs

temporal support in raster layers, from wms provider

update qgsabstracttemporal test

updated docs

moved qgsabstracttemporal class to qgstemporalrangeobject class as per review suggestions

edits per review on qgs map canvas

updated render context test and fix travis tests

added new temporal property class

added new map layer temporal properties sub classes with tests

updates on map layers temporal properties classes

fix travis tests

add read and write xml tests

added abstract temporal class

updates on tests and abstract temporal class

updates on qgsabstracttemporal sip and tests

update qgsabstracttemporal test

updated docs

edits per review on qgs map canvas

temporal properties in raster layer properties

temporal support in raster layers, from wms provider

moved qgsabstracttemporal class to qgstemporalrangeobject class as per review suggestions

edits per review on qgs map canvas

remove access of private members from qgstemporalrangeobject

updated render context test and fix travis tests

added new temporal property class

added new map layer temporal properties sub classes with tests

updated layer times ui

added advanced options in layer time constrains ui

fix for refreshing wms layer after temporal properties update

update on wms-t temporal properties

added support for bi-temporal WMS-T
2020-03-05 18:41:35 +10:00
Juergen E. Fischer
bd1b27087d fix qgis release name 2019-10-29 01:12:29 +01:00
Matthias Kuhn
e51a3babb7 Move WMS ignore extents to service level 2019-07-24 12:41:31 +02:00
Matthias Kuhn
835a2b313e Do not clip rendered raster area in the provider.
It's the consumers (like layer renderer's) responsibility to crop
to a desired extent. The raster data provider should just return the
extent it was asked for.
2019-07-20 14:25:19 +02:00
Peter Petrik
62d615c2cd [QEP 149] Introduce static data providers [API BREAK]
- adds QgsProviderGuiRegistry and QgsProviderGuiMetadata
- adds QgsProjectStorageGuiRegistry
- requires providerMetadataFactory for dynamic data providers
- requires providerMetadataGuiFactory for dynamic data providers (GUI only)
- removes QgsProviderRegistry::WidgetMode
2019-06-18 15:15:36 +02:00
Nyall Dawson
8b16e05998 Cleaner handling of raster provider native resolutions 2019-06-06 17:11:06 +10:00
Nyall Dawson
230c62fad6 If an error occurs while reading raster block data, don't return
corrupt data as a result. Instead, indicate explicitly that an
error occurred so that callers will fallback on appropriate
error paths.

Fixes rendering random junk (and possible crashes) when
attempting to open an invalid gdal raster data source,
such as the one attached to
https://github.com/OSGeo/gdal/issues/1545

Also replace manual memory management with unique_ptrs
2019-05-22 03:46:00 +10:00
Nyall Dawson
51f6fb0667 QStringLiteral 2018-10-16 13:32:05 +10:00
Nyall Dawson
46b6ffadda Fix a bunch of QString warnings 2018-10-15 19:02:48 +10:00
Nyall Dawson
04708b720e Base class implementation of sample uses identify
This allows derived classes with optimised identify methods to
utilise the same optimisations for sample. Better would be for
them to implement optimised sample methods, but this is better
than using the unoptimised block approach for all providers.
2018-07-20 07:24:35 +10:00
Nyall Dawson
74c2ed12a5 Nicer API for raster sampling 2018-07-20 07:24:35 +10:00
Nyall Dawson
ba10d1b5e7 [FEATURE] Add QgsRasterDataProvider::sample method for efficient
sampling of rasters at a given point

This is an alternative to the ::identify method, which is less
efficient but more powerful
2018-07-20 07:24:35 +10:00
Nyall Dawson
06766c4cd2 Modernize code 2018-07-20 07:24:35 +10:00
Nyall Dawson
daa73910c4 Less noisy identify method 2018-07-20 07:24:35 +10:00
Nyall Dawson
4fb9091e6e QgsRectangle::intersect should use a reference, not a pointer
We never call this method using nullptrs, so there's no need
for this to be a pointer argument in the first place. And
having it a pointer encourages leaky code, such as the
leak this commit fixes in server.
2018-06-18 07:55:17 +10:00
Nyall Dawson
44630b47ed Add QgsDataProvider::ProviderOptions struct to constructors
for data providers

Allows a way to pass generic settings to providers, e.g.
passing a datum transform context for use in provider's
constructors.
2018-05-25 11:40:57 +10:00
Nyall Dawson
fa2c5aebb7 [FEATURE][processing] Import geotagged photos algorithm
This implements a new "import geotagged photos" algorithm
for processing. It allows selection of a folder which it
will scan for jpg files which have been geotagged and
creates a PointZ layer with the result, with attributes
for photo path, altitude, direction and timestamp.

Optionally the scan can be recursive and you can create
an optional table of photos which could not be read
or which were missing geotags.

The algorithm automatically sets the output table to
use an external resource widget to display the linked
photos in the attribute form.

[ALGCHANGE]
2018-03-16 15:08:29 +11:00
Nyall Dawson
3d4f6f82bb Followup 0548f4, fixes to layer metadata and metadata widget
Address outstanding review requests so that this PR can be merged
2018-02-20 11:10:55 +10:00
Etienne Trimaille
5c28ecab8f update HTML data provider metadata (#5700)
* update HTML data provider metadata for grass, gdal and ams

* update HTML data provider metadata for WMS and WCS

* move HTML bullet list to QgsHtmlUtils
2017-12-13 13:29:41 +02:00
Etienne Trimaille
373471214f rename metadata() to htmlMetadata() in QgsRasterDataProvider 2017-11-21 11:38:50 +01:00
Nyall Dawson
a87d352bd7 Run clang-tidy modernize-use-default-member-init to move member
initialization to headers (c++11 style)
2017-09-27 05:02:34 +10:00
Nyall Dawson
2d192791c2 qMin/qMax -> std::min/max 2017-08-25 16:37:54 +10:00
Nyall Dawson
891d612e95 Remove unused qmath.h includes 2017-08-25 03:42:03 +10:00
Nyall Dawson
8c64d80a07 (q)floor -> std::floor 2017-08-25 03:12:36 +10:00
Nyall Dawson
7c5aa050d1 (q)ceil -> std::ceil 2017-08-25 03:01:48 +10:00
Nyall Dawson
4b009f96ec Use std::round instead of qRound
Now that our minimum VS studio version allowed supports std::round,
we should use that in place of Qt's qRound method.

Because:
- it doesn't truncate to int, resulting in unpredictable
behaviour (refs #16925)
- better to stick to standard c++ methods wherever possible,
since they're likely better supported and optimised by the
compilers
- it's a tiny reduction to the barrier for entry to QGIS
development (I'm sick of pointing out the need to use
qRound during PR reviews!)
2017-08-25 02:35:27 +10:00
Matthias Kuhn
a9d7630a69 Rename QgsPointV2 to QgsPoint and QgsPoint to QgsPointXY
Because 3D coordinates should be the default.

References https://github.com/qgis/qgis3.0_api/issues/36
2017-06-02 19:53:37 +02:00
Mark Johnson
5ab8e7176b UTF8 support for QgsRasterDataProvider::cStringList2Q_ (#4345)
UTF8 support for QgsRasterDataProvider::cStringList2Q_.

Fix #15978
2017-04-10 21:36:45 +02:00
Denis Rouzaud
40c056cae0 run astyle on src/core 2017-03-03 09:09:37 +01:00
Denis Rouzaud
7812d4fb17 remove the-prefix from source code
this might result in variables having the same name as some methods
2017-02-21 18:14:58 +01:00
Martin Dobias
f6f6ebdb44 [FEATURE] API to enable/disable editing of raster data
To create a 2x2 raster block with one byte per pixel:

```
block = QgsRasterBlock(Qgis.Byte, 2, 2)
block.setData(b'\xaa\xbb\xcc\xdd')
```

To overwrite existing raster data at position 0,0 by the 2x2 block:

```
provider.setEditable(True)
provider.writeBlock(block, band, 0, 0)
provider.setEditable(False)
```
2017-01-19 15:46:46 +08:00
Martin Dobias
433d04b68e QgsRasterBlock::data() for efficient access to pixel data also in Python (#4009)
Also adds some unit tests and API cleanups
2017-01-18 09:52:45 +08:00
Nyall Dawson
9d4adc1c70 Remove some singletons by moving instances to QgsApplication
- QgsColorSchemeRegistry
- QgsDataItemProviderRegistry
- QgsGPSConnectionRegistry
- QgsMessageLog
- QgsPaintEffectRegistry
- QgsPluginLayerRegistry
- QgsRasterRendererRegistry
- QgsRendererRegistry
- QgsSvgCache
- QgsSymbolLayerRegistry
2016-12-28 16:59:03 +10:00
Nyall Dawson
4166a3ea62 Fix most clazy qstring-unneeded-heap-allocations warnings
By flipping string literals to QStringLiteral/QLatin1String

see

https://woboq.com/blog/qstringliteral.html
2016-10-24 15:26:24 +10:00
Martin Dobias
b6b5afd885 [FEATURE] Ability to cancel rendering of rasters + WMS/WCS support
The improvement allows immediate cancellation of raster rendering
in progress. Until now, even when map rendering got cancelled
(e.g. by zooming of panning canvas), the GUI got blocked while waiting
for raster layers to finish their rendering (only vector layers have
had support for cancellation). This should allow for much smoother
user experience while browsing maps including rasters.

The cancellation is supported currently by WMS/WMTS and WCS providers.
GDAL provider may also get support thanks to improvements in GDAL 2.

Funded by Land Information New Zealand.
2016-07-24 23:16:33 +02:00
Nyall Dawson
1a2231f10c Rename QGis class to Qgis, for capitalisation consistency 2016-07-21 22:01:38 +10:00
Nyall Dawson
4cfacf14e3 Make API more consistent
- rename methods with XML to Xml, CRS to Crs, WMS to Wms, ID to Id
- rename methods with SRS to Crs
- rename methods with abbreviations like "dest" to "destination"
- rename methods with abbreviations like "src" to "source"
2016-07-21 08:40:50 +10:00
Sandro Mani
2738c5097e Add provider for ArcGIS Map and Feature REST services 2016-06-02 13:36:08 +02:00
Nyall Dawson
b2cc3099ac Make raster classes debug output less noisy 2016-01-13 19:10:39 +11:00
Nyall Dawson
03ec7ed3ec More clang warning fixes 2016-01-06 16:03:32 +11:00
Nyall Dawson
ec35dbee92 Fix some warnings when building with clang and -Weverything 2015-12-20 21:43:51 +11:00