def autoSetCoordinateSystem(self):
        if self.mcboRasterLayer.count() == 0:
            return
        self.cleanMessageBars()
        raster_lyr = self.mcboRasterLayer.currentLayer()

        raster_utm_crs = crs.getProjectedCRSForXY(
            raster_lyr.extent().xMinimum(),
            raster_lyr.extent().yMinimum(),
            int(raster_lyr.crs().authid().replace('EPSG:', '')))
        self.outQgsCRS = None

        if raster_utm_crs is not None:
            raster_crs = QgsCoordinateReferenceSystem('EPSG:{}'.format(
                raster_utm_crs.epsg_number))
            self.outQgsCRS = raster_crs

        if self.outQgsCRS is not None:
            self.lblOutCRS.setText('{}  -  {}'.format(
                self.outQgsCRS.description(), self.outQgsCRS.authid()))
            self.lblOutCRSTitle.setStyleSheet('color:black')
            self.lblOutCRS.setStyleSheet('color:black')
        else:
            self.lblOutCRSTitle.setStyleSheet('color:red')
            self.lblOutCRS.setStyleSheet('color:red')
            self.lblOutCRS.setText('Unspecified')
            self.send_to_messagebar(
                'Auto detect coordinate system Failed. Check coordinate system of input raster layer',
                level=QgsMessageBar.CRITICAL,
                duration=5)
        return
예제 #2
0
    def test_getProjectedCRSForXY(self):

        # wgs84 edge of z54-55
        result = getProjectedCRSForXY(143.95231, -37.79412, 4326)
        self.assertEqual(EPSG_28354_WKT[:154], result.srs.ExportToWkt()[:154])

        # Same point as above but in AGD66
        result = getProjectedCRSForXY(143.95099, -37.79561, 4202)
        self.assertEqual(result.epsg_number, 28354)

        # a New Zealand point
        result = getProjectedCRSForXY(169.796934, -44.380541)
        self.assertEqual(result.epsg_number, 2193)
        self.assertEqual(NZ_WKT[:183], result.crs_wkt[:183])

        # A northern hemisphere point
        result = getProjectedCRSForXY(143.95099, 37.79561, 4326)
        self.assertEqual(result.epsg_number, 32654)

        # a southern hemisphere point outside australia
        result = getProjectedCRSForXY(165.95099, -37.79561, 4326)
        self.assertEqual(result.epsg_number, 32758)
예제 #3
0
    def test_getProjectedCRSForXY(self):
        result = getProjectedCRSForXY(143.95231, -37.79412,
                                      4326)  # wgs84 edge of z54-55
        self.assertEqual(EPSG_28354_WKT, result.srs.ExportToWkt())

        result = getProjectedCRSForXY(143.95099, -37.79561,
                                      4202)  # Same point as above but in AGD66
        self.assertEqual(result.epsg_number, 28354)

        # a New Zealand point
        result = getProjectedCRSForXY(169.796934, -44.380541)
        self.assertEqual(result.epsg_number, 2193)
        self.assertEqual(NZ_WKT, result.crs_wkt)

        # A northern hemisphere point
        result = getProjectedCRSForXY(143.95099, 37.79561, 4326)
        self.assertEqual(result.epsg_number, 32654)
        self.assertIn(
            'PROJCS["UTM Zone 54, Northern Hemisphere",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84"',
            result.crs_wkt)

        # a southern hemisphere point outside australia
        result = getProjectedCRSForXY(165.95099, -37.79561, 4326)
        self.assertEqual(result.epsg_number, 32758)
예제 #4
0
def get_UTM_Coordinate_System(x, y, epsg):
    """ Determine a utm coordinate system either from coordinates"""
    if epsg == '':
        return QgsCoordinateReferenceSystem()
    
    if isinstance(epsg, six.string_types):
        epsg = int(epsg.upper().replace('EPSG:', ''))

    utm_crs = crs.getProjectedCRSForXY(x, y, epsg)

    if utm_crs is not None:
        out_crs = QgsCoordinateReferenceSystem().fromEpsgId(utm_crs.epsg_number)

    if out_crs is not None:
        return out_crs
    else:
        # self.send_to_messagebar(
        #     'Auto detect coordinate system Failed. Check coordinate system of input raster layer',
        #     level=Qgis.Critical, duration=5)
        return