Mapas¶
Tinamït viene con algunas funcionalidades para dibujar mapas de resultados de simulación. Todos los mapas están
compuestos de objetos Forma
. Cada Forma
está vinculada
con un archivo .shp
.
Formas dinámicas¶
Formas dinámicas (FormaDinámica
) son las formas cuyos colores varían según los resultados
de una simulación. Incluyen FormaDinámicaNumérica
, la cual toma sus valores en formato
de np.ndarray
o de lista, y FormaDinámicaNombrada
, la cual quiere sus datos en
formato de diccionario.
Los mapas se pueden dibujar desde una matriz de un variable multidimensional en un modelo, o sino de una simulación
de grupo donde cada simulación individual representa otra región en el mapa. Ambas situaciones se manejan por
dibujar_mapa_de_res()
.
Simulaciones por grupo¶
En este ejemplo, correremos un modelo de epidemiología con distintas tazas de contacto para cada departamento de Guatemala.
import numpy as np
from tinamit.ejemplos import obt_ejemplo
from tinamit.envolt.mds import gen_mds
from tinamit.geog.mapa import FormaDinámicaNombrada, dibujar_mapa_de_res
from tinamit.mod import OpsSimulGrupo
mds = gen_mds(obt_ejemplo('enfermedad/mod_enferm.mdl'))
forma_deptos = obt_ejemplo('geog_guate/deptos.shp')
ops = OpsSimulGrupo(
t=50,
extern=[{'taza de contacto': np.random.random() * 500} for i in range(1, 23)],
nombre=[str(i) for i in range(1, 23)]
)
res = mds.simular_grupo(ops, nombre='Epidemiología')
frm = FormaDinámicaNombrada(forma_deptos, col_id='COD_DEP', escala_colores=-1)
dibujar_mapa_de_res(forma_dinámica=frm, res=res, var='Individuos Infectados', t=16)
Nota
El nombre de cada simulación en el grupo debe corresponder con el nombre de una forma en el archivo .shp
tal
como especificado en la columna col_id
.
Alternativamente, puedes utilizar una FormaDinámicaNumérica
; en ese caso se asiñarán
los resultados a las formas según su orden en OpsSimulGrupo
, nada más.
Variables multidimensionales¶
Aplicaremos un modelo sencillo de bosques y lluvia a un mapa de la región del Rechna Doab (رچنا دوآب) en Pakistán.
Este mapa divide la región en 215 polígonos, cada cual corresponde a un punto en el variable Bosque
multidimensional.
from tinamit.ejemplos.sencillo.bf_bosques import PruebaBF
from tinamit.geog.mapa import FormaDinámicaNumérica
mod = PruebaBF(215)
polígonos = obt_ejemplo('rechna_doab/polígonos.shp')
extern = {'Bosques': np.random.random(215)*1e6}
res = mod.simular(t=10, extern=extern, nombre='Cobertura forestal')
frm = FormaDinámicaNumérica(polígonos, col_id='Id')
dibujar_mapa_de_res(forma_dinámica=frm, res=res, var='Bosques', t=10)
Formas estáticas¶
También puedes agregar formas estáticas (FormaEstática
), que no depienden de los resultados
de una simulación y que se agregan solamente por razones estéticas.
Por el momento, tienes:
from tinamit.geog.mapa import Agua, Calle
calles = Calle(obt_ejemplo('rechna_doab/calle.shp'))
río = Agua(obt_ejemplo('rechna_doab/río.shp'))
canales = Agua(obt_ejemplo('rechna_doab/canal.shp'), llenar=False)
dibujar_mapa_de_res(forma_dinámica=frm, otras_formas=[calles, canales, río], res=res, var='Bosques', t=10)