diff --git a/src/providers/wcs/qgswcscapabilities.cpp b/src/providers/wcs/qgswcscapabilities.cpp index 8d4d272572a..8b5c7b57e44 100644 --- a/src/providers/wcs/qgswcscapabilities.cpp +++ b/src/providers/wcs/qgswcscapabilities.cpp @@ -794,7 +794,24 @@ bool QgsWcsCapabilities::parseDescribeCoverageDom10( QByteArray const &xml, QgsW QDomElement supportedCRSsElement = firstChild( coverageOfferingElement, QStringLiteral( "supportedCRSs" ) ); // requestResponseCRSs and requestCRSs + responseCRSs are alternatives - coverage->supportedCrs = domElementsTexts( coverageOfferingElement, QStringLiteral( "supportedCRSs.requestResponseCRSs" ) ); + // we try to parse one or the other + QStringList crsList; + crsList = domElementsTexts( coverageOfferingElement, QStringLiteral( "supportedCRSs.requestResponseCRSs" ) ); + if ( crsList.isEmpty() ) + { + crsList = domElementsTexts( coverageOfferingElement, QStringLiteral( "supportedCRSs.requestCRSs" ) ); + crsList << domElementsTexts( coverageOfferingElement, QStringLiteral( "supportedCRSs.responseCRSs" ) ); + } + + // exclude invalid CRSs from the lists + for ( const QString &crsid : qgis::as_const( crsList ) ) + { + if ( QgsCoordinateReferenceSystem::fromOgcWmsCrs( crsid ).isValid() ) + { + coverage->supportedCrs << crsid; + } + } + // TODO: requestCRSs, responseCRSs - must be then implemented also in provider //QgsDebugMsg( "supportedCrs = " + coverage->supportedCrs.join( "," ) ); @@ -817,7 +834,11 @@ bool QgsWcsCapabilities::parseDescribeCoverageDom10( QByteArray const &xml, QgsW // If supportedCRSs.nativeCRSs is not defined we try to get it from RectifiedGrid if ( coverage->nativeCrs.isEmpty() ) { - coverage->nativeCrs = gridElement.attribute( QStringLiteral( "srsName" ) ); + QString crs = gridElement.attribute( QStringLiteral( "srsName" ) ); + if ( QgsCoordinateReferenceSystem::fromOgcWmsCrs( crs ).isValid() ) + { + coverage->nativeCrs = crs; + } } if ( !gridElement.isNull() ) diff --git a/src/providers/wcs/qgswcssourceselect.cpp b/src/providers/wcs/qgswcssourceselect.cpp index 254bd5db24d..5e50ad93b76 100644 --- a/src/providers/wcs/qgswcssourceselect.cpp +++ b/src/providers/wcs/qgswcssourceselect.cpp @@ -226,7 +226,6 @@ QStringList QgsWCSSourceSelect::selectedLayersFormats() QStringList QgsWCSSourceSelect::selectedLayersCrses() { - QString identifier = selectedIdentifier(); if ( identifier.isEmpty() ) { return QStringList(); }