42 QDomElement layerElem;
44 layerElem = doc.createElement( u
"CoverageOfferingBrief"_s );
46 layerElem = doc.createElement( u
"CoverageOffering"_s );
49 QDomElement nameElem = doc.createElement( u
"name"_s );
50 QString name = layer->
name();
53 name = name.replace(
' ',
'_' );
54 const QDomText nameText = doc.createTextNode( name );
55 nameElem.appendChild( nameText );
56 layerElem.appendChild( nameElem );
59 QDomElement labelElem = doc.createElement( u
"label"_s );
61 if ( title.isEmpty() )
63 title = layer->
name();
65 const QDomText labelText = doc.createTextNode( title );
66 labelElem.appendChild( labelText );
67 layerElem.appendChild( labelElem );
71 if ( !abstract.isEmpty() )
73 QDomElement descriptionElem = doc.createElement( u
"description"_s );
74 const QDomText descriptionText = doc.createTextNode( abstract );
75 descriptionElem.appendChild( descriptionText );
76 layerElem.appendChild( descriptionElem );
82 const int wgs84precision = 6;
92 QgsDebugError( u
"Transform error caught: %1. Using original layer extent."_s.arg( e.
what() ) );
95 QDomElement lonLatElem = doc.createElement( u
"lonLatEnvelope"_s );
96 lonLatElem.setAttribute( u
"srsName"_s, u
"urn:ogc:def:crs:OGC:1.3:CRS84"_s );
97 QDomElement lowerPosElem = doc.createElement( u
"gml:pos"_s );
99 lowerPosElem.appendChild( lowerPosText );
100 lonLatElem.appendChild( lowerPosElem );
101 QDomElement upperPosElem = doc.createElement( u
"gml:pos"_s );
103 upperPosElem.appendChild( upperPosText );
104 lonLatElem.appendChild( upperPosElem );
105 layerElem.appendChild( lonLatElem );
113 QDomElement domainSetElem = doc.createElement( u
"domainSet"_s );
114 layerElem.appendChild( domainSetElem );
116 QDomElement spatialDomainElem = doc.createElement( u
"spatialDomain"_s );
117 domainSetElem.appendChild( spatialDomainElem );
127 QDomElement envelopeElem = doc.createElement( u
"gml:Envelope"_s );
128 envelopeElem.setAttribute( u
"srsName"_s, layerCrs.
authid() );
129 QDomElement lowerCornerElem = doc.createElement( u
"gml:pos"_s );
131 lowerCornerElem.appendChild( lowerCornerText );
132 envelopeElem.appendChild( lowerCornerElem );
133 QDomElement upperCornerElem = doc.createElement( u
"gml:pos"_s );
135 upperCornerElem.appendChild( upperCornerText );
136 envelopeElem.appendChild( upperCornerElem );
137 spatialDomainElem.appendChild( envelopeElem );
139 QDomElement rectGridElem = doc.createElement( u
"gml:RectifiedGrid"_s );
140 rectGridElem.setAttribute( u
"dimension"_s, 2 );
141 QDomElement limitsElem = doc.createElement( u
"gml:limits"_s );
142 rectGridElem.appendChild( limitsElem );
143 QDomElement gridEnvElem = doc.createElement( u
"gml:GridEnvelope"_s );
144 limitsElem.appendChild( gridEnvElem );
145 QDomElement lowElem = doc.createElement( u
"gml:low"_s );
146 const QDomText lowText = doc.createTextNode( u
"0 0"_s );
147 lowElem.appendChild( lowText );
148 gridEnvElem.appendChild( lowElem );
149 QDomElement highElem = doc.createElement( u
"gml:high"_s );
150 const QDomText highText = doc.createTextNode( QString::number( layer->
width() ) +
" " + QString::number( layer->
height() ) );
151 highElem.appendChild( highText );
152 gridEnvElem.appendChild( highElem );
153 spatialDomainElem.appendChild( rectGridElem );
155 QDomElement xAxisElem = doc.createElement( u
"gml:axisName"_s );
156 const QDomText xAxisText = doc.createTextNode( u
"x"_s );
157 xAxisElem.appendChild( xAxisText );
158 rectGridElem.appendChild( xAxisElem );
160 QDomElement yAxisElem = doc.createElement( u
"gml:axisName"_s );
161 const QDomText yAxisText = doc.createTextNode( u
"y"_s );
162 yAxisElem.appendChild( yAxisText );
163 rectGridElem.appendChild( yAxisElem );
165 QDomElement originElem = doc.createElement( u
"gml:origin"_s );
166 QDomElement originPosElem = doc.createElement( u
"gml:pos"_s );
167 originElem.appendChild( originPosElem );
169 originPosElem.appendChild( originPosText );
170 rectGridElem.appendChild( originElem );
172 QDomElement xOffsetElem = doc.createElement( u
"gml:offsetVector"_s );
173 const QDomText xOffsetText = doc.createTextNode( QString::number( layer->
rasterUnitsPerPixelX() ) +
" 0" );
174 xOffsetElem.appendChild( xOffsetText );
175 rectGridElem.appendChild( xOffsetElem );
177 QDomElement yOffsetElem = doc.createElement( u
"gml:offsetVector"_s );
178 const QDomText yOffsetText = doc.createTextNode(
"0 " + QString::number( layer->
rasterUnitsPerPixelY() ) );
179 yOffsetElem.appendChild( yOffsetText );
180 rectGridElem.appendChild( yOffsetElem );
183 QDomElement rangeSetElem = doc.createElement( u
"rangeSet"_s );
184 layerElem.appendChild( rangeSetElem );
193 QDomElement RangeSetElem = doc.createElement( u
"RangeSet"_s );
194 rangeSetElem.appendChild( RangeSetElem );
196 QDomElement rsNameElem = doc.createElement( u
"name"_s );
197 const QDomText rsNameText = doc.createTextNode( u
"Bands"_s );
198 rsNameElem.appendChild( rsNameText );
199 RangeSetElem.appendChild( rsNameElem );
201 QDomElement rsLabelElem = doc.createElement( u
"label"_s );
202 const QDomText rsLabelText = doc.createTextNode( u
"Bands"_s );
203 rsLabelElem.appendChild( rsLabelText );
204 RangeSetElem.appendChild( rsLabelElem );
206 QDomElement axisDescElem = doc.createElement( u
"axisDescription"_s );
207 RangeSetElem.appendChild( axisDescElem );
209 QDomElement AxisDescElem = doc.createElement( u
"AxisDescription"_s );
210 axisDescElem.appendChild( AxisDescElem );
212 QDomElement adNameElem = doc.createElement( u
"name"_s );
213 const QDomText adNameText = doc.createTextNode( u
"bands"_s );
214 adNameElem.appendChild( adNameText );
215 AxisDescElem.appendChild( adNameElem );
217 QDomElement adLabelElem = doc.createElement( u
"label"_s );
218 const QDomText adLablelText = doc.createTextNode( u
"bands"_s );
219 adLabelElem.appendChild( adLablelText );
220 AxisDescElem.appendChild( adLabelElem );
222 QDomElement adValuesElem = doc.createElement( u
"values"_s );
223 for (
int idx = 0; idx < layer->
bandCount(); ++idx )
225 QDomElement adValueElem = doc.createElement( u
"singleValue"_s );
226 const QDomText adValueText = doc.createTextNode( QString::number( idx + 1 ) );
227 adValueElem.appendChild( adValueText );
228 adValuesElem.appendChild( adValueElem );
230 AxisDescElem.appendChild( adValuesElem );
234 QDomElement sCRSElem = doc.createElement( u
"supportedCRSs"_s );
235 QDomElement rCRSElem = doc.createElement( u
"requestResponseCRSs"_s );
236 const QDomText rCRSText = doc.createTextNode( layerCrs.
authid() );
237 rCRSElem.appendChild( rCRSText );
238 sCRSElem.appendChild( rCRSElem );
239 QDomElement nCRSElem = doc.createElement( u
"nativeCRSs"_s );
240 const QDomText nCRSText = doc.createTextNode( layerCrs.
authid() );
241 nCRSElem.appendChild( nCRSText );
242 sCRSElem.appendChild( nCRSElem );
243 layerElem.appendChild( sCRSElem );
247 QDomElement sFormatsElem = doc.createElement( u
"supportedFormats"_s );
248 sFormatsElem.setAttribute( u
"nativeFormat"_s, u
"raw binary"_s );
249 QDomElement formatsElem = doc.createElement( u
"formats"_s );
250 const QDomText formatsText = doc.createTextNode( u
"GeoTIFF"_s );
251 formatsElem.appendChild( formatsText );
252 sFormatsElem.appendChild( formatsElem );
253 layerElem.appendChild( sFormatsElem );