def accept(self): """Process the layer and field and generate a new layer. .. note:: This is called on OK click. """ index = self.cboFields.currentIndex() field_name = self.cboFields.itemData(index, QtCore.Qt.UserRole) index = self.cboPolygonLayers.currentIndex() layer_id = self.cboPolygonLayers.itemData(index, QtCore.Qt.UserRole) # noinspection PyArgumentList layer = QgsMapLayerRegistry.instance().mapLayer(layer_id) file_name = layer.source() input_layer = safe_read_layer(file_name) try: output_layer = self.minimum_needs(input_layer, field_name) except ValueError: return new_file = file_name[:-4] + '_perka7' + '.shp' output_layer.write_to_file(new_file) new_layer = QgsVectorLayer(new_file, 'Minimum Needs', 'ogr') # noinspection PyArgumentList QgsMapLayerRegistry.instance().addMapLayers([new_layer]) self.done(QtGui.QDialog.Accepted)
def accept(self): """Process the layer and field and generate a new layer. .. note:: This is called on OK click. """ index = self.cboFields.currentIndex() field_name = self.cboFields.itemData( index, QtCore.Qt.UserRole) index = self.cboPolygonLayers.currentIndex() layer_id = self.cboPolygonLayers.itemData( index, QtCore.Qt.UserRole) # noinspection PyArgumentList layer = QgsMapLayerRegistry.instance().mapLayer(layer_id) file_name = layer.source() input_layer = safe_read_layer(file_name) try: output_layer = self.minimum_needs(input_layer, field_name) except ValueError: return new_file = file_name[:-4] + '_perka7' + '.shp' output_layer.write_to_file(new_file) new_layer = QgsVectorLayer(new_file, 'Minimum Needs', 'ogr') # noinspection PyArgumentList QgsMapLayerRegistry.instance().addMapLayers([new_layer]) self.done(QtGui.QDialog.Accepted)
def convert_to_safe_layer(layer): """Thin wrapper around the safe read_layer function. :param layer: QgsMapLayer or Safe layer. :type layer: QgsMapLayer, read_layer :returns: A safe read_safe_layer object is returned. :rtype: read_layer """ if isinstance(layer, Layer): return layer try: return safe_read_layer(layer.source()) except: raise
def test_minimum_needs(self): """Test behaviour of the minimum needs function. """ dialog = NeedsCalculatorDialog(PARENT) layer = safe_read_layer(shapefile_path) attribute = 'displaced' new_layer = dialog.minimum_needs(layer, attribute) assert new_layer is not None attributes = { 'Drinking Water': 17500, 'Family Kits': 200, 'Rice': 2800, 'Toilets': 50, 'Clean Water': 67000} self.assertDictEqual(attributes, dict(new_layer.data[0]))