Existe uma maneira de atribuir o número da linha da tabela classificada por coluna no QGIS?

13

A calculadora de campo possui uma excelente função em "Registros" chamada "$ rownum", que retorna (atribui) o número da linha atual.

Existe uma maneira de fazê-lo funcionar junto com a classificação? Digamos que eu queira classificar a tabela por coluna "comprimento" e obter a ordem (sequência) de linhas por comprimento, do menor para o maior.

Sei que posso usar facilmente algum software de planilha de escritório para classificar por coluna e preencher nova coluna com ordem (sequência). Mas eu preferiria fazer todo o trabalho no QGIS.

Atualização: Como solução alternativa, há também Como alterar a ordem dos recursos em um shapefile? - usando o plugin mmqgis e a função modify / sort e depois use "$ rownum" no novo arquivo salvo.

Miro
fonte

Respostas:

19

Codifiquei um plug-in ( Classificação e Número ) para resolver seu problema. Permite selecionar até 3 campos e ordenar sua tabela de atributos de acordo com esses campos. Em seguida, ele numera a tabela de atributos em um novo campo (chamado "pedido" por padrão), iniciando em 1.

insira a descrição da imagem aqui

ArMoraer
fonte
Parece incrível. Vou testar este plugin agora, obrigado.
Miro
Quando instalado pela primeira vez no 2.8, surgiu com algum erro, mas após o teste no 2.14 e de volta no 2.8, ele funciona excelente. Obrigado.
Miro
@Miro: de nada. Espero que seja útil para outras pessoas também.
ArMoraer 04/04
@ArMoraer - Ótimo plugin!
Joseph
1
Você pode recodificar isso para Bonn 3 -> eu amei essa ferramenta!
Lowsparked
7

Não sei se você pode com a calculadora de campo, mas você pode usar uma camada virtual com uma consulta como:

SELECT 
    * ,
    (SELECT count(*) FROM your_layer AS b WHERE a.length >= b.length) AS length_position
FROM your_layer AS a 
ORDER BY a.length
Pierma
fonte
Obrigado, ainda trabalho com o release de longo prazo 2.8, por isso foi a primeira vez que descobri a camada virtual na 2.14. Além disso, era muito, muito, muito lento, funciona. Geralmente isso é aceitável, mas vou esperar um pouco mais por outras respostas, se houver.
Miro