本文整理汇总了Python中qgis.core.QgsVectorLayer.setSelectedFeatures方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorLayer.setSelectedFeatures方法的具体用法?Python QgsVectorLayer.setSelectedFeatures怎么用?Python QgsVectorLayer.setSelectedFeatures使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer.setSelectedFeatures方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: clone_layer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setSelectedFeatures [as 别名]
def clone_layer(layer, keep_selection=True):
"""Duplicate the layer by taking the same source and copying keywords.
:param keep_selection: If we should keep the selection. Default to true.
:type keep_selection: bool
:param layer: Layer to be duplicated.
:type layer: QgsMapLayer
:return: The new QgsMapLayer object.
:rtype: QgsMapLayer
"""
if is_vector_layer(layer):
new_layer = QgsVectorLayer(
layer.source(), layer.name(), layer.providerType())
if keep_selection and layer.selectedFeatureCount() > 0:
request = QgsFeatureRequest()
request.setFilterFids(layer.selectedFeatureIds())
request.setFlags(QgsFeatureRequest.NoGeometry)
iterator = layer.getFeatures(request)
new_layer.setSelectedFeatures([k.id() for k in iterator])
else:
new_layer = QgsRasterLayer(
layer.source(), layer.name(), layer.providerType())
new_layer.keywords = copy_layer_keywords(layer.keywords)
return layer
示例2: testRepack
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setSelectedFeatures [as 别名]
def testRepack(self):
vl = QgsVectorLayer(u'{}|layerid=0'.format(self.repackfile), u'test', u'ogr')
ids = [f.id() for f in vl.getFeatures(QgsFeatureRequest().setFilterExpression('pk=1'))]
vl.setSelectedFeatures(ids)
assert vl.selectedFeaturesIds() == ids, vl.selectedFeaturesIds()
assert vl.pendingFeatureCount() == 5, vl.pendingFeatureCount()
assert vl.startEditing()
assert vl.deleteFeature(3)
assert vl.commitChanges()
assert vl.selectedFeatureCount() == 0 or vl.selectedFeatures()[0]['pk'] == 1
示例3: f
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setSelectedFeatures [as 别名]
def f():
crs = iface.mapCanvas().mapRenderer().destinationCrs()
uri = "%s?srsname=%s&typename=geonode:%s&version=1.0.0&request=GetFeature&service=WFS" % (url, crs.authid(), name)
qgslayer = QgsVectorLayer(uri, name, "WFS")
if not qgslayer.isValid():
raise Exception ("Layer at %s is not a valid layer" % uri)
fieldname = self._getTimeField(qgslayer)
if fieldname is None:
QgsMapLayerRegistry.instance().addMapLayers([qgslayer])
else:
memlayer = QgsVectorLayer("%s?crs=%s" % (GEOM_TYPE_MAP[qgslayer.wkbType()], crs.authid()), name, "memory")
memlayer.startEditing()
for field in qgslayer.pendingFields():
memlayer.addAttribute(field)
for feat in qgslayer.getFeatures():
memlayer.addFeatures([feat])
memlayer.commitChanges()
QgsMapLayerRegistry.instance().addMapLayers([memlayer])
memlayer.setSelectedFeatures([])
addWfsAnimation(memlayer, fieldname)
示例4: eliminate
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setSelectedFeatures [as 别名]
def eliminate(self, inLayer, boundary, progressBar, outFileName):
# keep references to the features to eliminate
fidsToEliminate = inLayer.selectedFeaturesIds()
if outFileName: # user wants a new shape file to be created as result
provider = inLayer.dataProvider()
error = QgsVectorFileWriter.writeAsVectorFormat(inLayer, outFileName, provider.encoding(), inLayer.crs(), "ESRI Shapefile")
if error != QgsVectorFileWriter.NoError:
QMessageBox.warning(self, self.tr("Eliminate"), self.tr("Error creating output file"))
return None
outLayer = QgsVectorLayer(outFileName, QFileInfo(outFileName).completeBaseName(), "ogr")
else:
QMessageBox.information(self, self.tr("Eliminate"), self.tr("Please specify output shapefile"))
return None
# delete features to be eliminated in outLayer
outLayer.setSelectedFeatures(fidsToEliminate)
outLayer.startEditing()
if outLayer.deleteSelectedFeatures():
if self.saveChanges(outLayer):
outLayer.startEditing()
else:
QMessageBox.warning(self, self.tr("Eliminate"), self.tr("Could not delete features"))
return None
# ANALYZE
start = 20.00
progressBar.setValue(start)
add = 80.00 / len(fidsToEliminate)
lastLen = 0
# we go through the list and see if we find any polygons we can merge the selected with
# if we have no success with some we merge and then restart the whole story
while (lastLen != inLayer.selectedFeatureCount()): # check if we made any progress
lastLen = inLayer.selectedFeatureCount()
fidsToDeselect = []
#iterate over the polygons to eliminate
for fid2Eliminate in inLayer.selectedFeaturesIds():
feat = QgsFeature()
if inLayer.getFeatures( QgsFeatureRequest().setFilterFid( fid2Eliminate ).setSubsetOfAttributes([]) ).nextFeature( feat ):
geom2Eliminate = feat.geometry()
bbox = geom2Eliminate.boundingBox()
fit = outLayer.getFeatures( QgsFeatureRequest().setFilterRect( bbox ) )
mergeWithFid = None
mergeWithGeom = None
max = 0
selFeat = QgsFeature()
while fit.nextFeature(selFeat):
selGeom = selFeat.geometry()
if geom2Eliminate.intersects(selGeom): # we have a candidate
iGeom = geom2Eliminate.intersection(selGeom)
if boundary:
selValue = iGeom.length()
else:
# we need a common boundary
if 0 < iGeom.length():
selValue = selGeom.area()
else:
selValue = 0
if selValue > max:
max = selValue
mergeWithFid = selFeat.id()
mergeWithGeom = QgsGeometry(selGeom) # deep copy of the geometry
if mergeWithFid is not None: # a successful candidate
newGeom = mergeWithGeom.combine(geom2Eliminate)
if outLayer.changeGeometry(mergeWithFid, newGeom):
# write change back to disc
if self.saveChanges(outLayer):
outLayer.startEditing()
else:
return None
# mark feature as eliminated in inLayer
fidsToDeselect.append(fid2Eliminate)
else:
QMessageBox.warning(
self,
self.tr("Eliminate"),
self.tr("Could not replace geometry of feature with id %s") % (mergeWithFid))
return None
start = start + add
progressBar.setValue(start)
# end for fid2Eliminate
# deselect features that are already eliminated in inLayer
inLayer.deselect(fidsToDeselect)
#.........这里部分代码省略.........
示例5: __init__
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setSelectedFeatures [as 别名]
#.........这里部分代码省略.........
#nastavit komba na zacatek
self.select_lhc()
self.select_odd()
self.select_dil()
self.select_por()
self.select_psk()
def select_lhc(self):
self.dockwidget.input_odd.clear()
self.dockwidget.input_dil.clear()
self.dockwidget.input_por.clear()
self.dockwidget.input_psk.clear()
self.dockwidget.input_odd.addItems(
[ odd.get('ODD') for odd in self.lhc.xpath('ODD')]
)
def select_odd(self):
self.odd = self.lhc.find("ODD[@ODD='%s']"%self.dockwidget.input_odd.currentText())
self.dockwidget.input_dil.clear()
self.dockwidget.input_por.clear()
self.dockwidget.input_psk.clear()
self.dockwidget.input_dil.addItems(
[ dil.get('DIL') for dil in self.odd.xpath('DIL')]
)
self.jprl = (
self.lhc.get('LHC_KOD')
, self.odd.get('ODD'))
#zrus vybrane graficky
self.psk_layer.setSelectedFeatures([])
#vyber
request = QgsFeatureRequest().setFilterExpression(
"lhc_kod = '%s' AND odd = '%s'"%
self.jprl)
it = self.psk_layer.getFeatures( request )
self.psk_layer.setSelectedFeatures([f.id() for f in it])
box = self.psk_layer.boundingBoxOfSelected()
self.iface.mapCanvas().setExtent(box)
self.iface.mapCanvas().refresh()
def select_dil(self):
self.dil = self.odd.find("DIL[@DIL='%s']"%self.dockwidget.input_dil.currentText())
self.dockwidget.input_por.clear()
self.dockwidget.input_psk.clear()
self.dockwidget.input_por.addItems(
[ por.get('POR') for por in self.dil.xpath('POR')]
)
self.jprl = (
self.lhc.get('LHC_KOD')
, self.odd.get('ODD')
, self.dil.get('DIL'))
#zrus vybrane graficky
self.psk_layer.setSelectedFeatures([])
#vyber