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 );
98 const QDomText lowerPosText = doc.createTextNode(
103 lowerPosElem.appendChild( lowerPosText );
104 lonLatElem.appendChild( lowerPosElem );
105 QDomElement upperPosElem = doc.createElement( u
"gml:pos"_s );
106 const QDomText upperPosText = doc.createTextNode(
111 upperPosElem.appendChild( upperPosText );
112 lonLatElem.appendChild( upperPosElem );
113 layerElem.appendChild( lonLatElem );
121 QDomElement domainSetElem = doc.createElement( u
"domainSet"_s );
122 layerElem.appendChild( domainSetElem );
124 QDomElement spatialDomainElem = doc.createElement( u
"spatialDomain"_s );
125 domainSetElem.appendChild( spatialDomainElem );
135 QDomElement envelopeElem = doc.createElement( u
"gml:Envelope"_s );
136 envelopeElem.setAttribute( u
"srsName"_s, layerCrs.
authid() );
137 QDomElement lowerCornerElem = doc.createElement( u
"gml:pos"_s );
138 const QDomText lowerCornerText = doc.createTextNode(
143 lowerCornerElem.appendChild( lowerCornerText );
144 envelopeElem.appendChild( lowerCornerElem );
145 QDomElement upperCornerElem = doc.createElement( u
"gml:pos"_s );
146 const QDomText upperCornerText = doc.createTextNode(
151 upperCornerElem.appendChild( upperCornerText );
152 envelopeElem.appendChild( upperCornerElem );
153 spatialDomainElem.appendChild( envelopeElem );
155 QDomElement rectGridElem = doc.createElement( u
"gml:RectifiedGrid"_s );
156 rectGridElem.setAttribute( u
"dimension"_s, 2 );
157 QDomElement limitsElem = doc.createElement( u
"gml:limits"_s );
158 rectGridElem.appendChild( limitsElem );
159 QDomElement gridEnvElem = doc.createElement( u
"gml:GridEnvelope"_s );
160 limitsElem.appendChild( gridEnvElem );
161 QDomElement lowElem = doc.createElement( u
"gml:low"_s );
162 const QDomText lowText = doc.createTextNode( u
"0 0"_s );
163 lowElem.appendChild( lowText );
164 gridEnvElem.appendChild( lowElem );
165 QDomElement highElem = doc.createElement( u
"gml:high"_s );
166 const QDomText highText = doc.createTextNode( QString::number( layer->
width() ) +
" " + QString::number( layer->
height() ) );
167 highElem.appendChild( highText );
168 gridEnvElem.appendChild( highElem );
169 spatialDomainElem.appendChild( rectGridElem );
171 QDomElement xAxisElem = doc.createElement( u
"gml:axisName"_s );
172 const QDomText xAxisText = doc.createTextNode( u
"x"_s );
173 xAxisElem.appendChild( xAxisText );
174 rectGridElem.appendChild( xAxisElem );
176 QDomElement yAxisElem = doc.createElement( u
"gml:axisName"_s );
177 const QDomText yAxisText = doc.createTextNode( u
"y"_s );
178 yAxisElem.appendChild( yAxisText );
179 rectGridElem.appendChild( yAxisElem );
181 QDomElement originElem = doc.createElement( u
"gml:origin"_s );
182 QDomElement originPosElem = doc.createElement( u
"gml:pos"_s );
183 originElem.appendChild( originPosElem );
184 const QDomText originPosText = doc.createTextNode(
189 originPosElem.appendChild( originPosText );
190 rectGridElem.appendChild( originElem );
192 QDomElement xOffsetElem = doc.createElement( u
"gml:offsetVector"_s );
193 const QDomText xOffsetText = doc.createTextNode( QString::number( layer->
rasterUnitsPerPixelX() ) +
" 0" );
194 xOffsetElem.appendChild( xOffsetText );
195 rectGridElem.appendChild( xOffsetElem );
197 QDomElement yOffsetElem = doc.createElement( u
"gml:offsetVector"_s );
198 const QDomText yOffsetText = doc.createTextNode(
"0 " + QString::number( layer->
rasterUnitsPerPixelY() ) );
199 yOffsetElem.appendChild( yOffsetText );
200 rectGridElem.appendChild( yOffsetElem );
203 QDomElement rangeSetElem = doc.createElement( u
"rangeSet"_s );
204 layerElem.appendChild( rangeSetElem );
213 QDomElement RangeSetElem = doc.createElement( u
"RangeSet"_s );
214 rangeSetElem.appendChild( RangeSetElem );
216 QDomElement rsNameElem = doc.createElement( u
"name"_s );
217 const QDomText rsNameText = doc.createTextNode( u
"Bands"_s );
218 rsNameElem.appendChild( rsNameText );
219 RangeSetElem.appendChild( rsNameElem );
221 QDomElement rsLabelElem = doc.createElement( u
"label"_s );
222 const QDomText rsLabelText = doc.createTextNode( u
"Bands"_s );
223 rsLabelElem.appendChild( rsLabelText );
224 RangeSetElem.appendChild( rsLabelElem );
226 QDomElement axisDescElem = doc.createElement( u
"axisDescription"_s );
227 RangeSetElem.appendChild( axisDescElem );
229 QDomElement AxisDescElem = doc.createElement( u
"AxisDescription"_s );
230 axisDescElem.appendChild( AxisDescElem );
232 QDomElement adNameElem = doc.createElement( u
"name"_s );
233 const QDomText adNameText = doc.createTextNode( u
"bands"_s );
234 adNameElem.appendChild( adNameText );
235 AxisDescElem.appendChild( adNameElem );
237 QDomElement adLabelElem = doc.createElement( u
"label"_s );
238 const QDomText adLablelText = doc.createTextNode( u
"bands"_s );
239 adLabelElem.appendChild( adLablelText );
240 AxisDescElem.appendChild( adLabelElem );
242 QDomElement adValuesElem = doc.createElement( u
"values"_s );
243 for (
int idx = 0; idx < layer->
bandCount(); ++idx )
245 QDomElement adValueElem = doc.createElement( u
"singleValue"_s );
246 const QDomText adValueText = doc.createTextNode( QString::number( idx + 1 ) );
247 adValueElem.appendChild( adValueText );
248 adValuesElem.appendChild( adValueElem );
250 AxisDescElem.appendChild( adValuesElem );
254 QDomElement sCRSElem = doc.createElement( u
"supportedCRSs"_s );
255 QDomElement rCRSElem = doc.createElement( u
"requestResponseCRSs"_s );
256 const QDomText rCRSText = doc.createTextNode( layerCrs.
authid() );
257 rCRSElem.appendChild( rCRSText );
258 sCRSElem.appendChild( rCRSElem );
259 QDomElement nCRSElem = doc.createElement( u
"nativeCRSs"_s );
260 const QDomText nCRSText = doc.createTextNode( layerCrs.
authid() );
261 nCRSElem.appendChild( nCRSText );
262 sCRSElem.appendChild( nCRSElem );
263 layerElem.appendChild( sCRSElem );
267 QDomElement sFormatsElem = doc.createElement( u
"supportedFormats"_s );
268 sFormatsElem.setAttribute( u
"nativeFormat"_s, u
"raw binary"_s );
269 QDomElement formatsElem = doc.createElement( u
"formats"_s );
270 const QDomText formatsText = doc.createTextNode( u
"GeoTIFF"_s );
271 formatsElem.appendChild( formatsText );
272 sFormatsElem.appendChild( formatsElem );
273 layerElem.appendChild( sFormatsElem );