def onNewPosition(self, fix, pos, depth, altitude): s = str() if fix > 0: s = strftime('%H:%M:%S ', gmtime(fix)) else: s = '--:--:-- ' if self.format == 0: s += "{:f} {:f}".format(pos.y(), pos.x()) elif self.format == 1: s += ', '.join(QgsCoordinateFormatter.format(pos, QgsCoordinateFormatter.FormatDegreesMinutes, 4, self.withSuff ).rsplit(',')[::-1]) else: s += ', '.join(QgsCoordinateFormatter.format(pos, QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 2, self.withSuff ).rsplit(',')[::-1]) if depth > -9999: s += "\nd = {:.1f}".format(depth) if altitude > -9999: if depth > -9999: s += " alt = {:.1f}".format(altitude) else: s += "\nalt = {:.1f}".format(altitude) self.posLabel.setText(s) if self.timedOut: if fix > self.lastFix: self.posLabel.setStyleSheet('background: lime; font-size: 8pt; color: black;') self.timedOut = False self.lastFix = fix
def posToStr(self, pos): if self.format == 0: return '{:.6f}, {:.6f}'.format(pos.y(), pos.x()) if self.format == 1: return ', '.join(QgsCoordinateFormatter.format(pos, QgsCoordinateFormatter.FormatDegreesMinutes, 4).rsplit(',')[::-1]) if self.format == 2: return ', '.join(QgsCoordinateFormatter.format(pos, QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 2).rsplit(',')[::-1])
def posToStr(self, pos): if self.format == 0: return "{:.6f}".format(pos.x()), "{:.6f}".format(pos.y()) if self.format == 1: return QgsCoordinateFormatter.format(pos, QgsCoordinateFormatter.FormatDegreesMinutes, 4).split(',') if self.format == 2: return QgsCoordinateFormatter.format(pos, QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 2).split(',')
def testFormatLocale(self): """Test formatting with locales that use comma as decimal separator""" QLocale.setDefault(QLocale(QLocale.Italian)) self.assertEqual( QgsCoordinateFormatter.formatY( 20, QgsCoordinateFormatter.FormatDecimalDegrees, 2), "20,00°N") self.assertEqual( QgsCoordinateFormatter.formatX( 20, QgsCoordinateFormatter.FormatDecimalDegrees, 2), "20,00°E") self.assertEqual( QgsCoordinateFormatter.formatY( 20.12345678, QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 4), "20°7′24,4444″N") self.assertEqual( QgsCoordinateFormatter.formatX( 20.12345678, QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 4), "20°7′24,4444″E") # formatting x/y as pair self.assertEqual(QgsCoordinateFormatter.asPair(20, 30, 0), '20 30') self.assertEqual(QgsCoordinateFormatter.asPair(20, -30, 0), '20 -30') self.assertEqual(QgsCoordinateFormatter.asPair(20.111, 10.999, 0), '20 11') self.assertEqual(QgsCoordinateFormatter.asPair(20.111, 10.999, 2), '20,11 11,00') self.assertEqual(QgsCoordinateFormatter.asPair(20, 10, 2), '20,00 10,00') self.assertEqual(QgsCoordinateFormatter.asPair(20, -10, 2), '20,00 -10,00') self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.1111, 30.2111), QgsCoordinateFormatter.FormatPair, 2), '20,11 30,21') self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.111, 30.211), QgsCoordinateFormatter.FormatPair, 2), '20,11 30,21') self.assertEqual( QgsCoordinateFormatter.format( QgsPointXY(20.111, 30.211), QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 2), '20°6′39,60″E 30°12′39,60″N') self.assertEqual( QgsCoordinateFormatter.format( QgsPointXY(20.1111, 30.2111), QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 2, QgsCoordinateFormatter.FlagDegreesUseStringSuffix | QgsCoordinateFormatter.FlagDegreesPadMinutesSeconds), '20°06′39,96″E 30°12′39,96″N')
def testFormat(self): self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 0), '20,30') self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 1), '20.1,30.2') self.assertEqual( QgsCoordinateFormatter.format( QgsPointXY(20, 30), QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 0), '20°0′0″E,30°0′0″N')
def testSubstitutionMap(self): """Test that we can use degree symbols in substitutions. """ # Create a point and convert it to text containing a degree symbol. myPoint = QgsPointXY(12.3, -33.33) myCoordinates = QgsCoordinateFormatter.format( myPoint, QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 2) myTokens = myCoordinates.split(',') myLongitude = myTokens[0] myLatitude = myTokens[1] myText = 'Latitude: %s, Longitude: %s' % (myLatitude, myLongitude) # Load the composition with the substitutions myComposition = QgsComposition(QgsProject.instance()) mySubstitutionMap = {'replace-me': myText} myFile = os.path.join(TEST_DATA_DIR, 'template-for-substitution.qpt') with open(myFile) as f: myTemplateContent = f.read() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument, mySubstitutionMap) # We should be able to get map0 myMap = myComposition.getComposerMapById(0) myMessage = ('Map 0 could not be found in template %s', myFile) assert myMap is not None, myMessage
def testSubstitutionMap(self): """Test that we can use degree symbols in substitutions. """ # Create a point and convert it to text containing a degree symbol. myPoint = QgsPointXY(12.3, -33.33) myCoordinates = QgsCoordinateFormatter.format(myPoint, QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 2) myTokens = myCoordinates.split(',') myLongitude = myTokens[0] myLatitude = myTokens[1] myText = 'Latitude: %s, Longitude: %s' % (myLatitude, myLongitude) # Load the composition with the substitutions myComposition = QgsComposition(QgsProject.instance()) mySubstitutionMap = {'replace-me': myText} myFile = os.path.join(TEST_DATA_DIR, 'template-for-substitution.qpt') with open(myFile) as f: myTemplateContent = f.read() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument, mySubstitutionMap) # We should be able to get map0 myMap = myComposition.getComposerMapById(0) myMessage = ('Map 0 could not be found in template %s', myFile) assert myMap is not None, myMessage
def testFormat(self): self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 0), '20,30') self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 1), '20.1,30.2') self.assertEqual( QgsCoordinateFormatter.format( QgsPointXY(20, 30), QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 0), '20°0′0″E,30°0′0″N') self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 1, order=Qgis.CoordinateOrder.XY), '20.1,30.2') self.assertEqual( QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 1, order=Qgis.CoordinateOrder.YX), '30.2,20.1') self.assertEqual( QgsCoordinateFormatter.format( QgsPointXY(20, 30), QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 0, order=Qgis.CoordinateOrder.YX), '30°0′0″N,20°0′0″E')
def testFormat(self): self.assertEqual(QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 0), '20,30') self.assertEqual(QgsCoordinateFormatter.format(QgsPointXY(20.1, 30.2), QgsCoordinateFormatter.FormatPair, 1), '20.1,30.2') self.assertEqual(QgsCoordinateFormatter.format(QgsPointXY(20, 30), QgsCoordinateFormatter.FormatDegreesMinutesSeconds, 0), '20°0′0″E,30°0′0″N')