Interactive map of universities in Central Africa using Python, OpenStreetMap API, and OpenLayers.
# African Universities Map
## 📌 Description
This project visualizes universities in Central Africa on an interactive map. It uses Python to fetch geographic coordinates from the OpenStreetMap Nominatim API, stores the data in SQLite, and generates a JavaScript file to display universities on an OpenLayers map.
It is based on the **Python for Everybody (Py4E)** course project by Dr. Charles Severance (Dr Chuck), and has been adapted to work with African university data.
This project is a practical example of combining Python, databases, APIs, and web mapping technologies to build a portfolio-ready application focused on geocoding and data visualization.
---
## Features
### Interactive University Map
- Displays African universities on an interactive OpenLayers map
- Uses geographic coordinates fetched from a geocoding API
### Data Management
- Stores university and coordinate data in an SQLite database
- Generates a JavaScript file containing map data
### Login Page (Java EE)
- Developed with **Java EE** using **Eclipse**
- Uses a **MySQL** database
- Handles user authentication
---
## Tech Stack
| Module | Technology | IDE | Database |
|---|---|---|---|
| Login Page | Java EE | Eclipse | MySQL |
| Map & Data Processing | Python, JavaScript (OpenLayers), HTML/CSS | VS Code | SQLite |
---
## Project Structure
| File | Description |
|---|---|
| `geoload.py` | Loads university data and fetches coordinates |
| `geodump.py` | Extracts data and generates JavaScript file |
| `universities.data` | List of universities |
| `ca_universities.js` | Generated map data |
| `where.html` | Interactive map visualization |
---
## â–¶ How to Run the Project
### Python Map Application
1. Add universities to `universities.data`
2. Run:
```bash
python geoload.py
```
3. Then run:
```bash
python geodump.py
```
4. Open `where.html` in your browser
---
### Login Page (Java EE)
1. Import the project into Eclipse
2. Configure the MySQL connection (see `config/db. …