Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Erro ao usar a função .dissolve

Quando utiliza a seguinte função:

setor_m.dissolve(by='NM_BAIRRO')

Ela retorna:

TopologyException: Input geom 0 is invalid: Self-intersection at or near point -43.250213293714594 -22.887739582871898 at -43.250213293714594 -22.887739582871898
TopologyException: Input geom 0 is invalid: Self-intersection at or near point -43.250213293714594 -22.887739582871898 at -43.250213293714594 -22.887739582871898
TopologyException: Input geom 0 is invalid: Self-intersection at or near point -43.250213293714594 -22.887739582871898 at -43.250213293714594 -22.887739582871898

ValueError: No Shapely geometry can be created from null value

O detalhe é que o crs está como EPSG:4326

1 resposta

Oi André,

Por algum motivo a troca do CRS não solucionou o problema pra você. Tente utilizar o seguinte código:

setor = setor.to_crs({'init': 'epsg:4326'})
setor_valid = [True if geom.is_valid else False for geom in setor.geometry]
setor_m = setor[['NM_BAIRRO', 'geometry']].iloc[setor_valid]

bairro = setor_m.dissolve(by='NM_BAIRRO')

O que é feito acima é a seleção de geometrias válidas. Verifique se funciona e nos dê um retorno.

Espero ter ajudado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software