Skip to content

Commit b49ada2

Browse files
committed
Always use full precision when exporting to SLD (fix #15176)
1 parent e95a8a9 commit b49ada2

File tree

6 files changed

+22
-20
lines changed

6 files changed

+22
-20
lines changed

src/core/qgsogcutils.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2268,7 +2268,7 @@ QDomElement QgsOgcUtilsExprToFilter::expressionLiteralToOgcFilter( const QgsExpr
22682268
value = QString::number( node->value().toInt() );
22692269
break;
22702270
case QVariant::Double:
2271-
value = QString::number( node->value().toDouble() );
2271+
value = qgsDoubleToString( node->value().toDouble() );
22722272
break;
22732273
case QVariant::String:
22742274
value = node->value().toString();
@@ -2713,7 +2713,7 @@ QDomElement QgsOgcUtilsSQLStatementToFilter::toOgcFilter( const QgsSQLStatement:
27132713
value = QString::number( node->value().toLongLong() );
27142714
break;
27152715
case QVariant::Double:
2716-
value = QString::number( node->value().toDouble() );
2716+
value = qgsDoubleToString( node->value().toDouble() );
27172717
break;
27182718
case QVariant::String:
27192719
value = node->value().toString();
@@ -3128,7 +3128,7 @@ QDomElement QgsOgcUtilsSQLStatementToFilter::toOgcFilter( const QgsSQLStatement:
31283128
distance = QString::number( lit->value().toLongLong() );
31293129
break;
31303130
case QVariant::Double:
3131-
distance = QString::number( lit->value().toDouble() );
3131+
distance = qgsDoubleToString( lit->value().toDouble() );
31323132
break;
31333133
case QVariant::String:
31343134
{

src/core/symbology-ng/qgsfillsymbollayerv2.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3306,7 +3306,7 @@ void QgsPointPatternFillSymbolLayer::toSld( QDomDocument &doc, QDomElement &elem
33063306
fillElem.appendChild( graphicFillElem );
33073307

33083308
// store distanceX, distanceY, displacementX, displacementY in a <VendorOption>
3309-
QString dist = QgsSymbolLayerV2Utils::encodePoint( QPointF( mDistanceX, mDistanceY ) );
3309+
QString dist = QgsSymbolLayerV2Utils::encodePoint( QPointF( mDistanceX, mDistanceY ) );
33103310
QDomElement distanceElem = QgsSymbolLayerV2Utils::createVendorOptionElement( doc, "distance", dist );
33113311
symbolizerElem.appendChild( distanceElem );
33123312

src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,16 @@ void QgsRendererRangeV2::toSld( QDomDocument &doc, QDomElement &element, QgsStri
157157

158158
QDomElement descrElem = doc.createElement( "se:Description" );
159159
QDomElement titleElem = doc.createElement( "se:Title" );
160-
QString descrStr = QString( "range: %1 - %2" ).arg( mLowerValue ).arg( mUpperValue );
160+
QString descrStr = QString( "range: %1 - %2" ).arg( qgsDoubleToString( mLowerValue ), qgsDoubleToString( mUpperValue ) );
161161
titleElem.appendChild( doc.createTextNode( !mLabel.isEmpty() ? mLabel : descrStr ) );
162162
descrElem.appendChild( titleElem );
163163
ruleElem.appendChild( descrElem );
164164

165165
// create the ogc:Filter for the range
166166
QString filterFunc = QString( "%1 > %2 AND %1 <= %3" )
167-
.arg( attrName.replace( '\"', "\"\"" ) )
168-
.arg( mLowerValue ).arg( mUpperValue );
167+
.arg( attrName.replace( '\"', "\"\"" ),
168+
qgsDoubleToString( mLowerValue ),
169+
qgsDoubleToString( mUpperValue ) );
169170
QgsSymbolLayerV2Utils::createFunctionElement( doc, ruleElem, filterFunc );
170171

171172
mSymbol->toSld( doc, ruleElem, props );

src/core/symbology-ng/qgslinesymbollayerv2.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ void QgsSimpleLineSymbolLayerV2::toSld( QDomDocument &doc, QDomElement &element,
417417
if ( !qgsDoubleNear( mOffset, 0.0 ) )
418418
{
419419
QDomElement perpOffsetElem = doc.createElement( "se:PerpendicularOffset" );
420-
perpOffsetElem.appendChild( doc.createTextNode( QString::number( mOffset ) ) );
420+
perpOffsetElem.appendChild( doc.createTextNode( qgsDoubleToString( mOffset ) ) );
421421
symbolizerElem.appendChild( perpOffsetElem );
422422
}
423423
}
@@ -1413,7 +1413,7 @@ void QgsMarkerLineSymbolLayerV2::toSld( QDomDocument &doc, QDomElement &element,
14131413
symbolizerElem.appendChild( QgsSymbolLayerV2Utils::createVendorOptionElement( doc, "placement", "points" ) );
14141414
break;
14151415
default:
1416-
gap = QString::number( mInterval );
1416+
gap = qgsDoubleToString( mInterval );
14171417
break;
14181418
}
14191419

@@ -1453,7 +1453,7 @@ void QgsMarkerLineSymbolLayerV2::toSld( QDomDocument &doc, QDomElement &element,
14531453
if ( !qgsDoubleNear( mOffset, 0.0 ) )
14541454
{
14551455
QDomElement perpOffsetElem = doc.createElement( "se:PerpendicularOffset" );
1456-
perpOffsetElem.appendChild( doc.createTextNode( QString::number( mOffset ) ) );
1456+
perpOffsetElem.appendChild( doc.createTextNode( qgsDoubleToString( mOffset ) ) );
14571457
symbolizerElem.appendChild( perpOffsetElem );
14581458
}
14591459
}

src/core/symbology-ng/qgssymbollayerv2utils.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ Qt::BrushStyle QgsSymbolLayerV2Utils::decodeSldBrushStyle( const QString& str )
366366

367367
QString QgsSymbolLayerV2Utils::encodePoint( QPointF point )
368368
{
369-
return QString( "%1,%2" ).arg( point.x() ).arg( point.y() );
369+
return QString( "%1,%2" ).arg( qgsDoubleToString( point.x() ), qgsDoubleToString( point.y() ) );
370370
}
371371

372372
QPointF QgsSymbolLayerV2Utils::decodePoint( const QString& str )
@@ -379,7 +379,8 @@ QPointF QgsSymbolLayerV2Utils::decodePoint( const QString& str )
379379

380380
QString QgsSymbolLayerV2Utils::encodeMapUnitScale( const QgsMapUnitScale& mapUnitScale )
381381
{
382-
return QString( "%1,%2,%3,%4,%5,%6" ).arg( mapUnitScale.minScale ).arg( mapUnitScale.maxScale )
382+
return QString( "%1,%2,%3,%4,%5,%6" ).arg( qgsDoubleToString( mapUnitScale.minScale ),
383+
qgsDoubleToString( mapUnitScale.maxScale ) )
383384
.arg( mapUnitScale.minSizeMMEnabled ? 1 : 0 )
384385
.arg( mapUnitScale.minSizeMM )
385386
.arg( mapUnitScale.maxSizeMMEnabled ? 1 : 0 )
@@ -1939,7 +1940,7 @@ void QgsSymbolLayerV2Utils::lineToSld( QDomDocument &doc, QDomElement &element,
19391940
element.appendChild( createSvgParameterElement( doc, "stroke-opacity", encodeSldAlpha( color.alpha() ) ) );
19401941
}
19411942
if ( width > 0 )
1942-
element.appendChild( createSvgParameterElement( doc, "stroke-width", QString::number( width ) ) );
1943+
element.appendChild( createSvgParameterElement( doc, "stroke-width", qgsDoubleToString( width ) ) );
19431944
if ( penJoinStyle )
19441945
element.appendChild( createSvgParameterElement( doc, "stroke-linejoin", encodeSldLineJoinStyle( *penJoinStyle ) ) );
19451946
if ( penCapStyle )
@@ -1949,7 +1950,7 @@ void QgsSymbolLayerV2Utils::lineToSld( QDomDocument &doc, QDomElement &element,
19491950
{
19501951
element.appendChild( createSvgParameterElement( doc, "stroke-dasharray", encodeSldRealVector( *pattern ) ) );
19511952
if ( !qgsDoubleNear( dashOffset, 0.0 ) )
1952-
element.appendChild( createSvgParameterElement( doc, "stroke-dashoffset", QString::number( dashOffset ) ) );
1953+
element.appendChild( createSvgParameterElement( doc, "stroke-dashoffset", qgsDoubleToString( dashOffset ) ) );
19531954
}
19541955
}
19551956

@@ -2100,7 +2101,7 @@ void QgsSymbolLayerV2Utils::externalGraphicToSld( QDomDocument &doc, QDomElement
21002101
if ( size >= 0 )
21012102
{
21022103
QDomElement sizeElem = doc.createElement( "se:Size" );
2103-
sizeElem.appendChild( doc.createTextNode( QString::number( size ) ) );
2104+
sizeElem.appendChild( doc.createTextNode( qgsDoubleToString( size ) ) );
21042105
element.appendChild( sizeElem );
21052106
}
21062107
}
@@ -2155,7 +2156,7 @@ void QgsSymbolLayerV2Utils::externalMarkerToSld( QDomDocument &doc, QDomElement
21552156
if ( !qgsDoubleNear( size, 0.0 ) && size > 0 )
21562157
{
21572158
QDomElement sizeElem = doc.createElement( "se:Size" );
2158-
sizeElem.appendChild( doc.createTextNode( QString::number( size ) ) );
2159+
sizeElem.appendChild( doc.createTextNode( qgsDoubleToString( size ) ) );
21592160
element.appendChild( sizeElem );
21602161
}
21612162
}
@@ -2242,7 +2243,7 @@ void QgsSymbolLayerV2Utils::wellKnownMarkerToSld( QDomDocument &doc, QDomElement
22422243
if ( !qgsDoubleNear( size, 0.0 ) && size > 0 )
22432244
{
22442245
QDomElement sizeElem = doc.createElement( "se:Size" );
2245-
sizeElem.appendChild( doc.createTextNode( QString::number( size ) ) );
2246+
sizeElem.appendChild( doc.createTextNode( qgsDoubleToString( size ) ) );
22462247
element.appendChild( sizeElem );
22472248
}
22482249
}
@@ -2352,10 +2353,10 @@ void QgsSymbolLayerV2Utils::createDisplacementElement( QDomDocument &doc, QDomEl
23522353
element.appendChild( displacementElem );
23532354

23542355
QDomElement dispXElem = doc.createElement( "se:DisplacementX" );
2355-
dispXElem.appendChild( doc.createTextNode( QString::number( offset.x() ) ) );
2356+
dispXElem.appendChild( doc.createTextNode( qgsDoubleToString( offset.x() ) ) );
23562357

23572358
QDomElement dispYElem = doc.createElement( "se:DisplacementY" );
2358-
dispYElem.appendChild( doc.createTextNode( QString::number( offset.y() ) ) );
2359+
dispYElem.appendChild( doc.createTextNode( qgsDoubleToString( offset.y() ) ) );
23592360

23602361
displacementElem.appendChild( dispXElem );
23612362
displacementElem.appendChild( dispYElem );

src/core/symbology-ng/qgssymbolv2.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ void QgsSymbolV2::toSld( QDomDocument &doc, QDomElement &element, QgsStringMap p
629629
props[ "alpha" ] = QString::number( alpha() );
630630
double scaleFactor = 1.0;
631631
props[ "uom" ] = QgsSymbolLayerV2Utils::encodeSldUom( outputUnit(), &scaleFactor );
632-
props[ "uomScale" ] = ( !qgsDoubleNear( scaleFactor, 1.0 ) ? QString::number( scaleFactor ) : "" );
632+
props[ "uomScale" ] = ( !qgsDoubleNear( scaleFactor, 1.0 ) ? qgsDoubleToString( scaleFactor ) : "" );
633633

634634
for ( QgsSymbolLayerV2List::const_iterator it = mLayers.begin(); it != mLayers.end(); ++it )
635635
{

0 commit comments

Comments
 (0)