QGIS-2.8-PyQGISDeveloperCookbook-en(21)
时间:2025-03-11
时间:2025-03-11
为开发人员准备的文档,涵盖QGIS的多种功能实现和代码。
5.3.3Iteratingoverasubsetoffeatures
Ifyouwanttoiterateoveragivensubsetoffeaturesinalayer,suchasthosewithinagivenarea,youhavetoadd
aQgsFeatureRequestobjecttothegetFeatures()call.Here’sanexample
Ifyouneedanattribute-based lterinstead(orinaddition)ofaspatialonelikeshownintheexampleabove,you
canbuildanQgsExpressionobjectandpassittotheQgsFeatureRequestconstructor.Here’sanexample
Therequestcanbeusedtode nethedataretrievedforeachfeature,sotheiteratorreturnsallfeatures,butreturns
partialdataforeachofthem.
Tip:Ifyouonlyneedasubsetoftheattributesoryoudon’tneedthegeometryinformations,youcansigni cantlyincreasethespeedofthefeaturesrequestbyusingQgsFeatureRequest.NoGeometry agorspecifyinga
subsetofattributes(possiblyempty)likeshownintheexampleabove.
5.4ModifyingVectorLayers
Mostvectordataproviderssupportediting
oflayerdata.Sometimestheysupportjustasubsetofpossibleediting
ethecapabilities()functionto ndoutwhatsetoffunctionalityissupported
Byusinganyofthefollowingmethodsforvectorlayerediting,thechangesaredirectlycommittedtotheunderly-
ingdatastore(a le,databaseetc).Incaseyouwouldliketodoonlytemporarychanges,skiptothenextsection
thatexplainshowtodomodi cationswitheditingbuffer.
Note:IfyouareworkinginsideQGIS(eitherfromtheconsoleorfromaplugin),itmightbenecessarytoforcearedrawofthemapcanvasinordertoseethechangesyou’vedonetothegeometry,tothestyleortotheattributes:
5.4.1AddFeatures
CreatesomeQgsFeatureinstancesandpassalistofthemtoprovider’saddFeatures()method.Itwill
returntwovalues:result(true/false)andlistofaddedfeatures(theirIDissetbythedatastore)