[QGIS-pt] Iterações sobre atributos selecionados.

Fernando M. Roxo da Motta petro at roxo.org
Tue Dec 1 03:21:27 PST 2015


On Mon, 30 Nov 2015 16:31:03 +0000, Alexandre Neto
<senhor.neto  gmail.com> wrote:


> Peço desculpa, só reparei agora que o algoritmo corre directamente
> com base no OGR. Por isso os métodos que estava a sugerir (que são de
> pyqgis) não funcionam.

  Sem problema.  :)

  Você poderia me indicar como eu poderia alterar o código para utilizar
a infraestrutura do pyqgis?   Estou particularmente interessado no
método "layer.getFeatures()".


  Sds.

> 
> Fernando M. Roxo da Motta <petro  roxo.org> escreveu no dia seg,
> 30/11/2015 às 14:55:
> 
> > On Mon, 30 Nov 2015 11:04:03 +0000, Alexandre Neto
> > <senhor.neto  gmail.com> wrote:
> >
> >
> > > Bom dia
> >
> >   Bom dia Alexandre.
> >
> > >
> > > Fernando M. Roxo da Motta <petro  roxo.org> escreveu no dia sáb,
> > > 28/11/2015 às 13:45:
> > >
> > > >
> > > >   Eu tenho duas coleções de pontos, por exemplo Rec e Fon.   Em
> > > > princípio são dois shapefiles.   Em linhas gerais, estou
> > > > percorrendo as duas coleções como:
> > > >
> > > > RPts = ogr.Open(Rec, False)
> > > > Rs = RPs.GetLayer(0)
> > > > NR = Rs.GetFeatureCount()
> > > >
> > > > for i in xrange(NumREC):
> > > >     R = Rs.GetNextFeature()
> > > >     {faz alguma coisa com os R's}
> > > >
> > > >
> > > Acho que podes iterar os elementos de uma camada sem necessitar
> > > de os contar antes:
> >
> >   Ok.  A contagem foi como um teste extra com relação à "sanidade"
> > da camada.   A contagem está sendo obtida da seguinte maneira:
> >
> >   NR = Rs.GetFeatureCount()
> >   if NR == 0:
> >         raise GeoAlgorithmExecutionException(
> >                 'There are no Points in input vector Layer')
> >
> >   Talvez eu possa iterar como sugerido abaixo e se ao final do laço
> > a contagem for zero emitir a exceção.
> >
> > >
> > > for feature in layer.getFeatures():
> > >     # Faz qualquer coisa com cada elemento
> > >
> > > Honestamente, não sei se é mais eficiente, mas fica mais simples
> > >
> >
> >   Concordo, mas não sei se a forma como faço o acesso está errado
> > (talvez crie uma instância de um tipo diferente de objeto), mas eu
> > estou obtendo uma mensagem de erro.   Usei o método dir() sobre o
> > objeto "Rs" e o método "getFeatures()" não aparece listado:
> >
> > ['AlterFieldDefn', 'Clip', 'CommitTransaction', 'CreateFeature',
> > 'CreateField', 'CreateFields', 'DeleteFeature', 'DeleteField',
> > 'Dereference', 'Erase', 'GetExtent', 'GetFIDColumn', 'GetFeature',
> > 'GetFeatureCount', 'GetFeaturesRead', 'GetGeomType',
> > 'GetGeometryColumn', 'GetLayerDefn', 'GetName', 'GetNextFeature',
> > 'GetRefCount', 'GetSpatialFilter', 'GetSpatialRef', 'Identity',
> > 'Intersection', 'Reference', 'ReorderField', 'ReorderFields',
> > 'ResetReading', 'RollbackTransaction', 'SetAttributeFilter',
> > 'SetFeature', 'SetIgnoredFields', 'SetNextByIndex',
> > 'SetSpatialFilter', 'SetSpatialFilterRect', 'StartTransaction',
> > 'SymDifference', 'SyncToDisk', 'TestCapability', 'Union', 'Update',
> > '__bool__', '__class__', '__delattr__', '__dict__', '__doc__',
> > '__format__', '__getattr__', '__getattribute__', '__getitem__',
> > '__hash__', '__init__', '__iter__', '__len__', '__module__',
> > '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__',
> > '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
> > '__swig_getmethods__', '__swig_setmethods__', '__weakref__', 'next',
> > 'schema', 'this']
> >
> >
> > >
> > > >   Esta seleção está funcionando, até onde consegui testar.  A
> > > > minha pergunta é:  Uma vez realizada a seleção, como posso
> > > > iterar sobre a lista de Rec's selecionados?
> > > >
> > >
> > > Se tens uma layer com elementos seleccionados, pode usar o método
> > > selectedFeatures()
> > >
> > > for feature in layer.selectedFeatures():
> > >     #Fazer qq coisa com cada elemento
> >
> >   Ainda não testei esta opção, na verdade o método
> > "selectedFeatures()" também não aparece na lista acima.  :(
> >
> >
> >   Obrigado pela sua atenção.
> >
> >
> >   Sds.
> >
> >
> > >
> > > Cumprimentos,
> > > Alexandre Neto
> >
> >
> >
> >
> >
> >
> >
> >
> >   Roxo
> >
> > --
> > ---------------- Non luctari, ludare -------------------+ WYSIWYG
> > Fernando M. Roxo da Motta <petro  roxo.org>              | Editor?
> > Except where explicitly stated I speak on my own behalf.|  VI !!
> >       ( Usuário Linux registrado #39505 )               | I see
> > text, ------------ Quis custodiet ipsos custodes?-------------+ I
> > get text!
> >
> > _______________________________________________
> > QGIS-pt mailing list
> > QGIS-pt  lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/qgis-pt
> >








  Roxo

-- 
---------------- Non luctari, ludare -------------------+ WYSIWYG
Fernando M. Roxo da Motta <petro  roxo.org>              | Editor?
Except where explicitly stated I speak on my own behalf.|  VI !!
      ( Usuário Linux registrado #39505 )               | I see text,
------------ Quis custodiet ipsos custodes?-------------+ I get text!
 


More information about the QGIS-pt mailing list