[QGIS Commit] r12615 - trunk/qgis/src/core
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Thu Dec 24 10:59:55 EST 2009
Author: jef
Date: 2009-12-24 10:59:54 -0500 (Thu, 24 Dec 2009)
New Revision: 12615
Modified:
trunk/qgis/src/core/qgsvectorlayer.cpp
Log:
catch projection exceptions while V2 rendering
Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp 2009-12-24 13:30:18 UTC (rev 12614)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp 2009-12-24 15:59:54 UTC (rev 12615)
@@ -39,6 +39,7 @@
#include <QPolygonF>
#include <QSettings>
#include <QString>
+#include <QDomNode>
#include "qgsvectorlayer.h"
@@ -703,23 +704,33 @@
QgsFeature fet;
while ( nextFeature( fet ) )
{
- bool sel = mSelectedFeatureIds.contains( fet.id() );
- bool drawMarker = ( mEditable && ( !vertexMarkerOnlyForSelection || sel ) );
+ try
+ {
+ bool sel = mSelectedFeatureIds.contains( fet.id() );
+ bool drawMarker = ( mEditable && ( !vertexMarkerOnlyForSelection || sel ) );
- // render feature
- if ( sel )
- selRenderer->renderFeature( fet, rendererContext, -1, drawMarker );
- else
- mRendererV2->renderFeature( fet, rendererContext, -1, drawMarker );
+ // render feature
+ if ( sel )
+ selRenderer->renderFeature( fet, rendererContext, -1, drawMarker );
+ else
+ mRendererV2->renderFeature( fet, rendererContext, -1, drawMarker );
- // labeling - register feature
- if ( labeling && mRendererV2->symbolForFeature( fet ) != NULL )
- rendererContext.labelingEngine()->registerFeature( this, fet );
+ // labeling - register feature
+ if ( labeling && mRendererV2->symbolForFeature( fet ) != NULL )
+ rendererContext.labelingEngine()->registerFeature( this, fet );
- if ( mEditable )
+ if ( mEditable )
+ {
+ // Cache this for the use of (e.g.) modifying the feature's uncommitted geometry.
+ mCachedGeometries[fet.id()] = *fet.geometry();
+ }
+ }
+ catch ( const QgsCsException &cse )
{
- // Cache this for the use of (e.g.) modifying the feature's uncommitted geometry.
- mCachedGeometries[fet.id()] = *fet.geometry();
+ QString msg( "Failed to transform a point while drawing a feature of type '"
+ + fet.typeName() + "'. Ignoring this feature." );
+ msg += cse.what();
+ QgsLogger::warning( msg );
}
}
@@ -809,10 +820,20 @@
// maybe vertex markers should be drawn only during the last pass...
bool drawMarker = ( mEditable && ( !vertexMarkerOnlyForSelection || sel ) );
- if ( sel )
- selRenderer->renderFeature( *fit, rendererContext, -1, drawMarker );
- else
- mRendererV2->renderFeature( *fit, rendererContext, layer, drawMarker );
+ try
+ {
+ if ( sel )
+ selRenderer->renderFeature( *fit, rendererContext, -1, drawMarker );
+ else
+ mRendererV2->renderFeature( *fit, rendererContext, layer, drawMarker );
+ }
+ catch ( const QgsCsException &cse )
+ {
+ QString msg( "Failed to transform a point while drawing a feature of type '"
+ + fet.typeName() + "'. Ignoring this feature." );
+ msg += cse.what();
+ QgsLogger::warning( msg );
+ }
}
}
}
More information about the QGIS-commit
mailing list