26#include <QNetworkAccessManager>
27#include <QNetworkReply>
34class OGRSpatialReference;
35class OGRCoordinateTransformation;
113 [[nodiscard]] QUrl
serviceUrl()
const {
return m_serviceUrl; }
114 [[nodiscard]] QString
wcsVersion()
const {
return m_version; }
119 {
return m_serviceUrl.toString(); }
138 [[nodiscard]] QString
outputCrs()
const {
return m_outputCrs; }
144 [[nodiscard]] QString
rangeSubset()
const {
return m_rangeSubset; }
156 const QSize &viewportSize,
159 void render(QPainter *painter,
161 const QSize &imageSize,
190 void onCapabilitiesReply(QNetworkReply *reply);
191 void onGetCoverageReply(QNetworkReply *reply,
194 const QString &requestCrs,
195 const QString &usedVersion,
200 [[nodiscard]] QUrl buildGetCoverageUrl(
const MapExtent &requestExtent,
201 const QString &requestCrs,
203 const QString &versionOverride = {})
const;
204 void requestCoverage(
const MapExtent &trackingExtent,
206 const QString &requestCrs,
208 void invalidateCache();
213 const QString &version)
const;
214 QString negotiateNextVersion(
const QString &failedVersion)
const;
215 QString nextGetCoverageVersion(
const QString &failedVersion)
const;
218 QImage decodeGdalImage(
const QByteArray &data)
const;
226 QString m_version = QStringLiteral(
"2.0.1");
228 bool m_capsReady =
false;
230 QString m_coverageId;
232 QString m_outputFormat = QStringLiteral(
"image/tiff");
233 QString m_rangeSubset;
234 QString m_interpolation = QStringLiteral(
"nearest");
236 QNetworkAccessManager *m_nam =
nullptr;
237 QNetworkReply *m_pendingReply =
nullptr;
242 QString m_getCoverageVersion;
245 QImage m_cachedImage;
248 int m_cacheWidth = 0;
249 int m_cacheHeight = 0;
253 int m_requestedWidth = 0;
254 int m_requestedHeight = 0;
260 OGRSpatialReference *m_wgs84 =
nullptr;
261 OGRCoordinateTransformation *m_canvasToReq =
nullptr;
262 OGRCoordinateTransformation *m_reqToCanvas =
nullptr;
263 mutable QMutex m_transformMutex;
Shared visual-adjustment parameters for raster basemaps.
An axis-aligned bounding box in the coordinate space of a given CRS.
Definition mapextent.h:26
Abstract base class for all layers displayed in the MapCanvas.
Definition openswmmvislayer.h:116
SpatialReferenceSystem * srs() const
Returns the spatial reference system for this layer, or nullptr if the layer has no known CRS.
Definition openswmmvislayer.cpp:201
MapExtent extent() const
Returns the layer extent in the layer's own CRS.
Definition openswmmvislayer.cpp:252
Top-level project container managing sessions, the SWMM model layer, and persistence paths for one SW...
Definition openswmmvisworkspace.h:42
Definition graphicsitems.h:300
Represents a coordinate reference system backed by a GDAL OGRSpatialReference.
Definition spatialreferencesystem.h:28
Renders a selected coverage from an OGC Web Coverage Service as a raster basemap layer.
Definition wcslayer.h:103
bool capabilitiesReady() const
Definition wcslayer.h:116
~WCSLayer() override
Definition wcslayer.cpp:51
QString outputCrs() const
Definition wcslayer.h:138
void setInterpolation(const QString &interp)
Definition wcslayer.cpp:117
void basemapRenderParamsChanged()
void setBasemapRenderParams(const OpenSWMM::Render::BasemapRenderParams &p)
Definition wcslayer.cpp:1154
QString interpolation() const
Definition wcslayer.h:147
void fetchCapabilities()
Asynchronously fetches GetCapabilities; emits capabilitiesFetched() or capabilitiesError() when done.
Definition wcslayer.cpp:135
QString rangeSubset() const
Definition wcslayer.h:144
QString sourceDescription() const override
Human-readable source of this layer: a file path, a service URL, or a description for in-memory / der...
Definition wcslayer.h:118
void depopulateScene(QGraphicsScene *scene) override
Removes all QGraphicsItems belonging to this layer from the scene.
Definition wcslayer.cpp:1167
QUrl serviceUrl() const
Definition wcslayer.h:113
void fetchCache(const MapExtent &extent, const QSize &viewportSize, const SpatialReferenceSystem *srs) override
Triggers any asynchronous (or synchronous) tile/data fetch needed to populate this layer's internal c...
Definition wcslayer.cpp:421
void setOutputCrs(const QString &crs)
Definition wcslayer.cpp:98
void setOutputFormat(const QString &fmt)
Definition wcslayer.cpp:105
void setServiceInfo(const WCSServiceInfo &info)
Injects already-fetched service info (from the dialog) so the layer can render immediately without a ...
Definition wcslayer.cpp:70
QString activeCoverageId() const
Definition wcslayer.h:135
QString outputFormat() const
Definition wcslayer.h:141
void capabilitiesError(const QString &errorMessage)
WCSServiceInfo serviceInfo() const
Definition wcslayer.h:115
bool isRasterLayer() const override
Returns true for layers that render into a raster buffer (WMS, WMTS, GISRaster) rather than populatin...
Definition wcslayer.h:152
void render(QPainter *painter, const MapExtent &extent, const QSize &imageSize, const SpatialReferenceSystem *srs) override
Renders this layer's content directly into painter.
Definition wcslayer.cpp:1081
void refreshScene(QGraphicsScene *scene, const MapExtent &canvasExtent, const SpatialReferenceSystem *canvasSRS) override
Smart scene refresh — updates existing items instead of destroying and recreating.
Definition wcslayer.cpp:1176
void onCanvasCRSChanged(const SpatialReferenceSystem *newCanvasSRS) override
Called when the user changes the canvas CRS so layers can pre-compute any CRS-dependent transform cac...
Definition wcslayer.cpp:1190
void setRangeSubset(const QString &subset)
Definition wcslayer.cpp:111
void setActiveCoverageId(const QString &id)
Definition wcslayer.cpp:78
void populateScene(QGraphicsScene *, const MapExtent &, const SpatialReferenceSystem *) override
Creates / updates QGraphicsItems representing this layer in the scene.
Definition wcslayer.h:164
bool isBasemapLayer() const override
Returns true for world-spanning basemap layers (XYZ tile providers, WMS/WMTS services covering the wh...
Definition wcslayer.h:153
const OpenSWMM::Render::BasemapRenderParams & basemapRenderParams() const
Definition wcslayer.h:186
QString wcsVersion() const
Definition wcslayer.h:114
void capabilitiesFetched(const WCSServiceInfo &info)
QGraphicsScene * scene
Definition inletdrawingview.cpp:78
ArrowPlacement p
Definition linesymbollayer.cpp:27
int h
Definition mesh2dresultsexport.cpp:387
int w
Definition mesh2dresultsexport.cpp:387
Abstract base class for all map layers displayed in the MapCanvas.
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Brightness / contrast / saturation / resampling for a basemap.
Definition basemaprenderparams.h:32
Metadata for one coverage returned by GetCapabilities / DescribeCoverage.
Definition wcslayer.h:56
MapExtent wgs84BoundingBox
Definition wcslayer.h:60
QString title
Definition wcslayer.h:58
QString identifier
Definition wcslayer.h:57
QStringList supportedFormats
Definition wcslayer.h:62
QList< WCSFieldInfo > fields
Definition wcslayer.h:63
QStringList interpolations
Definition wcslayer.h:64
QString abstractText
Definition wcslayer.h:59
QStringList supportedCrs
Definition wcslayer.h:61
One field (band / variable) advertised by a WCS DescribeCoverage response.
Definition wcslayer.h:46
QString description
Definition wcslayer.h:48
QString identifier
Definition wcslayer.h:47
Top-level metadata returned by a WCS GetCapabilities request.
Definition wcslayer.h:72
QString title
Definition wcslayer.h:73
QString abstractText
Definition wcslayer.h:74
QString version
Definition wcslayer.h:75
QList< WCSCoverageInfo > coverages
Definition wcslayer.h:76