mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
Fix #8584 (WFS requests with FILTER fails against Geoserver)
This commit is contained in:
parent
8b8eb562f4
commit
10c15089d1
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
|
|
||||||
static const QString GML_NAMESPACE = "http://www.opengis.net/gml";
|
static const QString GML_NAMESPACE = "http://www.opengis.net/gml";
|
||||||
|
static const QString OGC_NAMESPACE = "http://www.opengis.net/ogc";
|
||||||
|
|
||||||
QgsGeometry* QgsOgcUtils::geometryFromGML( const QDomNode& geometryNode )
|
QgsGeometry* QgsOgcUtils::geometryFromGML( const QDomNode& geometryNode )
|
||||||
{
|
{
|
||||||
@ -1879,7 +1880,7 @@ QDomElement QgsOgcUtils::expressionToOgcFilter( const QgsExpression& exp, QDomDo
|
|||||||
if ( exprRootElem.isNull() )
|
if ( exprRootElem.isNull() )
|
||||||
return QDomElement();
|
return QDomElement();
|
||||||
|
|
||||||
QDomElement filterElem = doc.createElement( "ogc:Filter" );
|
QDomElement filterElem = doc.createElementNS( OGC_NAMESPACE, "ogc:Filter" );
|
||||||
filterElem.appendChild( exprRootElem );
|
filterElem.appendChild( exprRootElem );
|
||||||
return filterElem;
|
return filterElem;
|
||||||
}
|
}
|
||||||
|
@ -246,19 +246,21 @@ void TestQgsOgcUtils::testExpressionToOgcFilter_data()
|
|||||||
QTest::addColumn<QString>( "xmlText" );
|
QTest::addColumn<QString>( "xmlText" );
|
||||||
|
|
||||||
QTest::newRow( "=" ) << QString( "NAME = 'New York'" ) << QString(
|
QTest::newRow( "=" ) << QString( "NAME = 'New York'" ) << QString(
|
||||||
"<ogc:Filter><ogc:PropertyIsEqualTo>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
|
"<ogc:PropertyIsEqualTo>"
|
||||||
"<ogc:PropertyName>NAME</ogc:PropertyName>"
|
"<ogc:PropertyName>NAME</ogc:PropertyName>"
|
||||||
"<ogc:Literal>New York</ogc:Literal>"
|
"<ogc:Literal>New York</ogc:Literal>"
|
||||||
"</ogc:PropertyIsEqualTo></ogc:Filter>" );
|
"</ogc:PropertyIsEqualTo></ogc:Filter>" );
|
||||||
|
|
||||||
QTest::newRow( ">" ) << QString( "COUNT > 3" ) << QString(
|
QTest::newRow( ">" ) << QString( "COUNT > 3" ) << QString(
|
||||||
"<ogc:Filter><ogc:PropertyIsGreaterThan>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
|
"<ogc:PropertyIsGreaterThan>"
|
||||||
"<ogc:PropertyName>COUNT</ogc:PropertyName>"
|
"<ogc:PropertyName>COUNT</ogc:PropertyName>"
|
||||||
"<ogc:Literal>3</ogc:Literal>"
|
"<ogc:Literal>3</ogc:Literal>"
|
||||||
"</ogc:PropertyIsGreaterThan></ogc:Filter>" );
|
"</ogc:PropertyIsGreaterThan></ogc:Filter>" );
|
||||||
|
|
||||||
QTest::newRow( "and+or" ) << QString( "(FIELD1 = 10 OR FIELD1 = 20) AND STATUS = 'VALID'" ) << QString(
|
QTest::newRow( "and+or" ) << QString( "(FIELD1 = 10 OR FIELD1 = 20) AND STATUS = 'VALID'" ) << QString(
|
||||||
"<ogc:Filter>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
"<ogc:And>"
|
"<ogc:And>"
|
||||||
"<ogc:Or>"
|
"<ogc:Or>"
|
||||||
"<ogc:PropertyIsEqualTo>"
|
"<ogc:PropertyIsEqualTo>"
|
||||||
@ -278,14 +280,14 @@ void TestQgsOgcUtils::testExpressionToOgcFilter_data()
|
|||||||
"</ogc:Filter>" );
|
"</ogc:Filter>" );
|
||||||
|
|
||||||
QTest::newRow( "is null" ) << QString( "X IS NULL" ) << QString(
|
QTest::newRow( "is null" ) << QString( "X IS NULL" ) << QString(
|
||||||
"<ogc:Filter>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
"<ogc:PropertyIsNull>"
|
"<ogc:PropertyIsNull>"
|
||||||
"<ogc:PropertyName>X</ogc:PropertyName>"
|
"<ogc:PropertyName>X</ogc:PropertyName>"
|
||||||
"</ogc:PropertyIsNull>"
|
"</ogc:PropertyIsNull>"
|
||||||
"</ogc:Filter>" );
|
"</ogc:Filter>" );
|
||||||
|
|
||||||
QTest::newRow( "is not null" ) << QString( "X IS NOT NULL" ) << QString(
|
QTest::newRow( "is not null" ) << QString( "X IS NOT NULL" ) << QString(
|
||||||
"<ogc:Filter>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
"<ogc:Not>"
|
"<ogc:Not>"
|
||||||
"<ogc:PropertyIsNull>"
|
"<ogc:PropertyIsNull>"
|
||||||
"<ogc:PropertyName>X</ogc:PropertyName>"
|
"<ogc:PropertyName>X</ogc:PropertyName>"
|
||||||
@ -294,7 +296,7 @@ void TestQgsOgcUtils::testExpressionToOgcFilter_data()
|
|||||||
"</ogc:Filter>" );
|
"</ogc:Filter>" );
|
||||||
|
|
||||||
QTest::newRow( "in" ) << QString( "A IN (10,20,30)" ) << QString(
|
QTest::newRow( "in" ) << QString( "A IN (10,20,30)" ) << QString(
|
||||||
"<ogc:Filter>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
"<ogc:Or>"
|
"<ogc:Or>"
|
||||||
"<ogc:PropertyIsEqualTo>"
|
"<ogc:PropertyIsEqualTo>"
|
||||||
"<ogc:PropertyName>A</ogc:PropertyName>"
|
"<ogc:PropertyName>A</ogc:PropertyName>"
|
||||||
@ -312,7 +314,7 @@ void TestQgsOgcUtils::testExpressionToOgcFilter_data()
|
|||||||
"</ogc:Filter>" );
|
"</ogc:Filter>" );
|
||||||
|
|
||||||
QTest::newRow( "intersects + wkt" ) << QString( "intersects($geometry, geomFromWKT('POINT (5 6)'))" ) << QString(
|
QTest::newRow( "intersects + wkt" ) << QString( "intersects($geometry, geomFromWKT('POINT (5 6)'))" ) << QString(
|
||||||
"<ogc:Filter>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
"<ogc:Intersects>"
|
"<ogc:Intersects>"
|
||||||
"<ogc:PropertyName>geometry</ogc:PropertyName>"
|
"<ogc:PropertyName>geometry</ogc:PropertyName>"
|
||||||
"<gml:Point><gml:coordinates cs=\",\" ts=\" \">5,6</gml:coordinates></gml:Point>"
|
"<gml:Point><gml:coordinates cs=\",\" ts=\" \">5,6</gml:coordinates></gml:Point>"
|
||||||
@ -320,7 +322,7 @@ void TestQgsOgcUtils::testExpressionToOgcFilter_data()
|
|||||||
"</ogc:Filter>" );
|
"</ogc:Filter>" );
|
||||||
|
|
||||||
QTest::newRow( "contains + gml" ) << QString( "contains($geometry, geomFromGML('<Point><coordinates cs=\",\" ts=\" \">5,6</coordinates></Point>'))" ) << QString(
|
QTest::newRow( "contains + gml" ) << QString( "contains($geometry, geomFromGML('<Point><coordinates cs=\",\" ts=\" \">5,6</coordinates></Point>'))" ) << QString(
|
||||||
"<ogc:Filter>"
|
"<ogc:Filter xmlns:ogc=\"http://www.opengis.net/ogc\">"
|
||||||
"<ogc:Contains>"
|
"<ogc:Contains>"
|
||||||
"<ogc:PropertyName>geometry</ogc:PropertyName>"
|
"<ogc:PropertyName>geometry</ogc:PropertyName>"
|
||||||
"<Point><coordinates cs=\",\" ts=\" \">5,6</coordinates></Point>"
|
"<Point><coordinates cs=\",\" ts=\" \">5,6</coordinates></Point>"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user