void QgsMapSettings::writeXML( QDomNode& theNode, QDomDocument& theDoc ) { // units theNode.appendChild( QgsXmlUtils::writeMapUnits( mapUnits(), theDoc ) ); // Write current view extents theNode.appendChild( QgsXmlUtils::writeRectangle( extent(), theDoc ) ); // Write current view rotation QDomElement rotNode = theDoc.createElement( "rotation" ); rotNode.appendChild( theDoc.createTextNode( qgsDoubleToString( rotation() ) ) ); theNode.appendChild( rotNode ); // projections enabled QDomElement projNode = theDoc.createElement( "projections" ); projNode.appendChild( theDoc.createTextNode( QString::number( hasCrsTransformEnabled() ) ) ); theNode.appendChild( projNode ); // destination CRS QDomElement srsNode = theDoc.createElement( "destinationsrs" ); theNode.appendChild( srsNode ); destinationCrs().writeXML( srsNode, theDoc ); //render map tile QDomElement renderMapTileElem = theDoc.createElement( "rendermaptile" ); QDomText renderMapTileText = theDoc.createTextNode( testFlag( QgsMapSettings::RenderMapTile ) ? "1" : "0" ); renderMapTileElem.appendChild( renderMapTileText ); theNode.appendChild( renderMapTileElem ); mDatumTransformStore.writeXML( theNode, theDoc ); }
QgsRectangle QgsMapSettings::computeExtentForScale( const QgsPointXY &point, double scale, const QgsCoordinateReferenceSystem &sourceCrs ) const { QgsPointXY center = QgsCoordinateTransform( sourceCrs, destinationCrs(), mTransformContext ).transform( point ); // Output width in inches double outWIn = outputSize().width() / double( outputDpi() ); // Desired visible width (honouring scale) double scaledWIn = outWIn * scale; if ( mapUnits() == QgsUnitTypes::DistanceDegrees ) { // Start with an 1x1 extent around the center QgsRectangle ext( center.x() - 0.5, center.y() - 0.5, center.x() + 0.5, center.y() + 0.5 ); // Get scale at extent, and then scale extent to the desired scale double testScale = mScaleCalculator.calculate( ext, outputSize().width() ); ext.scale( scale / testScale ); return ext; } // Conversion from inches to mapUnits double conversionFactor = 12 * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::DistanceFeet, mapUnits() ); double delta = 0.5 * scaledWIn * conversionFactor; return QgsRectangle( center.x() - delta, center.y() - delta, center.x() + delta, center.y() + delta ); }
void QgsMapSettings::writeXml( QDomNode &node, QDomDocument &doc ) { // units node.appendChild( QgsXmlUtils::writeMapUnits( mapUnits(), doc ) ); // Write current view extents node.appendChild( QgsXmlUtils::writeRectangle( extent(), doc ) ); // Write current view rotation QDomElement rotNode = doc.createElement( QStringLiteral( "rotation" ) ); rotNode.appendChild( doc.createTextNode( qgsDoubleToString( rotation() ) ) ); node.appendChild( rotNode ); // destination CRS if ( mDestCRS.isValid() ) { QDomElement srsNode = doc.createElement( QStringLiteral( "destinationsrs" ) ); node.appendChild( srsNode ); mDestCRS.writeXml( srsNode, doc ); } //render map tile QDomElement renderMapTileElem = doc.createElement( QStringLiteral( "rendermaptile" ) ); QDomText renderMapTileText = doc.createTextNode( testFlag( QgsMapSettings::RenderMapTile ) ? "1" : "0" ); renderMapTileElem.appendChild( renderMapTileText ); node.appendChild( renderMapTileElem ); }
void QgsCoordinateReferenceSystem::debugPrint() { QgsDebugMsg( "***SpatialRefSystem***" ); QgsDebugMsg( "* Valid : " + ( mIsValidFlag ? QString( "true" ) : QString( "false" ) ) ); QgsDebugMsg( "* SrsId : " + QString::number( mSrsId ) ); QgsDebugMsg( "* Proj4 : " + toProj4() ); QgsDebugMsg( "* WKT : " + toWkt() ); QgsDebugMsg( "* Desc. : " + mDescription ); if ( mapUnits() == QGis::Meters ) { QgsDebugMsg( "* Units : meters" ); } else if ( mapUnits() == QGis::Feet ) { QgsDebugMsg( "* Units : feet" ); } else if ( mapUnits() == QGis::Degrees ) { QgsDebugMsg( "* Units : degrees" ); } }