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
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)
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)
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