Skip to content

Commit c131ea3

Browse files
author
jef
committed
fix #2426: dateline split
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@15754 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 386c5d6 commit c131ea3

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

src/core/qgscoordinatetransform.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,8 @@ QgsRectangle QgsCoordinateTransform::transformBoundingBox( const QgsRectangle re
398398

399399
for ( int i = 0; i < numP * numP; i++ )
400400
{
401-
bb_rect.combineExtentWith( x[i], y[i] );
401+
if ( qIsFinite( x[i] ) && qIsFinite( y[i] ) )
402+
bb_rect.combineExtentWith( x[i], y[i] );
402403
}
403404

404405
QgsDebugMsg( "Projected extent: " + QString(( bb_rect.toString() ).toLocal8Bit().data() ) );
@@ -488,7 +489,7 @@ void QgsCoordinateTransform::transformCoords( const int& numPoints, double *x, d
488489

489490
QgsDebugMsg( "throwing exception" );
490491

491-
throw QgsCsException( msg );
492+
throw QgsCsException( msg );
492493
}
493494

494495
// if the result is lat/long, convert the results from radians back
@@ -529,13 +530,13 @@ bool QgsCoordinateTransform::readXML( QDomNode & theNode )
529530
bool QgsCoordinateTransform::writeXML( QDomNode & theNode, QDomDocument & theDoc )
530531
{
531532
QDomElement myNodeElement = theNode.toElement();
532-
QDomElement myTransformElement = theDoc.createElement( "coordinatetransform" );
533+
QDomElement myTransformElement = theDoc.createElement( "coordinatetransform" );
533534

534-
QDomElement mySourceElement = theDoc.createElement( "sourcesrs" );
535+
QDomElement mySourceElement = theDoc.createElement( "sourcesrs" );
535536
mSourceCRS.writeXML( mySourceElement, theDoc );
536537
myTransformElement.appendChild( mySourceElement );
537538

538-
QDomElement myDestElement = theDoc.createElement( "destinationsrs" );
539+
QDomElement myDestElement = theDoc.createElement( "destinationsrs" );
539540
mDestCRS.writeXML( myDestElement, theDoc );
540541
myTransformElement.appendChild( myDestElement );
541542

src/core/qgsmaprenderer.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,8 @@ void QgsMapRenderer::render( QPainter* painter )
389389
split = splitLayersExtent( ml, r1, r2 );
390390
ct = new QgsCoordinateTransform( ml->crs(), *mDestCRS );
391391
mRenderContext.setExtent( r1 );
392+
QgsDebugMsg( " extent 1: " + r1.toString() );
393+
QgsDebugMsg( " extent 2: " + r2.toString() );
392394
if ( !r1.isFinite() || !r2.isFinite() ) //there was a problem transforming the extent. Skip the layer
393395
{
394396
continue;
@@ -715,16 +717,15 @@ bool QgsMapRenderer::splitLayersExtent( QgsMapLayer* layer, QgsRectangle& extent
715717
QgsPoint ur = tr.transform( extent.xMaximum(), extent.yMaximum(),
716718
QgsCoordinateTransform::ReverseTransform );
717719

720+
extent = tr.transformBoundingBox( extent, QgsCoordinateTransform::ReverseTransform );
721+
718722
if ( ll.x() > ur.x() )
719723
{
720-
extent.set( ll, QgsPoint( splitCoord, ur.y() ) );
721-
r2.set( QgsPoint( -splitCoord, ll.y() ), ur );
724+
r2 = extent;
725+
extent.setXMinimum( splitCoord );
726+
r2.setXMaximum( splitCoord );
722727
split = true;
723728
}
724-
else // no need to split
725-
{
726-
extent = tr.transformBoundingBox( extent, QgsCoordinateTransform::ReverseTransform );
727-
}
728729
}
729730
else // can't cross 180
730731
{

src/core/qgsvectorlayer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,8 @@ void QgsVectorLayer::drawRendererV2( QgsRenderContext& rendererContext, bool lab
785785
++featureCount;
786786
#endif //Q_WS_MAC
787787
}
788+
789+
QgsDebugMsg( QString( "Total features processed %1" ).arg( featureCount ) );
788790
}
789791

790792
void QgsVectorLayer::drawRendererV2Levels( QgsRenderContext& rendererContext, bool labeling )
@@ -1106,6 +1108,8 @@ bool QgsVectorLayer::draw( QgsRenderContext& rendererContext )
11061108
.arg( fet.typeName() ).arg( cse.what() ) );
11071109
return false;
11081110
}
1111+
1112+
QgsDebugMsg( QString( "Total features processed %1" ).arg( featureCount ) );
11091113
}
11101114
else
11111115
{

0 commit comments

Comments
 (0)