Exemple #1
0
 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
Exemple #2
0
 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])
Exemple #3
0
 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')
Exemple #5
0
 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')
Exemple #6
0
    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
Exemple #7
0
    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')