segunda-feira, 14 de dezembro de 2009

Problema 9.8

Este problema apenas acrescenta a necessidade de visualizar os dados. Para isso vamos usar o módulo cTurtle. O código é o seguinte:
01.def visualiza_terramotos(ficheiro, num_agrupa):
02.    dicio_dados = cria_dicio_dados_terramoto(ficheiro)
03.    centroides_terramoto = cria_centroides(num_agrupa,dicio_dados)
04.    agrupamentos = cria_agrupamentos(num_agrupa,centroides_terramoto,dicio_dados,10)
05.     
06.    # prepara o cenário ...
07.    tartaruga = cTurtle.Turtle()
08.    tartaruga.bgpic('/tempo/imagens/worldmap.gif')
09.    tartaruga.screensize(448,266)
10.    tartaruga.setWorldCoordinates(-180,-90, 180,90)
11.    tartaruga.hideturtle()
12.    tartaruga.up()
13.     
14.    # cores aleatorias
15.    tartaruga.colormode(255)
16.    lista_cores = []
17.    while len(lista_cores) < num_agrupa:
18.        r = random.randint(0,255)
19.        g = random.randint(0,255)
20.        b = random.randint(0,255)
21.        cor = (r,g,b)
22.        minimo = dist_euclid_lista(cor, lista_cores)
23.        if (cor not in lista_cores) and (minimo > 255):
24.            lista_cores.append(cor)
25.  
26.    # mostra os dados
27.    for indice_agrupa in range(num_agrupa):
28.        tartaruga.color(lista_cores[indice_agrupa])
29.        for chave in agrupamentos[indice_agrupa]:
30.            longitude = dicio_dados[chave][0]
31.            latitude = dicio_dados[chave][1]
32.            tartaruga.goto(longitude,latitude)
33.            tartaruga.dot()
34.    tartaruga.exitOnClick()

Começamos por obter os agrupamentos com os programas já desenvolvidos anteriormente (linhas 3 a 5 ). Criamos de seguida o objecto tartaruga (linha 8), colocamos em background a imagem (linha 9), e ajustamos o tamanho da janela ao tamanho real da imagem (linha 10). Redefinimos as coordenadas do mundo para ficarem iguais aos do problema (linha 11, latitude entre -90 e 90 e longitude entre -180 e 180), escondemos (linha 12) e levantamos a tartaruga (linha 13). Escolhemos aleatoriamente as cores dos pontos com que vamos marcar o mapa (linhas 15 a 25), mas garantido que são suficientemente distintas (linhas 23 a 25). Depois é só mostrar os pontos (linhas 27 a 34), e abandonar no final (linha 35)!
A figura abaixo mostra um exemplo resultado da execução do programa com os dados do tremor de terra e para 4 agrupamentos.


Sem comentários:

Enviar um comentário