Skip to content

Commit 5243423

Browse files
committedSep 20, 2012
Merge branch 'master' of github.com:qgis/Quantum-GIS
2 parents c5cc634 + fed17aa commit 5243423

File tree

8 files changed

+479
-135
lines changed

8 files changed

+479
-135
lines changed
 

‎src/core/qgsgeometry.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4226,10 +4226,10 @@ QString QgsGeometry::exportToGeoJSON()
42264226
{
42274227
mWkt += "{ \"type\": \"Point\", \"coordinates\": [";
42284228
x = ( double * )( mGeometry + 5 );
4229-
mWkt += QString::number( *x, 'f', 6 );
4229+
mWkt += QString::number( *x, 'f' );
42304230
mWkt += ", ";
42314231
y = ( double * )( mGeometry + 5 + sizeof( double ) );
4232-
mWkt += QString::number( *y, 'f', 6 );
4232+
mWkt += QString::number( *y, 'f' );
42334233
mWkt += "] }";
42344234
return mWkt;
42354235
}
@@ -4256,11 +4256,11 @@ QString QgsGeometry::exportToGeoJSON()
42564256
}
42574257
mWkt += "[";
42584258
x = ( double * ) ptr;
4259-
mWkt += QString::number( *x, 'f', 6 );
4259+
mWkt += QString::number( *x, 'f' );
42604260
mWkt += ", ";
42614261
ptr += sizeof( double );
42624262
y = ( double * ) ptr;
4263-
mWkt += QString::number( *y, 'f', 6 );
4263+
mWkt += QString::number( *y, 'f' );
42644264
ptr += sizeof( double );
42654265
if ( hasZValue )
42664266
{
@@ -4313,11 +4313,11 @@ QString QgsGeometry::exportToGeoJSON()
43134313
}
43144314
mWkt += "[";
43154315
x = ( double * ) ptr;
4316-
mWkt += QString::number( *x, 'f', 6 );
4316+
mWkt += QString::number( *x, 'f' );
43174317
mWkt += ", ";
43184318
ptr += sizeof( double );
43194319
y = ( double * ) ptr;
4320-
mWkt += QString::number( *y, 'f', 6 );
4320+
mWkt += QString::number( *y, 'f' );
43214321
ptr += sizeof( double );
43224322
if ( hasZValue )
43234323
{
@@ -4353,11 +4353,11 @@ QString QgsGeometry::exportToGeoJSON()
43534353
}
43544354
mWkt += "[";
43554355
x = ( double * )( ptr );
4356-
mWkt += QString::number( *x, 'f', 6 );
4356+
mWkt += QString::number( *x, 'f' );
43574357
mWkt += ", ";
43584358
ptr += sizeof( double );
43594359
y = ( double * )( ptr );
4360-
mWkt += QString::number( *y, 'f', 6 );
4360+
mWkt += QString::number( *y, 'f' );
43614361
ptr += sizeof( double );
43624362
if ( hasZValue )
43634363
{
@@ -4399,11 +4399,11 @@ QString QgsGeometry::exportToGeoJSON()
43994399
}
44004400
mWkt += "[";
44014401
x = ( double * ) ptr;
4402-
mWkt += QString::number( *x, 'f', 6 );
4402+
mWkt += QString::number( *x, 'f' );
44034403
ptr += sizeof( double );
44044404
mWkt += ", ";
44054405
y = ( double * ) ptr;
4406-
mWkt += QString::number( *y, 'f', 6 );
4406+
mWkt += QString::number( *y, 'f' );
44074407
ptr += sizeof( double );
44084408
if ( hasZValue )
44094409
{
@@ -4457,11 +4457,11 @@ QString QgsGeometry::exportToGeoJSON()
44574457
}
44584458
mWkt += "[";
44594459
x = ( double * ) ptr;
4460-
mWkt += QString::number( *x, 'f', 6 );
4460+
mWkt += QString::number( *x, 'f' );
44614461
ptr += sizeof( double );
44624462
mWkt += ", ";
44634463
y = ( double * ) ptr;
4464-
mWkt += QString::number( *y, 'f', 6 );
4464+
mWkt += QString::number( *y, 'f' );
44654465
ptr += sizeof( double );
44664466
if ( hasZValue )
44674467
{

‎src/mapserver/qgswfsserver.cpp

Lines changed: 171 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,37 @@ QDomDocument QgsWFSServer::describeFeatureType()
331331
//xsd:element
332332
QDomElement geomElem = doc.createElement( "element"/*xsd:element*/ );
333333
geomElem.setAttribute( "name", "geometry" );
334-
geomElem.setAttribute( "type", "gml:GeometryPropertyType" );
334+
QGis::WkbType wkbType = layer->wkbType();
335+
switch ( wkbType )
336+
{
337+
case QGis::WKBPoint25D:
338+
case QGis::WKBPoint:
339+
geomElem.setAttribute( "type", "gml:PointPropertyType" );
340+
break;
341+
case QGis::WKBLineString25D:
342+
case QGis::WKBLineString:
343+
geomElem.setAttribute( "type", "gml:LineStringPropertyType" );
344+
break;
345+
case QGis::WKBPolygon25D:
346+
case QGis::WKBPolygon:
347+
geomElem.setAttribute( "type", "gml:PolygonPropertyType" );
348+
break;
349+
case QGis::WKBMultiPoint25D:
350+
case QGis::WKBMultiPoint:
351+
geomElem.setAttribute( "type", "gml:MultiPointPropertyType" );
352+
break;
353+
case QGis::WKBMultiLineString25D:
354+
case QGis::WKBMultiLineString:
355+
geomElem.setAttribute( "type", "gml:MultiLineStringPropertyType" );
356+
break;
357+
case QGis::WKBMultiPolygon25D:
358+
case QGis::WKBMultiPolygon:
359+
geomElem.setAttribute( "type", "gml:MultiPolygonPropertyType" );
360+
break;
361+
default:
362+
geomElem.setAttribute( "type", "gml:GeometryPropertyType" );
363+
break;
364+
}
335365
geomElem.setAttribute( "minOccurs", "0" );
336366
geomElem.setAttribute( "maxOccurs", "1" );
337367
sequenceElem.appendChild( geomElem );
@@ -543,9 +573,11 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
543573
}
544574
}
545575

576+
if ( bboxOk )
577+
searchRect.set( minx, miny, maxx, maxy );
546578
QgsCoordinateReferenceSystem layerCrs = layer->crs();
547579

548-
startGetFeature( request, format );
580+
startGetFeature( request, format, layerCrs, &searchRect );
549581

550582
if ( fidOk )
551583
{
@@ -589,8 +621,6 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
589621
}
590622
else
591623
{
592-
if ( bboxOk )
593-
searchRect.set( minx, miny, maxx, maxy );
594624
provider->select( attrIndexes, searchRect, mWithGeom, true );
595625
while ( provider->nextFeature( feature ) && featureCounter < maxFeat )
596626
{
@@ -608,25 +638,102 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
608638
return 0;
609639
}
610640

611-
void QgsWFSServer::startGetFeature( QgsRequestHandler& request, const QString& format )
641+
void QgsWFSServer::startGetFeature( QgsRequestHandler& request, const QString& format, QgsCoordinateReferenceSystem& crs, QgsRectangle* rect )
612642
{
613643
QByteArray result;
614644
QString fcString;
615645
if ( format == "GeoJSON" )
616646
{
617647
fcString = "{\"type\": \"FeatureCollection\",\n";
648+
fcString += " \"bbox\": [ "+ QString::number( rect->xMinimum(), 'f' ) +", "+ QString::number( rect->yMinimum(), 'f' ) +", "+ QString::number( rect->xMaximum(), 'f' ) +", "+ QString::number( rect->yMaximum(), 'f' ) +"],\n";
618649
fcString += " \"features\": [\n";
619650
result = fcString.toUtf8();
620651
request.startGetFeatureResponse( &result, format );
621652
}
622653
else
623654
{
655+
//Prepare url
656+
//Some client requests already have http://<SERVER_NAME> in the REQUEST_URI variable
657+
QString hrefString;
658+
QString requestUrl = getenv( "REQUEST_URI" );
659+
QUrl mapUrl( requestUrl );
660+
mapUrl.setHost( QString( getenv( "SERVER_NAME" ) ) );
661+
662+
//Add non-default ports to url
663+
QString portString = getenv( "SERVER_PORT" );
664+
if ( !portString.isEmpty() )
665+
{
666+
bool portOk;
667+
int portNumber = portString.toInt( &portOk );
668+
if ( portOk )
669+
{
670+
if ( portNumber != 80 )
671+
{
672+
mapUrl.setPort( portNumber );
673+
}
674+
}
675+
}
676+
677+
if ( QString( getenv( "HTTPS" ) ).compare( "on", Qt::CaseInsensitive ) == 0 )
678+
{
679+
mapUrl.setScheme( "https" );
680+
}
681+
else
682+
{
683+
mapUrl.setScheme( "http" );
684+
}
685+
686+
QList<QPair<QString, QString> > queryItems = mapUrl.queryItems();
687+
QList<QPair<QString, QString> >::const_iterator queryIt = queryItems.constBegin();
688+
for ( ; queryIt != queryItems.constEnd(); ++queryIt )
689+
{
690+
if ( queryIt->first.compare( "REQUEST", Qt::CaseInsensitive ) == 0 )
691+
{
692+
mapUrl.removeQueryItem( queryIt->first );
693+
mapUrl.addQueryItem( queryIt->first, "DescribeFeatureType" );
694+
}
695+
else if ( queryIt->first.compare( "FORMAT", Qt::CaseInsensitive ) == 0 )
696+
{
697+
mapUrl.removeQueryItem( queryIt->first );
698+
}
699+
else if ( queryIt->first.compare( "OUTPUTFORMAT", Qt::CaseInsensitive ) == 0 )
700+
{
701+
mapUrl.removeQueryItem( queryIt->first );
702+
}
703+
else if ( queryIt->first.compare( "BBOX", Qt::CaseInsensitive ) == 0 )
704+
{
705+
mapUrl.removeQueryItem( queryIt->first );
706+
}
707+
else if ( queryIt->first.compare( "FEATUREID", Qt::CaseInsensitive ) == 0 )
708+
{
709+
mapUrl.removeQueryItem( queryIt->first );
710+
}
711+
else if ( queryIt->first.compare( "FILTER", Qt::CaseInsensitive ) == 0 )
712+
{
713+
mapUrl.removeQueryItem( queryIt->first );
714+
}
715+
else if ( queryIt->first.compare( "MAXFEATURES", Qt::CaseInsensitive ) == 0 )
716+
{
717+
mapUrl.removeQueryItem( queryIt->first );
718+
}
719+
else if ( queryIt->first.compare( "PROPERTYNAME", Qt::CaseInsensitive ) == 0 )
720+
{
721+
mapUrl.removeQueryItem( queryIt->first );
722+
}
723+
else if ( queryIt->first.compare( "_DC", Qt::CaseInsensitive ) == 0 )
724+
{
725+
mapUrl.removeQueryItem( queryIt->first );
726+
}
727+
}
728+
mapUrl.addQueryItem( "OUTPUTFORMAT", "XMLSCHEMA" );
729+
hrefString = mapUrl.toString();
730+
624731
//wfs:FeatureCollection
625732
fcString = "<wfs:FeatureCollection";
626733
fcString += " xmlns=\"http://www.opengis.net/wfs\"";
627734
fcString += " xmlns:wfs=\"http://www.opengis.net/wfs\"";
628735
fcString += " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";
629-
fcString += " xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd\"";
736+
fcString += " xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd http://www.opengis.net/gml "+ hrefString.replace( "&", "&amp;" ) +"\"";
630737
fcString += " xmlns:ogc=\"http://www.opengis.net/ogc\"";
631738
fcString += " xmlns:gml=\"http://www.opengis.net/gml\"";
632739
fcString += " xmlns:ows=\"http://www.opengis.net/ows\"";
@@ -635,6 +742,21 @@ void QgsWFSServer::startGetFeature( QgsRequestHandler& request, const QString& f
635742
fcString += ">";
636743
result = fcString.toUtf8();
637744
request.startGetFeatureResponse( &result, format );
745+
746+
QDomDocument doc;
747+
QDomElement bbElem = doc.createElement( "gml:boundedBy" );
748+
QDomElement boxElem = createBoxElem( rect, doc );
749+
if ( !boxElem.isNull() )
750+
{
751+
if ( crs.isValid() )
752+
{
753+
boxElem.setAttribute( "srsName", crs.authid() );
754+
}
755+
bbElem.appendChild( boxElem );
756+
doc.appendChild( bbElem );
757+
}
758+
result = doc.toByteArray();
759+
request.sendGetFeatureResponse( &result );
638760
}
639761
fcString = "";
640762
}
@@ -701,6 +823,10 @@ QString QgsWFSServer::createFeatureGeoJSON( QgsFeature* feat, QgsCoordinateRefer
701823
QgsGeometry* geom = feat->geometry();
702824
if ( geom && mWithGeom )
703825
{
826+
QgsRectangle box = geom->boundingBox();
827+
828+
fStr += " \"bbox\": [ "+ QString::number( box.xMinimum(), 'f' ) +", "+ QString::number( box.yMinimum(), 'f' ) +", "+ QString::number( box.xMaximum(), 'f' ) +", "+ QString::number( box.yMaximum(), 'f' ) +"],\n";
829+
704830
fStr += " \"geometry\": ";
705831
fStr += geom->exportToGeoJSON();
706832
fStr += ",\n";
@@ -759,14 +885,25 @@ QDomElement QgsWFSServer::createFeatureElem( QgsFeature* feat, QDomDocument& doc
759885
if ( mWithGeom )
760886
{
761887
//add geometry column (as gml)
888+
QgsGeometry* geom = feat->geometry();
889+
762890
QDomElement geomElem = doc.createElement( "qgs:geometry" );
763-
QDomElement gmlElem = createGeometryElem( feat->geometry(), doc );
891+
QDomElement gmlElem = createGeometryElem( geom, doc );
764892
if ( !gmlElem.isNull() )
765893
{
894+
QgsRectangle box = geom->boundingBox();
895+
QDomElement bbElem = doc.createElement( "gml:boundedBy" );
896+
QDomElement boxElem = createBoxElem( &box, doc );
897+
766898
if ( crs.isValid() )
767899
{
900+
boxElem.setAttribute( "srsName", crs.authid() );
768901
gmlElem.setAttribute( "srsName", crs.authid() );
769902
}
903+
904+
bbElem.appendChild( boxElem );
905+
typeNameElement.appendChild( bbElem );
906+
770907
geomElem.appendChild( gmlElem );
771908
typeNameElement.appendChild( geomElem );
772909
}
@@ -793,6 +930,27 @@ QDomElement QgsWFSServer::createFeatureElem( QgsFeature* feat, QDomDocument& doc
793930
return featureElement;
794931
}
795932

933+
QDomElement QgsWFSServer::createBoxElem( QgsRectangle* box, QDomDocument& doc ) /*const*/
934+
{
935+
if ( !box )
936+
{
937+
return QDomElement();
938+
}
939+
940+
QDomElement boxElem = doc.createElement( "gml:Box" );
941+
QVector<QgsPoint> v;
942+
QgsPoint p1;
943+
p1.set( box->xMinimum(), box->yMinimum() );
944+
v.append( p1 );
945+
QgsPoint p2;
946+
p2.set( box->xMaximum(), box->yMaximum() );
947+
v.append( p2 );
948+
QDomElement coordElem = createCoordinateElem( v, doc );
949+
boxElem.appendChild( coordElem );
950+
951+
return boxElem;
952+
}
953+
796954
QDomElement QgsWFSServer::createGeometryElem( QgsGeometry* geom, QDomDocument& doc ) /*const*/
797955
{
798956
if ( !geom )
@@ -931,13 +1089,13 @@ QDomElement QgsWFSServer::createPolygonElem( QgsGeometry* geom, QDomDocument& do
9311089
QString boundaryName;
9321090
if ( i == 0 )
9331091
{
934-
boundaryName = "outerBoundaryIs";
1092+
boundaryName = "gml:outerBoundaryIs";
9351093
}
9361094
else
9371095
{
938-
boundaryName = "innerBoundaryIs";
1096+
boundaryName = "gml:innerBoundaryIs";
9391097
}
940-
QDomElement boundaryElem = doc.createElementNS( "http://www.opengis.net/gml", boundaryName );
1098+
QDomElement boundaryElem = doc.createElement( boundaryName );
9411099
QDomElement ringElem = doc.createElement( "gml:LinearRing" );
9421100
QDomElement coordElem = createCoordinateElem( poly.at( i ), doc );
9431101
ringElem.appendChild( coordElem );
@@ -979,7 +1137,7 @@ QDomElement QgsWFSServer::createCoordinateElem( const QVector<QgsPoint> points,
9791137
coordElem.setAttribute( "ts", " " );
9801138

9811139
//precision 4 for meters / feet, precision 8 for degrees
982-
int precision = 8;
1140+
int precision = 6;
9831141
/*
9841142
if ( mSourceCRS.mapUnits() == QGis::Meters
9851143
|| mSourceCRS.mapUnits() == QGis::Feet )
@@ -996,9 +1154,9 @@ QDomElement QgsWFSServer::createCoordinateElem( const QVector<QgsPoint> points,
9961154
{
9971155
coordString += " ";
9981156
}
999-
coordString += QString::number( pointIt->x(), 'f', precision );
1157+
coordString += QString::number( pointIt->x(), 'f');
10001158
coordString += ",";
1001-
coordString += QString::number( pointIt->y(), 'f', precision );
1159+
coordString += QString::number( pointIt->y(), 'f' );
10021160
}
10031161

10041162
QDomText coordText = doc.createTextNode( coordString );

‎src/mapserver/qgswfsserver.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class QgsVectorLayer;
3636
class QgsCoordinateReferenceSystem;
3737
class QgsField;
3838
class QgsFeature;
39+
class QgsRectangle;
3940
class QgsGeometry;
4041
class QgsSymbol;
4142
class QgsRequestHandler;
@@ -80,7 +81,7 @@ class QgsWFSServer
8081

8182
protected:
8283

83-
void startGetFeature( QgsRequestHandler& request, const QString& format );
84+
void startGetFeature( QgsRequestHandler& request, const QString& format, QgsCoordinateReferenceSystem& crs, QgsRectangle* rect );
8485
void sendGetFeature( QgsRequestHandler& request, const QString& format, QgsFeature* feat, int featIdx, QgsCoordinateReferenceSystem& crs, QMap< int, QgsField > fields, QSet<QString> hiddenAttributes );
8586
void endGetFeature( QgsRequestHandler& request, const QString& format );
8687

@@ -90,6 +91,7 @@ class QgsWFSServer
9091
//methods to write GML2
9192
QDomElement createFeatureElem( QgsFeature* feat, QDomDocument& doc, QgsCoordinateReferenceSystem& crs, QMap< int, QgsField > fields, QSet<QString> hiddenAttributes ) /*const*/;
9293

94+
QDomElement createBoxElem( QgsRectangle* box, QDomDocument& doc ) /* const */;
9395
QDomElement createGeometryElem( QgsGeometry* g, QDomDocument& doc ) /*const*/;
9496
QDomElement createLineStringElem( QgsGeometry* geom, QDomDocument& doc ) const;
9597
QDomElement createMultiLineStringElem( QgsGeometry* geom, QDomDocument& doc ) const;

‎src/providers/wcs/qgswcscapabilities.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ bool QgsWcsCapabilities::parseDescribeCoverageDom10( QByteArray const &xml, QgsW
754754

755755
// may be GTiff, GeoTIFF, TIFF, GIF, ....
756756
coverage->supportedFormat = domElementsTexts( coverageOfferingElement, "supportedFormats.formats" );
757-
//QgsDebugMsg( "supportedFormat = " + coverage->supportedFormat.join( "," ) );
757+
QgsDebugMsg( "supportedFormat = " + coverage->supportedFormat.join( "," ) );
758758

759759
// spatialDomain and Grid/RectifiedGrid are optional according to specificationi.
760760
// If missing, we cannot get native resolution and size.

‎src/providers/wcs/qgswcsprovider.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -804,11 +804,17 @@ void QgsWcsProvider::cacheReplyFinished()
804804
QgsDebugMsg( "contentType: " + contentType );
805805

806806
// Exception
807+
// Content type examples: text/xml
808+
// application/vnd.ogc.se_xml;charset=UTF-8
809+
// application/xml
807810
if ( contentType.startsWith( "text/", Qt::CaseInsensitive ) ||
808-
contentType.toLower() == "application/vnd.ogc.se_xml" )
811+
contentType.toLower() == "application/xml" ||
812+
contentType.startsWith( "application/vnd.ogc.se_xml", Qt::CaseInsensitive ) )
809813
{
810814
QByteArray text = mCacheReply->readAll();
811-
if (( contentType.toLower() == "text/xml" || contentType.toLower() == "application/vnd.ogc.se_xml" )
815+
if (( contentType.toLower() == "text/xml" ||
816+
contentType.toLower() == "application/xml" ||
817+
contentType.startsWith( "application/vnd.ogc.se_xml", Qt::CaseInsensitive ) )
812818
&& parseServiceExceptionReportDom( text ) )
813819
{
814820
QgsMessageLog::logMessage( tr( "Map request error (Title:%1; Error:%2; URL: %3)" )

‎tests/src/providers/testqgswcspublicservers.cpp

Lines changed: 246 additions & 104 deletions
Large diffs are not rendered by default.

‎tests/src/providers/testqgswcspublicservers.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class TestQgsWcsPublicServers: public QObject
3535
// Known problem
3636
struct Issue
3737
{
38+
QString offender; // server or empty == qgis
3839
QStringList versions; // version regex
3940
QStringList coverages; // coverage regex
4041
QString description; // problem description
@@ -45,24 +46,37 @@ class TestQgsWcsPublicServers: public QObject
4546
Server( ) {}
4647
Server( const QString & u ) : url( u ) {}
4748
QString url; // URL
49+
QString description; // notes
4850
QList<TestQgsWcsPublicServers::Issue> issues;
4951
};
5052

53+
enum OffenderType
54+
{
55+
NoOffender = 0,
56+
ServerOffender = 1,
57+
QGisOffender = 1 << 1
58+
};
5159

5260
TestQgsWcsPublicServers( const QString & cacheDirPath, int maxCoverages, const QString & server = QString(), const QString & coverage = QString(), const QString &version = QString(), bool force = false );
5361

5462
void init();
5563
void test();
5664
void report();
5765
private:
66+
QString cells( QStringList theValues, QString theClass = QString(), int colspan = 1 );
5867
QString row( QStringList theValues, QString theClass = QString() );
5968
QString error( QString theMessage );
6069
void writeReport( QString theReport );
6170

6271
QMap<QString, QString> readLog( QString theFileName );
6372

73+
Server getServer( const QString & url );
74+
75+
QList<Issue> issues( const QString & url, const QString & coverage, const QString &version );
6476
QStringList issueDescriptions( const QString & url, const QString & coverage, const QString &version );
6577

78+
int issueOffender( const QString & url, const QString & coverage, const QString &version );
79+
6680
QString mCacheDirPath;
6781
QDir mCacheDir;
6882

‎tests/src/providers/wcs-servers.json

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,33 @@
11
[
22
{
33
url: 'http://demo.opengeo.org/geoserver/wcs',
4+
description: 'Does not work at all with gvSIG-1_11-1305-final.',
45
issues: [
56
{
7+
offender: 'server',
68
coverages: [ 'og:0' ],
7-
versions: [ ],
8-
description: 'Server fails on DescribeCoverage with: java.io.IOException null Translator error Unexpected error occurred during describe coverage xml encoding ...'
9+
versions: [ '1.0.0' ],
10+
description: 'The server fails in DescribeCoverage with: java.io.IOException null Translator error Unexpected error occurred during describe coverage xml encoding ...'
11+
},{
12+
offender: 'server',
13+
coverages: [ 'bm' ],
14+
versions: [ '1.1.0' ],
15+
description: 'The server fails in DescribeCoverage with: java.io.IOException null Translator error Unexpected error occurred during describe coverage xml encoding ...'
16+
},{
17+
offender: 'server',
18+
coverages: [ 'usgs:nlcd', 'nlcd' ],
19+
versions: [ '1.0.0', '1.1.0' ],
20+
description: 'The server does no offer any CRS in DescribeCoverage supportedCRSs / supportedCRS. QGIS tries to get coverage using EPSG:5070, in which the coverage spatialDomain.Envelope is defined, but server fails reporting error: Could not recognize crs ...'
21+
},{
22+
offender: 'server',
23+
coverages: [ '0', 'naturalearth' ],
24+
versions: [ '1.1.0' ],
25+
description: "The server fails in GetCoverage with 'java.lang.IllegalArgumentException: xScale:the parameter value is not valid. xScale:the parameter value is not valid.' It fails with BOUNDINGBOX=-2,-6,2,6&GRIDORIGIN=2,-6&GRIDOFFSETS=-2,3 but works with BOUNDINGBOX=-2,-6,2,6&GRIDORIGIN=2,-6&GRIDOFFSETS=2,-3 (GRIDOFFSETS signs switched) other coverages (Arc_Sample e.g.) work OK with the first"
26+
},{
27+
offender: 'server',
28+
coverages: [ 'Img_Sample' ],
29+
versions: [ '1.1.0' ],
30+
description: "The server fails in GetCoverage with 'java.lang.IllegalArgumentException: The specified dimensional parameter is non-positive. The specified dimensional parameter is non-positive'."
931
}
1032
]
1133
}, {

0 commit comments

Comments
 (0)
Please sign in to comment.