示例#1
0
    def testCalculateSourceDest(self):
        context = QgsCoordinateTransformContext()

        #empty context
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:3111'),
                QgsCoordinateReferenceSystem('EPSG:4283')),
            QgsDatumTransform.TransformPair(-1, -1))

        #add specific source/dest pair - should take precedence
        context.addSourceDestinationDatumTransform(
            QgsCoordinateReferenceSystem('EPSG:28356'),
            QgsCoordinateReferenceSystem('EPSG:4283'), 3, 4)
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:28356'),
                QgsCoordinateReferenceSystem('EPSG:4283')),
            QgsDatumTransform.TransformPair(3, 4))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:3111'),
                QgsCoordinateReferenceSystem('EPSG:4283')),
            QgsDatumTransform.TransformPair(-1, -1))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:28356'),
                QgsCoordinateReferenceSystem('EPSG:3111')),
            QgsDatumTransform.TransformPair(-1, -1))
        # check that reverse transforms are automatically supported
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:4283'),
                QgsCoordinateReferenceSystem('EPSG:28356')),
            QgsDatumTransform.TransformPair(4, 3))
    def testCalculateSourceDest(self):
        context = QgsCoordinateTransformContext()

        #empty context
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:3111'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         QgsDatumTransform.TransformPair(-1, -1))

        #add specific source/dest pair - should take precedence
        context.addSourceDestinationDatumTransform(QgsCoordinateReferenceSystem('EPSG:28356'),
                                                   QgsCoordinateReferenceSystem('EPSG:4283'),
                                                   3, 4)
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:28356'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         QgsDatumTransform.TransformPair(3, 4))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:3111'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         QgsDatumTransform.TransformPair(-1, -1))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:28356'),
                                                          QgsCoordinateReferenceSystem('EPSG:3111')),
                         QgsDatumTransform.TransformPair(-1, -1))
        # check that reverse transforms are automatically supported
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:4283'),
                                                          QgsCoordinateReferenceSystem('EPSG:28356')),
                         QgsDatumTransform.TransformPair(4, 3))
示例#3
0
    def testCalculate(self):
        context = QgsCoordinateTransformContext()

        #empty context
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:3111'),
                QgsCoordinateReferenceSystem('EPSG:4283')), (-1, -1))

        #add src transform
        context.addSourceDatumTransform(
            QgsCoordinateReferenceSystem('EPSG:28356'), 1)
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:3111'),
                QgsCoordinateReferenceSystem('EPSG:4283')), (-1, -1))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:28356'),
                QgsCoordinateReferenceSystem('EPSG:4283')), (1, -1))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:4283'),
                QgsCoordinateReferenceSystem('EPSG:28356')), (-1, -1))

        #add dest transform
        context.addDestinationDatumTransform(
            QgsCoordinateReferenceSystem('EPSG:4283'), 2)
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:3111'),
                QgsCoordinateReferenceSystem('EPSG:4326')), (-1, -1))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:3111'),
                QgsCoordinateReferenceSystem('EPSG:4283')), (-1, 2))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:4283'),
                QgsCoordinateReferenceSystem('EPSG:3111')), (-1, -1))

        #add specific source/dest pair - should take precedence
        context.addSourceDestinationDatumTransform(
            QgsCoordinateReferenceSystem('EPSG:28356'),
            QgsCoordinateReferenceSystem('EPSG:4283'), 3, 4)
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:28356'),
                QgsCoordinateReferenceSystem('EPSG:4283')), (3, 4))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:3111'),
                QgsCoordinateReferenceSystem('EPSG:4283')), (-1, 2))
        self.assertEqual(
            context.calculateDatumTransforms(
                QgsCoordinateReferenceSystem('EPSG:28356'),
                QgsCoordinateReferenceSystem('EPSG:3111')), (1, -1))
示例#4
0
def L(data):
    """Get the pipe length from QGIS"""

    if data.L is None:

        distance = qgis.core.QgsDistanceArea()

        layer = qgis.utils.plugins["XPSS"].params.pipes_vlay

        lyr_crs = layer.crs()

        elps = QgsProject.instance().ellipsoid()
        elps_crs = QgsCoordinateReferenceSystem()
        elps_crs.createFromUserInput(elps)
        logger.debugger("Map Ellipsoid: " + str(elps))

        #transform = iface.mapCanvas().mapSettings().transformContext()
        trans_context = QgsCoordinateTransformContext()
        trans_context.calculateDatumTransforms(lyr_crs, elps_crs)

        distance.setEllipsoid(elps)
        distance.setSourceCrs(lyr_crs, trans_context)
        units = qgis.core.QgsUnitTypes

        logger.debugger("units: " + str(units))

        #get_lst is the qepanet parameter field name for the attribute

        #sort_lst = map(str, sort_lst)  #convert the array of ints to an array of strings
        #df = self.pipe_fts.filter(get_lst, axis=1) #extract columns from qepanet data
        len_ = []
        features = layer.getFeatures()
        #logger.debugger("Converting from "+units.toString(units.DistanceMeters)+" to "+units.toString(calc_units)+".")
        #factor = QgsUnitTypes.fromUnitToUnitFactor(units.DistanceMeters, calc_units) ## TODO: Soft code
        #logger.debugger("Conversion factor: "+str(factor))

        for feature in features:
            #l_calc = distance.measureLength(feature.geometry())*factor
            #TODO: Soft code units
            l_calc = distance.measureLength(feature.geometry())
            len_.append(l_calc)  #extract length from the QgsFeature
            logger.debugger(feature['id'] + ": " + str(l_calc))

        data.L = np.array(len_) * LengthUnits['m']

        logger.debugger("L: " + str(data.L))

    return data.L.reshape((-1, 1))
    def testCalculate(self):
        context = QgsCoordinateTransformContext()

        #empty context
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:3111'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         (-1, -1))

        #add src transform
        context.addSourceDatumTransform(QgsCoordinateReferenceSystem('EPSG:28356'), 1)
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:3111'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         (-1, -1))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:28356'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         (1, -1))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:4283'),
                                                          QgsCoordinateReferenceSystem('EPSG:28356')),
                         (-1, -1))

        #add dest transform
        context.addDestinationDatumTransform(QgsCoordinateReferenceSystem('EPSG:4283'), 2)
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:3111'),
                                                          QgsCoordinateReferenceSystem('EPSG:4326')),
                         (-1, -1))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:3111'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         (-1, 2))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:4283'),
                                                          QgsCoordinateReferenceSystem('EPSG:3111')),
                         (-1, -1))

        #add specific source/dest pair - should take precedence
        context.addSourceDestinationDatumTransform(QgsCoordinateReferenceSystem('EPSG:28356'),
                                                   QgsCoordinateReferenceSystem('EPSG:4283'),
                                                   3, 4)
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:28356'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         (3, 4))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:3111'),
                                                          QgsCoordinateReferenceSystem('EPSG:4283')),
                         (-1, 2))
        self.assertEqual(context.calculateDatumTransforms(QgsCoordinateReferenceSystem('EPSG:28356'),
                                                          QgsCoordinateReferenceSystem('EPSG:3111')),
                         (1, -1))