Skip to content

Commit 60d2eae

Browse files
author
jef
committed
catch more projection errors
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@12665 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 18e8e57 commit 60d2eae

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

src/app/legend/qgslegendlayer.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,11 @@ void QgsLegendLayer::saveAsShapefileGeneral( bool saveOnlySelection )
606606
QMessageBox::warning( 0, tr( "Error" ),
607607
tr( "Creation of an attribute failed" ) );
608608
break;
609+
610+
case QgsVectorFileWriter::ErrProjection:
611+
QMessageBox::warning( 0, tr( "Error" ),
612+
tr( "Reprojection failed" ) );
613+
break;
609614
}
610615
}
611616

src/core/qgsvectorfilewriter.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,22 @@ QgsVectorFileWriter::writeAsShapefile( QgsVectorLayer* layer,
422422

423423
if ( shallTransform )
424424
{
425-
fet.geometry()->transform( *ct );
425+
try
426+
{
427+
fet.geometry()->transform( *ct );
428+
}
429+
catch ( QgsCsException &e )
430+
{
431+
delete ct;
432+
delete writer;
433+
434+
QString msg( "Failed to transform a point while drawing a feature of type '"
435+
+ fet.typeName() + "'. Writing stopped." );
436+
msg += cse.what();
437+
QgsLogger::warning( msg );
438+
439+
return ErrProjection;
440+
}
426441
}
427442
writer->addFeature( fet );
428443
}

src/core/qgsvectorfilewriter.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ class CORE_EXPORT QgsVectorFileWriter
4949
ErrCreateDataSource,
5050
ErrCreateLayer,
5151
ErrAttributeTypeUnsupported,
52-
ErrAttributeCreationFailed
52+
ErrAttributeCreationFailed,
53+
ErrProjection // added in 1.5
5354
};
5455

5556
/** Write contents of vector layer to a shapefile */

src/core/qgsvectorlayer.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,11 +1024,11 @@ bool QgsVectorLayer::draw( QgsRenderContext& rendererContext )
10241024
catch ( QgsCsException &cse )
10251025
{
10261026
QString msg( "Failed to transform a point while drawing a feature of type '"
1027-
+ fet.typeName() + "'. Ignoring this feature." );
1027+
+ fet.typeName() + "'. Rendering stopped." );
10281028
msg += cse.what();
10291029
QgsLogger::warning( msg );
1030+
return false;
10301031
}
1031-
10321032
}
10331033
else
10341034
{
@@ -1040,7 +1040,7 @@ bool QgsVectorLayer::draw( QgsRenderContext& rendererContext )
10401040
QgsDebugMsg( QString( "Cached %1 geometries." ).arg( mCachedGeometries.count() ) );
10411041
}
10421042

1043-
return TRUE; // Assume success always
1043+
return true; // Assume success always
10441044
}
10451045

10461046
void QgsVectorLayer::deleteCachedGeometries()
@@ -1942,7 +1942,7 @@ int QgsVectorLayer::addIsland( const QList<QgsPoint>& ring )
19421942
}
19431943

19441944
//look if id of selected feature belongs to an added feature
1945-
/*
1945+
#if 0
19461946
for ( QgsFeatureList::iterator addedIt = mAddedFeatures.begin(); addedIt != mAddedFeatures.end(); ++addedIt )
19471947
{
19481948
if ( addedIt->id() == selectedFeatureId )
@@ -1951,7 +1951,7 @@ int QgsVectorLayer::addIsland( const QList<QgsPoint>& ring )
19511951
mCachedGeometries[selectedFeatureId] = *addedIt->geometry();
19521952
}
19531953
}
1954-
*/
1954+
#endif
19551955

19561956
//is the feature contained in the view extent (mCachedGeometries) ?
19571957
QgsGeometryMap::iterator cachedIt = mCachedGeometries.find( selectedFeatureId );
@@ -2000,15 +2000,15 @@ int QgsVectorLayer::translateFeature( int featureId, double dx, double dy )
20002000
}
20012001

20022002
//look if id of selected feature belongs to an added feature
2003-
/*
2003+
#if 0
20042004
for ( QgsFeatureList::iterator addedIt = mAddedFeatures.begin(); addedIt != mAddedFeatures.end(); ++addedIt )
20052005
{
20062006
if ( addedIt->id() == featureId )
20072007
{
20082008
return addedIt->geometry()->translate( dx, dy );
20092009
}
20102010
}
2011-
*/
2011+
#endif
20122012

20132013
//else look in mCachedGeometries to make access faster
20142014
QgsGeometryMap::iterator cachedIt = mCachedGeometries.find( featureId );

0 commit comments

Comments
 (0)