1
|
Index: src/gui/qgsmapcanvas.cpp
|
2
|
===================================================================
|
3
|
--- src/gui/qgsmapcanvas.cpp (revision 10504)
|
4
|
+++ src/gui/qgsmapcanvas.cpp (working copy)
|
5
|
@@ -418,23 +418,25 @@
|
6
|
//create a world file to go with the image...
|
7
|
QgsRectangle myRect = mMapRenderer->extent();
|
8
|
QString myHeader;
|
9
|
+ // note: use 17 places of precision for all numbers output
|
10
|
//Pixel XDim
|
11
|
- myHeader += QString::number( mapUnitsPerPixel() ) + "\r\n";
|
12
|
+ myHeader += QString::number( mapUnitsPerPixel(), 'g', 17 ) + "\r\n";
|
13
|
//Rotation on y axis - hard coded
|
14
|
myHeader += "0 \r\n";
|
15
|
//Rotation on x axis - hard coded
|
16
|
myHeader += "0 \r\n";
|
17
|
//Pixel YDim - almost always negative - see
|
18
|
//http://en.wikipedia.org/wiki/World_file#cite_note-2
|
19
|
- myHeader += "-" + QString::number( mapUnitsPerPixel() ) + "\r\n";
|
20
|
- //Origin X (top left corner)
|
21
|
- myHeader += QString::number( myRect.xMinimum() ) + "\r\n";
|
22
|
- //Origin Y (top left corner)
|
23
|
- myHeader += QString::number( myRect.yMaximum() ) + "\r\n";
|
24
|
+ myHeader += "-" + QString::number( mapUnitsPerPixel(), 'g', 17 ) + "\r\n";
|
25
|
+ //Origin X (center of top left cell)
|
26
|
+ myHeader += QString::number( myRect.xMinimum() + ( mapUnitsPerPixel() / 2 ), 'g', 17 ) + "\r\n";
|
27
|
+ //Origin Y (center of top left cell)
|
28
|
+ myHeader += QString::number( myRect.yMaximum() - ( mapUnitsPerPixel() / 2 ), 'g', 17 ) + "\r\n";
|
29
|
QFileInfo myInfo = QFileInfo( theFileName );
|
30
|
- QString myWorldFileName = myInfo.absolutePath() + QDir::separator() + myInfo.baseName() + "." + theFormat + "w";
|
31
|
+ // allow dotted names
|
32
|
+ QString myWorldFileName = myInfo.absolutePath() + QDir::separator() + myInfo.completeBaseName() + "." + theFormat + "w";
|
33
|
QFile myWorldFile( myWorldFileName );
|
34
|
- if ( !myWorldFile.open( QIODevice::WriteOnly | QIODevice::Text ) )
|
35
|
+ if ( !myWorldFile.open( QIODevice::WriteOnly ) ) //don't use QIODevice::Text
|
36
|
{
|
37
|
return;
|
38
|
}
|