Web application for accessing and downloading historical precipitation data in Brazil.
-
🗺️ Interactive Map:
- Geospatial visualization of monitoring stations across Brazil.
- Intuitive navigation: click on a map point to view station details.
- Zoom and pan controls (Plotly).
-
📊 Detailed Dashboard:
- Dynamic Filters: Filter by year, month, date range, and operational status.
- Interactive Charts: Time-series precipitation analysis.
- Metadata Display: Station code, coordinates, and status.
-
⚡ High Performance:
- Uses Parquet format for ultra-fast data loading.
- Optimized data pipeline (CSV to Parquet conversion).
-
📥 Export: Download filtered data in CSV format.
The meteorological data used in this project is extracted from BDMEP (Banco de Dados Meteorológicos para Ensino e Pesquisa), provided by INMET (National Institute of Meteorology - Brazil).
- Language: Python 3.12
- Framework: Streamlit
- Data Processing: Pandas, PyArrow
- Visualization: Plotly Express
raindata/
├── app.py # Application entry point (Navigation)
├── convert.ipynb # ETL Notebook (Metadata extraction & Parquet conversion)
├── pages/
│ ├── home.py # Home Page (Map)
│ └── raindata.py # Analysis Page (Charts & Filters)
├── rain_datasets/ # Raw input CSV files
├── metadata_estacoes.parquet # Generated metadata file
└── requirements.txt # Project dependencies
-
Clone the repository:
git clone https://github.com/your-username/raindata.git cd raindata -
Create a virtual environment:
python3 -m venv .venv source .venv/bin/activate # Linux/Mac # or .venv\Scripts\activate # Windows
-
Install dependencies:
pip install -r requirements.txt
-
Prepare Data (ETL):
- Place your raw
.csvfiles from BDMEP in therain_datasetsfolder. - Run the
convert.ipynbnotebook to generatemetadata_estacoes.parquetand convert data to Parquet.
- Place your raw
-
Run the App:
streamlit run app.py
The application uses a custom dark theme with blue accents for better data visualization. Configuration is located in .streamlit/config.toml.