Hi @danilo_inovacao, program doesn't work as expected,
it just works according to the source you wrote ;-) Maybe this script generates your desired result.
from operator import itemgetter
def processFeature(feature):
tamanhoTrecho = str(feature.getAttribute('tamanho'))
ordem = str(feature.getAttribute('ordem'))
ppPai = int(feature.getAttribute('tam_inicial_pai'))
listaTamanhoTrecho = [int(s) for s in tamanhoTrecho.split(',')]
listaOrdem = [int(s) for s in ordem.split(',')]
# zip the two lists and sort it by the first element (i.e. 'ordem')
data = sorted(zip(listaOrdem, listaTamanhoTrecho), key=itemgetter(0))
inicial = [ppPai + 1]
final = [ppPai + data[0][1]]
for _, t in data[1:]:
ini = final[-1] + 1
inicial.append(ini)
final.append(ini + t)
for i, (ini, fin) in enumerate(zip(inicial, final)):
feature.setAttribute('inicial{%d}' % i, ini)
feature.setAttribute('final{%d}' % i, fin)
Hi @danilo_inovacao, program doesn't work as expected,
it just works according to the source you wrote ;-) Maybe this script generates your desired result.
from operator import itemgetter
def processFeature(feature):
tamanhoTrecho = str(feature.getAttribute('tamanho'))
ordem = str(feature.getAttribute('ordem'))
ppPai = int(feature.getAttribute('tam_inicial_pai'))
listaTamanhoTrecho = [int(s) for s in tamanhoTrecho.split(',')]
listaOrdem = [int(s) for s in ordem.split(',')]
# zip the two lists and sort it by the first element (i.e. 'ordem')
data = sorted(zip(listaOrdem, listaTamanhoTrecho), key=itemgetter(0))
inicial = [ppPai + 1]
final = [ppPai + data[0][1]]
for _, t in data[1:]:
ini = final[-1] + 1
inicial.append(ini)
final.append(ini + t)
for i, (ini, fin) in enumerate(zip(inicial, final)):
feature.setAttribute('inicial{%d}' % i, ini)
feature.setAttribute('final{%d}' % i, fin)
Amazing @takashi Your script was helpful for me.
Thanks !!!