Abrir en Colab

Mapear datos de ciencia participativa de GLOBE#

Visualiza en mapas los datos de GLOBE Mosquito Habitat Mapper y GLOBE Land Cover.

import numpy as np
import pandas as pd
import geopandas as gpd
import seaborn as sns
import matplotlib.pyplot as plt
import folium
from folium.plugins import HeatMap

mosquito = gpd.read_file(
    "https://github.com/geo-di-lab/emerge-lessons/raw/"
    "refs/heads/main/docs/data/globe_mosquito.zip"
)

land_cover = gpd.read_file(
    "https://github.com/geo-di-lab/emerge-lessons/raw/"
    "refs/heads/main/docs/data/globe_land_cover.zip"
)

Carga el límite de Florida, obtenido a partir del archivo de límites estatales del Censo de Estados Unidos y filtrado previamente para incluir solamente Florida. Utilizaremos este límite para recortar los datos y concentrarnos en el estado.

fl = gpd.read_file(
    "https://github.com/geo-di-lab/emerge-lessons/raw/"
    "refs/heads/main/docs/data/florida_boundary.geojson"
)[["geometry"]]

mosquito = (
    gpd.sjoin(
        mosquito,
        fl,
        how="inner",
        predicate="intersects"
    )
    .drop(columns=["index_right"])
    .reset_index(drop=True)
)

land_cover = (
    gpd.sjoin(
        land_cover,
        fl,
        how="inner",
        predicate="intersects"
    )
    .drop(columns=["index_right"])
    .reset_index(drop=True)
)

Representa en un mapa los datos de mosquitos recopilados en Florida entre 2018 y 2024.

# Mostrar las columnas disponibles
mosquito.columns
# Crear un mapa vacío centrado en Florida
map = folium.Map(
    location=[28.263363, -83.497652],
    tiles="Cartodb dark_matter",
    zoom_start=7
)

# Agregar cada observación como un marcador
for idx, row in mosquito.iterrows():
    popup_content = (
        f"<b>Fecha:</b> {row['MeasuredDate']}<br>"
        f"<b>Fuente de agua:</b> {row['WaterSourceType']}<br>"
        f"<b>Longitud:</b> {row['MeasurementLongitude']}<br>"
        f"<b>Latitud:</b> {row['MeasurementLatitude']}"
    )

    folium.Marker(
        location=[
            row.geometry.y,
            row.geometry.x
        ],
        popup=folium.Popup(
            popup_content,
            max_width=300
        )
    ).add_to(map)

display(map)

En el mapa, haz clic en uno de los puntos para abrir una ventana con la fecha, el tipo de fuente de agua, la longitud y la latitud de la observación enviada mediante la aplicación GLOBE Observer.

Representa en un mapa los datos de cobertura terrestre recopilados entre 2018 y 2024.

# Mostrar las columnas disponibles
land_cover.columns
# Crear un mapa vacío centrado en Florida
map = folium.Map(
    location=[28.263363, -83.497652],
    tiles="Cartodb dark_matter",
    zoom_start=7
)

# Agregar cada observación como un marcador
for idx, row in land_cover.iterrows():
    popup_content = (
        f"<b>Fecha:</b> {row['MeasuredDate']}<br>"
        f"<b>MUC:</b> {row['MucDescription']}<br>"
        f"<b>Longitud:</b> {row['MeasurementLongitude']}<br>"
        f"<b>Latitud:</b> {row['MeasurementLatitude']}"
    )

    folium.Marker(
        location=[
            row.geometry.y,
            row.geometry.x
        ],
        popup=folium.Popup(
            popup_content,
            max_width=300
        )
    ).add_to(map)

display(map)

Hemos creado mapas interactivos sencillos con los datos de GLOBE. En la próxima lección crearemos mapas de calor que mostrarán la distribución mundial de estas observaciones.