Skip to content

Commit 3994d1e

Browse files
author
mhugent
committed
Improve geometry type detection for wfs
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@14539 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent a0c977e commit 3994d1e

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

src/providers/wfs/qgswfsdata.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,11 @@ void QgsWFSData::endElement( const XML_Char* el )
351351
{
352352
//error
353353
}
354-
*mWkbType = QGis::WKBPoint;
354+
355+
if ( *mWkbType != QGis::WKBMultiPoint ) //keep multitype in case of geometry type mix
356+
{
357+
*mWkbType = QGis::WKBPoint;
358+
}
355359
}
356360
else //multipoint, add WKB as fragment
357361
{
@@ -386,7 +390,11 @@ void QgsWFSData::endElement( const XML_Char* el )
386390
{
387391
//error
388392
}
389-
*mWkbType = QGis::WKBLineString;
393+
394+
if ( *mWkbType != QGis::WKBMultiLineString )//keep multitype in case of geometry type mix
395+
{
396+
*mWkbType = QGis::WKBLineString;
397+
}
390398
}
391399
else //multiline, add WKB as fragment
392400
{
@@ -424,14 +432,18 @@ void QgsWFSData::endElement( const XML_Char* el )
424432
}
425433
else if ( elementName == GML_NAMESPACE + NS_SEPARATOR + "Polygon" )
426434
{
427-
*mWkbType = QGis::WKBPolygon;
435+
if ( *mWkbType != QGis::WKBMultiPolygon )//keep multitype in case of geometry type mix
436+
{
437+
*mWkbType = QGis::WKBPolygon;
438+
}
428439
if ( mParseModeStack.top() != QgsWFSData::multiPolygon )
429440
{
430441
createPolygonFromFragments();
431442
}
432443
}
433444
else if ( elementName == GML_NAMESPACE + NS_SEPARATOR + "MultiPoint" )
434445
{
446+
*mWkbType = QGis::WKBMultiPoint;
435447
if ( !mParseModeStack.empty() )
436448
{
437449
mParseModeStack.pop();
@@ -440,6 +452,7 @@ void QgsWFSData::endElement( const XML_Char* el )
440452
}
441453
else if ( elementName == GML_NAMESPACE + NS_SEPARATOR + "MultiLineString" )
442454
{
455+
*mWkbType = QGis::WKBMultiLineString;
443456
if ( !mParseModeStack.empty() )
444457
{
445458
mParseModeStack.pop();
@@ -448,6 +461,7 @@ void QgsWFSData::endElement( const XML_Char* el )
448461
}
449462
else if ( elementName == GML_NAMESPACE + NS_SEPARATOR + "MultiPolygon" )
450463
{
464+
*mWkbType = QGis::WKBMultiPolygon;
451465
if ( !mParseModeStack.empty() )
452466
{
453467
mParseModeStack.pop();

0 commit comments

Comments
 (0)