def testDistanceToAreaUnit(self): """Test distanceToAreaUnit conversion""" expected = { QgsUnitTypes.DistanceMeters: QgsUnitTypes.AreaSquareMeters, QgsUnitTypes.DistanceKilometers: QgsUnitTypes.AreaSquareKilometers, QgsUnitTypes.DistanceFeet: QgsUnitTypes.AreaSquareFeet, QgsUnitTypes.DistanceYards: QgsUnitTypes.AreaSquareYards, QgsUnitTypes.DistanceMiles: QgsUnitTypes.AreaSquareMiles, QgsUnitTypes.DistanceDegrees: QgsUnitTypes.AreaSquareDegrees, QgsUnitTypes.DistanceCentimeters: QgsUnitTypes.AreaSquareCentimeters, QgsUnitTypes.DistanceMillimeters: QgsUnitTypes.AreaSquareMillimeters, QgsUnitTypes.DistanceUnknownUnit: QgsUnitTypes.AreaUnknownUnit, QgsUnitTypes.DistanceNauticalMiles: QgsUnitTypes.AreaSquareNauticalMiles } for t in list(expected.keys()): self.assertEqual(QgsUnitTypes.distanceToAreaUnit(t), expected[t])
def __init__(self): QDialog.__init__(self) self.setupUi(self) # dialog buttons box self.DialogButtons.rejected.connect(self.closing) self.DialogButtons.button( QDialogButtonBox.Save).setText("Export to CSV") self.DialogButtons.button(QDialogButtonBox.Save).clicked.connect( self.export_to_csv) from AcATaMa.gui.acatama_dockwidget import AcATaMaDockWidget as AcATaMa sampling_layer = AcATaMa.dockwidget.QCBox_SamplingFile_AA.currentLayer( ) thematic_layer = AcATaMa.dockwidget.QCBox_ThematicRaster.currentLayer() # get AccuracyAssessment or init new instance if sampling_layer: # sampling file valid if sampling_layer in Classification.instances: # classification exists for this file classification = Classification.instances[sampling_layer] if classification.accuracy_assessment: self.accuracy_assessment = classification.accuracy_assessment # restore config to dialog self.z_score.setValue(self.accuracy_assessment.z_score) self.CSV_separator.setText( self.accuracy_assessment.csv_separator) self.CSV_decimal_sep.setText( self.accuracy_assessment.csv_decimal) else: self.accuracy_assessment = AccuracyAssessment( classification) classification.accuracy_assessment = self.accuracy_assessment # fill the area units self.area_unit.clear() layer_dist_unit = thematic_layer.crs().mapUnits() for area_unit in AREA_UNITS: self.area_unit.addItem("{} ({})".format( QgsUnitTypes.toString(area_unit), QgsUnitTypes.toAbbreviatedString(area_unit))) # set the area unit saved or based on the sampling file by default if self.accuracy_assessment.area_unit is not None: self.area_unit.setCurrentIndex(self.accuracy_assessment.area_unit) else: self.accuracy_assessment.area_unit = QgsUnitTypes.distanceToAreaUnit( layer_dist_unit) self.area_unit.setCurrentIndex(self.accuracy_assessment.area_unit) self.area_unit.currentIndexChanged.connect( lambda: self.reload(msg_bar=False)) self.z_score.valueChanged.connect(lambda: self.reload(msg_bar=False)) self.CSV_separator.textChanged.connect(lambda value: setattr( self.accuracy_assessment, "csv_separator", value)) self.CSV_decimal_sep.textChanged.connect(lambda value: setattr( self.accuracy_assessment, "csv_decimal", value)) self.reloadButton.clicked.connect(lambda: self.reload(msg_bar=True))
def testDistanceToAreaUnit(self): """Test distanceToAreaUnit conversion""" expected = {QGis.Meters: QgsUnitTypes.SquareMeters, QGis.Feet: QgsUnitTypes.SquareFeet, QGis.Degrees: QgsUnitTypes.SquareDegrees, QGis.UnknownUnit: QgsUnitTypes.UnknownAreaUnit, QGis.NauticalMiles: QgsUnitTypes.SquareNauticalMiles } for t in expected.keys(): self.assertEqual(QgsUnitTypes.distanceToAreaUnit(t), expected[t])
def testDistanceToAreaUnit(self): """Test distanceToAreaUnit conversion""" expected = { QGis.Meters: QgsUnitTypes.SquareMeters, QGis.Feet: QgsUnitTypes.SquareFeet, QGis.Degrees: QgsUnitTypes.SquareDegrees, QGis.UnknownUnit: QgsUnitTypes.UnknownAreaUnit, QGis.NauticalMiles: QgsUnitTypes.SquareNauticalMiles, } for t in expected.keys(): self.assertEqual(QgsUnitTypes.distanceToAreaUnit(t), expected[t])
def testDistanceToAreaUnit(self): """Test distanceToAreaUnit conversion""" expected = {QgsUnitTypes.DistanceMeters: QgsUnitTypes.AreaSquareMeters, QgsUnitTypes.DistanceKilometers: QgsUnitTypes.AreaSquareKilometers, QgsUnitTypes.DistanceFeet: QgsUnitTypes.AreaSquareFeet, QgsUnitTypes.DistanceYards: QgsUnitTypes.AreaSquareYards, QgsUnitTypes.DistanceMiles: QgsUnitTypes.AreaSquareMiles, QgsUnitTypes.DistanceDegrees: QgsUnitTypes.AreaSquareDegrees, QgsUnitTypes.DistanceUnknownUnit: QgsUnitTypes.AreaUnknownUnit, QgsUnitTypes.DistanceNauticalMiles: QgsUnitTypes.AreaSquareNauticalMiles } for t in list(expected.keys()): self.assertEqual(QgsUnitTypes.distanceToAreaUnit(t), expected[t])
def cell_size(self): """Returns the size of the raster cell in hectares""" # Get the cell dimensions and units of the LULC raster cell_dim_x = self.raster.rasterUnitsPerPixelX() cell_dim_y = self.raster.rasterUnitsPerPixelY() raster_units = self.raster.crs().mapUnits() # Figure out the conversion factor from map units to hectares raster_units_square = QgsUnitTypes.distanceToAreaUnit(raster_units) hectare_unit_code = QgsUnitTypes.stringToAreaUnit("Hectares")[0] conversion_factor = QgsUnitTypes.fromUnitToUnitFactor(raster_units_square, hectare_unit_code) # Return raster cell size in hectares # Look out for floating point issues! return(cell_dim_x * cell_dim_y * conversion_factor)
def __init__(self, classification): from AcATaMa.gui.acatama_dockwidget import AcATaMaDockWidget as AcATaMa self.classification = classification self.ThematicR = Raster(file_selected_combo_box=AcATaMa.dockwidget.QCBox_ThematicRaster, band=int(AcATaMa.dockwidget.QCBox_band_ThematicRaster.currentText()) if AcATaMa.dockwidget.QCBox_band_ThematicRaster.currentText() else None, nodata=int(AcATaMa.dockwidget.nodata_ThematicRaster.value())) self.thematic_pixels_count = {} # dialog settings self.area_unit = None self.z_score = 1.96 self.csv_separator = ";" self.csv_decimal = "." # define the base area unit based on the thematic raster distance unit thematic_layer = AcATaMa.dockwidget.QCBox_ThematicRaster.currentLayer() layer_dist_unit = thematic_layer.crs().mapUnits() self.base_area_unit = QgsUnitTypes.distanceToAreaUnit(layer_dist_unit)