コード例 #1
0
def unionSelected(event):  #TODO: support undo better
    layers = getLayersWithSelectedItems()
    if layers.size() == 0:
        warnUser("Nothing Selected")
        return
    for layer in layers:
        if not layer.isEditable():
            warnUser("Noneditable layer(s) selected")
            return
    #get the union of all selected features
    selectedFeatures = getSelectedFeatures()
    unionGeometry = selectedFeatures[0].geometry
    otherFeatures = list(selectedFeatures)[1:]  #[1:] is skip first
    for feature in otherFeatures:
        unionGeometry = unionGeometry.union(feature.geometry)
    #set the geometry of the first feature of the first layer to the union        
    ModGeo = ModifyGeometry("Union Selected Features")
    selectedFeatures = featuresOnLayer(layers[0])
    ModGeo.addChangeGeometryTransaction(layers[0], selectedFeatures[0], unionGeometry)
    #remove all other features leaving only the union
    del selectedFeatures[0] #remove the first feature of the first layer from the list
    ModGeo.addRemoveFeaturesTransaction(layers[0], selectedFeatures)
    del layers[0]
    for layer in layers:
        selectedFeatures = featuresOnLayer(layer)
        ModGeo.addRemoveFeaturesTransaction(layer, selectedFeatures)
    ModGeo.commitTransactions()
    repaint()
    
        
コード例 #2
0
def unionSelected(event):  #TODO: support undo better
    layers = getLayersWithSelectedItems()
    if layers.size() == 0:
        warnUser("Nothing Selected")
        return
    for layer in layers:
        if not layer.isEditable():
            warnUser("Noneditable layer(s) selected")
            return
    #get the union of all selected features
    selectedFeatures = getSelectedFeatures()
    unionGeometry = selectedFeatures[0].geometry
    otherFeatures = list(selectedFeatures)[1:]  #[1:] is skip first
    for feature in otherFeatures:
        unionGeometry = unionGeometry.union(feature.geometry)
    #set the geometry of the first feature of the first layer to the union        
    ModGeo = ModifyGeometry("Union Selected Features")
    selectedFeatures = featuresOnLayer(layers[0])
    ModGeo.addChangeGeometryTransaction(layers[0], selectedFeatures[0], unionGeometry)
    #remove all other features leaving only the union
    del selectedFeatures[0] #remove the first feature of the first layer from the list
    ModGeo.addRemoveFeaturesTransaction(layers[0], selectedFeatures)
    del layers[0]
    for layer in layers:
        selectedFeatures = featuresOnLayer(layer)
        ModGeo.addRemoveFeaturesTransaction(layer, selectedFeatures)
    ModGeo.commitTransactions()
    repaint()