Skip to content

Commit d1e7242

Browse files
committedJul 18, 2012
wcs test unit data
1 parent 5d84b26 commit d1e7242

19 files changed

+433
-28
lines changed
 

‎src/core/qgsrasterdataprovider.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ QgsRasterBandStats QgsRasterDataProvider::bandStatistics( int theBandNo )
279279

280280
int myBandXSize = xSize();
281281
int myBandYSize = ySize();
282+
int maxCount = xSize() * ySize();
282283
for ( int iYBlock = 0; iYBlock < myNYBlocks; iYBlock++ )
283284
{
284285
for ( int iXBlock = 0; iXBlock < myNXBlocks; iXBlock++ )
@@ -306,12 +307,15 @@ QgsRasterBandStats QgsRasterDataProvider::bandStatistics( int theBandNo )
306307
double myValue = readValue( myData, myDataType, iX + ( iY * myXBlockSize ) );
307308
QgsDebugMsgLevel( QString( "%1 %2 value %3" ).arg( iX ).arg( iY ).arg( myValue ), 10 );
308309

309-
if ( mValidNoDataValue && ( qAbs( myValue - myNoDataValue ) <= TINY_VALUE ) )
310+
if ( mValidNoDataValue &&
311+
( ( std::isnan( myNoDataValue ) && std::isnan( myValue ) ) || qAbs( myValue - myNoDataValue ) <= TINY_VALUE ) )
310312
{
311313
continue; // NULL
312314
}
313315

314316
myRasterBandStats.sum += myValue;
317+
// sum can easily run out of limits
318+
myRasterBandStats.mean += myValue / maxCount;
315319
++myRasterBandStats.elementCount;
316320
//only use this element if we have a non null element
317321
if ( myFirstIterationFlag )
@@ -342,7 +346,8 @@ QgsRasterBandStats QgsRasterDataProvider::bandStatistics( int theBandNo )
342346
//end of first pass through data now calculate the range
343347
myRasterBandStats.range = myRasterBandStats.maximumValue - myRasterBandStats.minimumValue;
344348
//calculate the mean
345-
myRasterBandStats.mean = myRasterBandStats.sum / myRasterBandStats.elementCount;
349+
//myRasterBandStats.mean = myRasterBandStats.sum / myRasterBandStats.elementCount;
350+
myRasterBandStats.mean = maxCount * ( myRasterBandStats.mean / myRasterBandStats.elementCount );
346351

347352
//for the second pass we will get the sum of the squares / mean
348353
for ( int iYBlock = 0; iYBlock < myNYBlocks; iYBlock++ )
@@ -373,21 +378,20 @@ QgsRasterBandStats QgsRasterDataProvider::bandStatistics( int theBandNo )
373378
double myValue = readValue( myData, myDataType, iX + ( iY * myXBlockSize ) );
374379
//QgsDebugMsg ( "myValue = " + QString::number(myValue) );
375380

376-
if ( mValidNoDataValue && ( qAbs( myValue - myNoDataValue ) <= TINY_VALUE ) )
381+
if ( mValidNoDataValue &&
382+
( ( std::isnan( myNoDataValue ) && std::isnan( myValue ) ) || qAbs( myValue - myNoDataValue ) <= TINY_VALUE ) )
377383
{
378384
continue; // NULL
379385
}
380386

381-
myRasterBandStats.sumOfSquares += static_cast < double >
382-
( pow( myValue - myRasterBandStats.mean, 2 ) );
387+
myRasterBandStats.sumOfSquares += static_cast < double >( pow( myValue - myRasterBandStats.mean, 2 ) );
383388
}
384389
}
385390
} //end of column wise loop
386391
} //end of row wise loop
387392

388393
//divide result by sample size - 1 and get square root to get stdev
389-
myRasterBandStats.stdDev = static_cast < double >( sqrt( myRasterBandStats.sumOfSquares /
390-
( myRasterBandStats.elementCount - 1 ) ) );
394+
myRasterBandStats.stdDev = static_cast < double >( sqrt( myRasterBandStats.sumOfSquares / ( myRasterBandStats.elementCount - 1 ) ) );
391395

392396
#ifdef QGISDEBUG
393397
QgsDebugMsg( "************ STATS **************" );

‎src/providers/wcs/qgswcscapabilities.cpp

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,27 @@ bool QgsWcsCapabilities::retrieveServerCapabilities( )
192192
clear();
193193
QStringList versions;
194194

195-
// 1.0.0 - VERSION
196-
// 1.1.0 - AcceptedVersions (not supported by UMN Mapserver 6.0.3 - defaults to 1.1.1
197-
versions << "AcceptVersions=1.1.0,1.0.0" << "VERSION=1.0.0";
195+
QString preferredVersion = mUri.param( "version" );
196+
197+
if ( !preferredVersion.isEmpty() )
198+
{
199+
// This is not
200+
if ( preferredVersion.startsWith ( "1.0" ) )
201+
{
202+
versions << "VERSION=" + preferredVersion;
203+
}
204+
else if ( preferredVersion.startsWith ( "1.1" ) )
205+
{
206+
// Ignored by UMN Mapserver 6.0.3, see below
207+
versions << "AcceptVersions=" + preferredVersion;
208+
}
209+
}
210+
else
211+
{
212+
// 1.0.0 - VERSION
213+
// 1.1.0 - AcceptVersions (not supported by UMN Mapserver 6.0.3 - defaults to latest 1.1
214+
versions << "AcceptVersions=1.1,1.0" << "VERSION=1.0";
215+
}
198216

199217
foreach( QString v, versions )
200218
{

‎tests/src/providers/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}
2222
ADD_DEFINITIONS(-DTEST_DATA_DIR="\\"${TEST_DATA_DIR}\\"")
2323

2424
ADD_DEFINITIONS(-DINSTALL_PREFIX="\\"${CMAKE_INSTALL_PREFIX}\\"")
25+
26+
SET(TEST_SERVER_URL "http://127.0.0.1/test/${COMPLETE_VERSION}")
27+
ADD_DEFINITIONS(-DTEST_SERVER_URL="\\"${TEST_SERVER_URL}\\"")
28+
2529
#############################################################
2630
# libraries
2731

‎tests/src/providers/testqgswcsprovider.cpp

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ class TestQgsWcsProvider: public QObject
4343

4444
void read();
4545
private:
46-
bool read( QString identifier, QString theFilePath, QString & theReport );
46+
bool read( QString theIdentifier, QString theWcsUri, QString theFilePath, QString & theReport );
4747
// Log error in html
4848
void error( QString theMessage, QString &theReport );
4949
// compare values and add table row in html report, set ok to false if not equal
5050
QString compareHead();
51+
bool compare ( double wcsVal, double gdalVal, double theTolerance );
5152
void compare( QString theParamName, int wcsVal, int gdalVal, QString &theReport, bool &theOk );
5253
void compare( QString theParamName, double wcsVal, double gdalVal, QString &theReport, bool &theOk, double theTolerance = 0 );
5354
void compareRow( QString theParamName, QString wcsVal, QString gdalVal, QString &theReport, bool theOk, QString theDifference = "", QString theTolerance = "" );
@@ -82,7 +83,7 @@ void TestQgsWcsProvider::initTestCase()
8283
mTestDataDir = QString( TEST_DATA_DIR ) + QDir::separator() + "raster";
8384
qDebug() << "mTestDataDir = " << mTestDataDir;
8485

85-
mUrl = "http://127.0.0.1//cgi-bin/wcstest";
86+
mUrl = QString( TEST_SERVER_URL ) + QDir::separator() + "wcs";
8687
}
8788

8889
//runs after all tests
@@ -102,39 +103,52 @@ void TestQgsWcsProvider::cleanupTestCase()
102103
void TestQgsWcsProvider::read( )
103104
{
104105
bool ok = true;
106+
QStringList versions;
107+
108+
versions << "1.0" << "1.1";
109+
105110
QStringList identifiers;
106111

107112
// identifiers in mapfile have the same name as files without .tif extension
108113
identifiers << "band1_byte_noct_epsg4326";
109114
identifiers << "band1_int16_noct_epsg4326";
110115
identifiers << "band1_float32_noct_epsg4326";
116+
identifiers << "band3_byte_noct_epsg4326";
117+
identifiers << "band3_int16_noct_epsg4326";
118+
identifiers << "band3_float32_noct_epsg4326";
111119

112120
// How to reasonably log multiple fails within this loop?
113-
foreach( QString identifier, identifiers )
121+
foreach( QString version, versions )
114122
{
115-
QString filePath = mTestDataDir + QDir::separator() + identifier + ".tif";
116-
if ( !read( identifier, filePath, mReport ) )
123+
foreach( QString identifier, identifiers )
117124
{
118-
ok = false;
125+
QString filePath = mTestDataDir + QDir::separator() + identifier + ".tif";
126+
127+
QgsDataSourceURI uri;
128+
uri.setParam( "url", mUrl );
129+
uri.setParam( "identifier", identifier );
130+
uri.setParam( "crs", "epsg:4326" );
131+
uri.setParam( "version", version );
132+
133+
if ( !read( identifier, uri.encodedUri(), filePath, mReport ) )
134+
{
135+
ok = false;
136+
}
119137
}
120138
}
121139
QVERIFY2( ok, "Reading data failed. See report for details." );
122140
}
123141

124-
bool TestQgsWcsProvider::read( QString theIdentifier, QString theFilePath, QString & theReport )
142+
bool TestQgsWcsProvider::read( QString theIdentifier, QString theWcsUri, QString theFilePath, QString & theReport )
125143
{
126144
bool ok = true;
127-
QgsDataSourceURI uri;
128-
uri.setParam( "url", mUrl );
129-
uri.setParam( "identifier", theIdentifier );
130-
uri.setParam( "crs", "epsg:4326" );
131145

132146
theReport += QString( "<h2>Identifier (coverage): %1</h2>" ).arg( theIdentifier );
133147

134-
QgsRasterDataProvider* wcsProvider = QgsRasterLayer::loadProvider( "wcs", uri.encodedUri() );
148+
QgsRasterDataProvider* wcsProvider = QgsRasterLayer::loadProvider( "wcs", theWcsUri );
135149
if ( !wcsProvider || !wcsProvider->isValid() )
136150
{
137-
error( QString( "Cannot load WCS provider with URI: %1" ).arg( QString( uri.encodedUri() ) ), theReport );
151+
error( QString( "Cannot load WCS provider with URI: %1" ).arg( QString( theWcsUri ) ), theReport );
138152
ok = false;
139153
}
140154

@@ -147,7 +161,7 @@ bool TestQgsWcsProvider::read( QString theIdentifier, QString theFilePath, QStri
147161

148162
if ( !ok ) return false;
149163

150-
theReport += QString( "WCS URI: %1<br>" ).arg( QString( uri.encodedUri() ).replace( "&", "&amp;" ) );
164+
theReport += QString( "WCS URI: %1<br>" ).arg( theWcsUri.replace( "&", "&amp;" ) );
151165
theReport += QString( "GDAL URI: %1<br>" ).arg( theFilePath );
152166

153167
theReport += "<br>";
@@ -212,7 +226,7 @@ bool TestQgsWcsProvider::read( QString theIdentifier, QString theFilePath, QStri
212226
continue;
213227
}
214228

215-
if ( !statsOk || typesOk )
229+
if ( !statsOk || !typesOk )
216230
{
217231
allOk = false;
218232
// create values table anyway so that values are available
@@ -247,7 +261,7 @@ bool TestQgsWcsProvider::read( QString theIdentifier, QString theFilePath, QStri
247261
double gdalVal = gdalProvider->readValue( gdalData, gdalProvider->dataType( band ), row * width + col );
248262

249263
QString valStr;
250-
if ( wcsVal == gdalVal )
264+
if ( compare ( wcsVal, gdalVal, 0 ) )
251265
{
252266
valStr = QString( "%1" ).arg( wcsVal );
253267
}
@@ -299,10 +313,15 @@ void TestQgsWcsProvider::compare( QString theParamName, int wcsVal, int gdalVal,
299313
if ( !ok ) theOk = false;
300314
}
301315

302-
void TestQgsWcsProvider::compare( QString theParamName, double wcsVal, double gdalVal, QString &theReport, bool &theOk, double theTolerance )
316+
bool TestQgsWcsProvider::compare ( double wcsVal, double gdalVal, double theTolerance )
303317
{
304-
bool ok = ( qAbs( wcsVal - gdalVal ) <= theTolerance );
318+
// values may be nan
319+
return ( std::isnan( wcsVal ) && std::isnan( gdalVal ) ) || ( qAbs( wcsVal - gdalVal ) <= theTolerance );
320+
}
305321

322+
void TestQgsWcsProvider::compare( QString theParamName, double wcsVal, double gdalVal, QString &theReport, bool &theOk, double theTolerance )
323+
{
324+
bool ok = compare ( wcsVal, gdalVal, theTolerance );
306325
compareRow( theParamName, QString::number( wcsVal ), QString::number( gdalVal ), theReport, ok, QString::number( wcsVal - gdalVal ), QString::number( theTolerance ) );
307326
if ( !ok ) theOk = false;
308327
}
4.43 KB
Binary file not shown.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<PAMDataset>
2+
<PAMRasterBand band="1">
3+
<Metadata>
4+
<MDI key="COLOR_TABLE_RULE_RGB_0">2.000000e+00 1.280000e+02 0 255 0 255 255 0</MDI>
5+
<MDI key="COLOR_TABLE_RULE_RGB_1">1.280000e+02 2.540000e+02 255 255 0 255 0 0</MDI>
6+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
7+
<MDI key="STATISTICS_MAXIMUM">254</MDI>
8+
<MDI key="STATISTICS_MEAN">135.53086419753</MDI>
9+
<MDI key="STATISTICS_MINIMUM">2</MDI>
10+
<MDI key="STATISTICS_STDDEV">73.957459647589</MDI>
11+
</Metadata>
12+
</PAMRasterBand>
13+
</PAMDataset>
Binary file not shown.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<PAMDataset>
2+
<PAMRasterBand band="1">
3+
<Metadata>
4+
<MDI key="COLOR_TABLE_RULE_RGB_0">2.000000e+00 1.280000e+02 0 255 0 255 255 0</MDI>
5+
<MDI key="COLOR_TABLE_RULE_RGB_1">1.280000e+02 2.540000e+02 255 255 0 255 0 0</MDI>
6+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
7+
<MDI key="STATISTICS_MAXIMUM">254</MDI>
8+
<MDI key="STATISTICS_MEAN">135.53086419753</MDI>
9+
<MDI key="STATISTICS_MINIMUM">2</MDI>
10+
<MDI key="STATISTICS_STDDEV">73.957459647589</MDI>
11+
</Metadata>
12+
</PAMRasterBand>
13+
</PAMDataset>
Binary file not shown.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<PAMDataset>
2+
<PAMRasterBand band="1">
3+
<Metadata>
4+
<MDI key="COLOR_TABLE_RULE_RGB_0">0.000000e+00 0.000000e+00 255 127 0 255 127 0</MDI>
5+
<MDI key="COLOR_TABLE_RULES_COUNT">1</MDI>
6+
<MDI key="STATISTICS_MAXIMUM">3.3999999521444e+38</MDI>
7+
<MDI key="STATISTICS_MEAN">2.4177777984595e+37</MDI>
8+
<MDI key="STATISTICS_MINIMUM">-3.3319999287626e+38</MDI>
9+
<MDI key="STATISTICS_STDDEV">1.9800745699579e+38</MDI>
10+
</Metadata>
11+
</PAMRasterBand>
12+
</PAMDataset>
Binary file not shown.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<PAMDataset>
2+
<PAMRasterBand band="1">
3+
<Metadata>
4+
<MDI key="COLOR_TABLE_RULE_RGB_0">-3.211166e+04 3.276700e+02 0 255 0 255 255 0</MDI>
5+
<MDI key="COLOR_TABLE_RULE_RGB_1">3.276700e+02 3.276700e+04 255 255 0 255 0 0</MDI>
6+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
7+
<MDI key="STATISTICS_MAXIMUM">32767</MDI>
8+
<MDI key="STATISTICS_MEAN">2330.024691358</MDI>
9+
<MDI key="STATISTICS_MINIMUM">-32111</MDI>
10+
<MDI key="STATISTICS_STDDEV">19082.231766347</MDI>
11+
</Metadata>
12+
</PAMRasterBand>
13+
</PAMDataset>
Binary file not shown.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<PAMDataset>
2+
<PAMRasterBand band="1">
3+
<Metadata>
4+
<MDI key="COLOR_TABLE_RULE_RGB_0">2.000000e+00 1.280000e+02 0 255 0 255 255 0</MDI>
5+
<MDI key="COLOR_TABLE_RULE_RGB_1">1.280000e+02 2.540000e+02 255 255 0 255 0 0</MDI>
6+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
7+
<MDI key="STATISTICS_MAXIMUM">254</MDI>
8+
<MDI key="STATISTICS_MEAN">135.53086419753</MDI>
9+
<MDI key="STATISTICS_MINIMUM">2</MDI>
10+
<MDI key="STATISTICS_STDDEV">73.957459647589</MDI>
11+
</Metadata>
12+
</PAMRasterBand>
13+
<PAMRasterBand band="2">
14+
<Metadata>
15+
<MDI key="COLOR_TABLE_RULE_RGB_0">2.000000e+00 1.280000e+02 0 255 0 255 255 0</MDI>
16+
<MDI key="COLOR_TABLE_RULE_RGB_1">1.280000e+02 2.540000e+02 255 255 0 255 0 0</MDI>
17+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
18+
<MDI key="STATISTICS_MAXIMUM">254</MDI>
19+
<MDI key="STATISTICS_MEAN">135.53086419753</MDI>
20+
<MDI key="STATISTICS_MINIMUM">2</MDI>
21+
<MDI key="STATISTICS_STDDEV">73.957459647589</MDI>
22+
</Metadata>
23+
</PAMRasterBand>
24+
<PAMRasterBand band="3">
25+
<Metadata>
26+
<MDI key="COLOR_TABLE_RULE_RGB_0">2.000000e+00 1.280000e+02 0 255 0 255 255 0</MDI>
27+
<MDI key="COLOR_TABLE_RULE_RGB_1">1.280000e+02 2.540000e+02 255 255 0 255 0 0</MDI>
28+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
29+
<MDI key="STATISTICS_MAXIMUM">254</MDI>
30+
<MDI key="STATISTICS_MEAN">135.53086419753</MDI>
31+
<MDI key="STATISTICS_MINIMUM">2</MDI>
32+
<MDI key="STATISTICS_STDDEV">73.957459647589</MDI>
33+
</Metadata>
34+
</PAMRasterBand>
35+
</PAMDataset>
Binary file not shown.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<PAMDataset>
2+
<PAMRasterBand band="1">
3+
<Metadata>
4+
<MDI key="COLOR_TABLE_RULE_RGB_0">0.000000e+00 0.000000e+00 255 127 0 255 127 0</MDI>
5+
<MDI key="COLOR_TABLE_RULES_COUNT">1</MDI>
6+
<MDI key="STATISTICS_MAXIMUM">3.3999999521444e+38</MDI>
7+
<MDI key="STATISTICS_MEAN">2.4177777984595e+37</MDI>
8+
<MDI key="STATISTICS_MINIMUM">-3.3319999287626e+38</MDI>
9+
<MDI key="STATISTICS_STDDEV">1.9800745699579e+38</MDI>
10+
</Metadata>
11+
</PAMRasterBand>
12+
<PAMRasterBand band="2">
13+
<Metadata>
14+
<MDI key="COLOR_TABLE_RULE_RGB_0">0.000000e+00 0.000000e+00 255 127 0 255 127 0</MDI>
15+
<MDI key="COLOR_TABLE_RULES_COUNT">1</MDI>
16+
<MDI key="STATISTICS_MAXIMUM">3.3999999521444e+38</MDI>
17+
<MDI key="STATISTICS_MEAN">2.4177777984595e+37</MDI>
18+
<MDI key="STATISTICS_MINIMUM">-3.3319999287626e+38</MDI>
19+
<MDI key="STATISTICS_STDDEV">1.9800745699579e+38</MDI>
20+
</Metadata>
21+
</PAMRasterBand>
22+
<PAMRasterBand band="3">
23+
<Metadata>
24+
<MDI key="COLOR_TABLE_RULE_RGB_0">0.000000e+00 0.000000e+00 255 127 0 255 127 0</MDI>
25+
<MDI key="COLOR_TABLE_RULES_COUNT">1</MDI>
26+
<MDI key="STATISTICS_MAXIMUM">3.3999999521444e+38</MDI>
27+
<MDI key="STATISTICS_MEAN">2.4177777984595e+37</MDI>
28+
<MDI key="STATISTICS_MINIMUM">-3.3319999287626e+38</MDI>
29+
<MDI key="STATISTICS_STDDEV">1.9800745699579e+38</MDI>
30+
</Metadata>
31+
</PAMRasterBand>
32+
</PAMDataset>
Binary file not shown.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<PAMDataset>
2+
<PAMRasterBand band="1">
3+
<Metadata>
4+
<MDI key="COLOR_TABLE_RULE_RGB_0">-3.211166e+04 3.276700e+02 0 255 0 255 255 0</MDI>
5+
<MDI key="COLOR_TABLE_RULE_RGB_1">3.276700e+02 3.276700e+04 255 255 0 255 0 0</MDI>
6+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
7+
<MDI key="STATISTICS_MAXIMUM">32767</MDI>
8+
<MDI key="STATISTICS_MEAN">2330.024691358</MDI>
9+
<MDI key="STATISTICS_MINIMUM">-32111</MDI>
10+
<MDI key="STATISTICS_STDDEV">19082.231766347</MDI>
11+
</Metadata>
12+
</PAMRasterBand>
13+
<PAMRasterBand band="2">
14+
<Metadata>
15+
<MDI key="COLOR_TABLE_RULE_RGB_0">-3.211166e+04 3.276700e+02 0 255 0 255 255 0</MDI>
16+
<MDI key="COLOR_TABLE_RULE_RGB_1">3.276700e+02 3.276700e+04 255 255 0 255 0 0</MDI>
17+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
18+
<MDI key="STATISTICS_MAXIMUM">32767</MDI>
19+
<MDI key="STATISTICS_MEAN">2330.024691358</MDI>
20+
<MDI key="STATISTICS_MINIMUM">-32111</MDI>
21+
<MDI key="STATISTICS_STDDEV">19082.231766347</MDI>
22+
</Metadata>
23+
</PAMRasterBand>
24+
<PAMRasterBand band="3">
25+
<Metadata>
26+
<MDI key="COLOR_TABLE_RULE_RGB_0">-3.211166e+04 3.276700e+02 0 255 0 255 255 0</MDI>
27+
<MDI key="COLOR_TABLE_RULE_RGB_1">3.276700e+02 3.276700e+04 255 255 0 255 0 0</MDI>
28+
<MDI key="COLOR_TABLE_RULES_COUNT">2</MDI>
29+
<MDI key="STATISTICS_MAXIMUM">32767</MDI>
30+
<MDI key="STATISTICS_MEAN">2330.024691358</MDI>
31+
<MDI key="STATISTICS_MINIMUM">-32111</MDI>
32+
<MDI key="STATISTICS_STDDEV">19082.231766347</MDI>
33+
</Metadata>
34+
</PAMRasterBand>
35+
</PAMDataset>

‎tests/testdata/raster/wcs.map

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
MAP
2+
NAME WCS
3+
STATUS ON
4+
SHAPEPATH "/path/to/qgis/tests/testdata/raster"
5+
6+
OUTPUTFORMAT
7+
# NAME is used in 1.0.0 as format in capabilities and describe coverage
8+
# in 1.1 the MIMETYPE is used instead
9+
NAME "GEOTIFFBYTE"
10+
DRIVER "GDAL/GTiff"
11+
MIMETYPE "image/tiff"
12+
# IMAGEMODE: standard modes: PC256, RGB, RGBA
13+
# WCS (GDAL) modes: BYTE, INT16, FLOAT32
14+
IMAGEMODE "BYTE"
15+
EXTENSION "tif"
16+
END
17+
18+
OUTPUTFORMAT
19+
NAME "GEOTIFFINT16"
20+
DRIVER "GDAL/GTiff"
21+
MIMETYPE "image/tiff16"
22+
IMAGEMODE "INT16"
23+
EXTENSION "tif"
24+
END
25+
26+
OUTPUTFORMAT
27+
NAME "GEOTIFFFLOAT32"
28+
DRIVER "GDAL/GTiff"
29+
MIMETYPE "image/tiff32"
30+
IMAGEMODE "FLOAT32"
31+
EXTENSION "tif"
32+
END
33+
34+
# Color table is not currently supported by UMN Mapserver
35+
#OUTPUTFORMAT
36+
#NAME "GEOTIFFINT8_COLORTABLE"
37+
#DRIVER "GDAL/GTiff"
38+
#MIMETYPE "image/tiff"
39+
#IMAGEMODE "PC256"
40+
#EXTENSION "tif"
41+
#END
42+
43+
WEB
44+
METADATA
45+
"wcs_label" "Quantum GIS WCS Test"
46+
"wcs_description" "Test server to be used by Quantum GIS test suite"
47+
#"wcs_onlineresource" "http://127.0.0.1/cgi-bin/mapserv?" ### recommended
48+
"wcs_crs" "EPSG:4326"
49+
"wcs_fees" "none"
50+
"wcs_accessconstraints" "none"
51+
"wcs_keywordlist" "qgis,wcs,test"
52+
"wcs_metadatalink_type" "TC211"
53+
"wcs_metadatalink_format" "text/plain"
54+
"wcs_metadatalink_href" "http://someurl.com"
55+
"wcs_address" "none"
56+
"wcs_city" "none"
57+
"wcs_stateorprovince" "none"
58+
"wcs_postcode" "none"
59+
"wcs_country" "none"
60+
"wcs_contactelectronicmailaddress" "blah@blah"
61+
"wcs_contactperson" "none"
62+
"wcs_contactorganization" "none"
63+
"wcs_contactposition" "none"
64+
"wcs_contactvoicetelephone" "none"
65+
"wcs_contactfacimiletelephone" "613-555-1235"
66+
"wcs_enable_request" "*"
67+
END
68+
END
69+
70+
PROJECTION
71+
"init=epsg:4326"
72+
END
73+
74+
LAYER
75+
NAME band3_int16_noct_epsg4326
76+
METADATA
77+
"wcs_label" "band3_int16_noct_epsg4326" ### required
78+
"wcs_rangeset_name" "Range1" ### required to support DescribeCoverage request
79+
"wcs_rangeset_label" "My Label" ### required to support DescribeCoverage request
80+
"wcs_rangeset_nullvalue" "-32768"
81+
"wcs_srs" "EPSG:4326 EPSG:900913" # native must be first!
82+
"wcs_formats" "GEOTIFFINT16"
83+
#"wcs_nativeformat" "geotiff"
84+
END
85+
TYPE RASTER ### required
86+
STATUS ON
87+
DATA band3_int16_noct_epsg4326.tif
88+
PROJECTION
89+
"init=epsg:4326"
90+
END
91+
END
92+
93+
LAYER
94+
NAME band1_int16_noct_epsg4326
95+
METADATA
96+
"wcs_label" "band1_int16_noct_epsg4326" ### required
97+
"wcs_rangeset_name" "Range1" ### required to support DescribeCoverage request
98+
"wcs_rangeset_label" "My Label" ### required to support DescribeCoverage request
99+
"wcs_rangeset_nullvalue" "-32768"
100+
"wcs_srs" "EPSG:4326 EPSG:900913" # native must be first!
101+
"wcs_formats" "GEOTIFFINT16"
102+
#"wcs_nativeformat" "geotiff"
103+
END
104+
TYPE RASTER ### required
105+
STATUS ON
106+
DATA band1_int16_noct_epsg4326.tif
107+
PROJECTION
108+
"init=epsg:4326"
109+
END
110+
END
111+
112+
LAYER
113+
NAME band1_float32_noct_epsg4326
114+
METADATA
115+
"wcs_label" "band1_float32_noct_epsg4326" ### required
116+
"wcs_rangeset_name" "Range1" ### required to support DescribeCoverage request
117+
"wcs_rangeset_label" "My Label" ### required to support DescribeCoverage request
118+
"wcs_rangeset_nullvalue" "nan"
119+
"wcs_srs" "EPSG:4326 EPSG:900913" # native must be first!
120+
"wcs_formats" "GEOTIFFFLOAT32"
121+
#"wcs_nativeformat" "geotiff"
122+
END
123+
TYPE RASTER ### required
124+
STATUS ON
125+
DATA band1_float32_noct_epsg4326.tif
126+
PROJECTION
127+
"init=epsg:4326"
128+
END
129+
END
130+
131+
LAYER
132+
NAME band3_byte_noct_epsg4326
133+
METADATA
134+
"wcs_label" "band3_byte_noct_epsg4326" ### required
135+
"wcs_rangeset_name" "Range1" ### required to support DescribeCoverage request
136+
"wcs_rangeset_label" "My Label" ### required to support DescribeCoverage request
137+
"wcs_rangeset_nullvalue" "255"
138+
"wcs_srs" "EPSG:4326 EPSG:900913" # native must be first!
139+
"wcs_formats" "GEOTIFFBYTE"
140+
#"wcs_nativeformat" "geotiff"
141+
END
142+
TYPE RASTER ### required
143+
STATUS ON
144+
DATA band3_byte_noct_epsg4326.tif
145+
PROJECTION
146+
"init=epsg:4326"
147+
END
148+
END
149+
150+
LAYER
151+
NAME band1_byte_ct_epsg4326
152+
METADATA
153+
"wcs_label" "band1_byte_ct_epsg4326" ### required
154+
"wcs_rangeset_name" "Range1" ### required to support DescribeCoverage request
155+
"wcs_rangeset_label" "My Label" ### required to support DescribeCoverage request
156+
"wcs_rangeset_nullvalue" "255"
157+
"wcs_srs" "EPSG:4326 EPSG:900913" # native must be first!
158+
"wcs_formats" "GEOTIFFBYTE"
159+
#"wcs_nativeformat" "geotiff"
160+
END
161+
TYPE RASTER ### required
162+
STATUS ON
163+
DATA band1_byte_ct_epsg4326.tif
164+
PROJECTION
165+
"init=epsg:4326"
166+
END
167+
END
168+
169+
LAYER
170+
NAME band3_float32_noct_epsg4326
171+
METADATA
172+
"wcs_label" "band3_float32_noct_epsg4326" ### required
173+
"wcs_rangeset_name" "Range1" ### required to support DescribeCoverage request
174+
"wcs_rangeset_label" "My Label" ### required to support DescribeCoverage request
175+
"wcs_rangeset_nullvalue" "nan"
176+
"wcs_srs" "EPSG:4326 EPSG:900913" # native must be first!
177+
"wcs_formats" "GEOTIFFFLOAT32"
178+
#"wcs_nativeformat" "geotiff"
179+
END
180+
TYPE RASTER ### required
181+
STATUS ON
182+
DATA band3_float32_noct_epsg4326.tif
183+
PROJECTION
184+
"init=epsg:4326"
185+
END
186+
END
187+
188+
LAYER
189+
NAME band1_byte_noct_epsg4326
190+
METADATA
191+
"wcs_label" "band1_byte_noct_epsg4326" ### required
192+
"wcs_rangeset_name" "Range1" ### required to support DescribeCoverage request
193+
"wcs_rangeset_label" "My Label" ### required to support DescribeCoverage request
194+
"wcs_rangeset_nullvalue" "255"
195+
"wcs_srs" "EPSG:4326 EPSG:900913" # native must be first!
196+
"wcs_formats" "GEOTIFFBYTE"
197+
#"wcs_nativeformat" "geotiff"
198+
END
199+
TYPE RASTER ### required
200+
STATUS ON
201+
DATA band1_byte_noct_epsg4326.tif
202+
PROJECTION
203+
"init=epsg:4326"
204+
END
205+
END
206+
END
207+

0 commit comments

Comments
 (0)
Please sign in to comment.