223 lines
8.0 KiB
Markdown
223 lines
8.0 KiB
Markdown
# CLAUDE.md - Globe Visualization 2: Temperature Heatmap
|
|
|
|
## Project Context
|
|
|
|
This is iteration 2 in a progressive Mapbox globe visualization learning series. Each iteration builds upon previous knowledge while introducing new web-learned techniques.
|
|
|
|
## Learning Methodology: Web-Enhanced Progressive Development
|
|
|
|
### Research Source
|
|
- **URL**: https://docs.mapbox.com/mapbox-gl-js/example/heatmap-layer/
|
|
- **Topic**: Heatmap layers for density-based visualization
|
|
- **Method**: WebFetch tool used to retrieve and analyze documentation
|
|
- **Application**: Heatmap techniques applied to climate data on globe projection
|
|
|
|
### Techniques Extracted from Documentation
|
|
|
|
1. **Heatmap Weight System**
|
|
- Documentation showed how to use data properties to drive heatmap density
|
|
- Applied to temperature anomalies: higher anomalies = higher weight
|
|
- Interpolation from -1°C (0.1 weight) to +3°C (1.0 weight)
|
|
|
|
2. **Zoom-Based Intensity**
|
|
- Learned intensity multiplier varies by zoom level
|
|
- Implemented 0.8 (global) → 1.2 (regional) → 1.5 (local)
|
|
- Ensures visibility at all scales
|
|
|
|
3. **Color Gradient Configuration**
|
|
- Documentation demonstrated density-to-color mapping
|
|
- Created diverging scheme: blue (cold) → green (neutral) → red (hot)
|
|
- Applied to temperature anomaly visualization
|
|
|
|
4. **Radius Adaptation**
|
|
- Learned radius controls point influence spread
|
|
- Configured 15-35px range based on zoom
|
|
- Balances smoothness vs precision
|
|
|
|
5. **Layer Transitions**
|
|
- Documentation showed opacity management for layer switching
|
|
- Implemented heatmap fade-out + circle fade-in
|
|
- Seamless transition from density to detail view
|
|
|
|
## Improvement Over Iteration 1
|
|
|
|
### Iteration 1 Recap
|
|
- 100 population circles sized/colored by population
|
|
- Globe projection with auto-rotation
|
|
- Basic circle layer visualization
|
|
|
|
### Iteration 2 Advancements
|
|
- 280 temperature anomaly stations
|
|
- Primary heatmap layer for density visualization
|
|
- Secondary circle layer for detail
|
|
- Multi-scale visualization strategy
|
|
- Climate-focused data theme
|
|
- Zoom-responsive layer transitions
|
|
|
|
### Why Heatmap > Circles for This Data
|
|
|
|
**Circles (Iteration 1)**:
|
|
- Good: Precise individual values
|
|
- Limited: Pattern recognition requires mental work
|
|
- Best for: Discrete entities (cities, points of interest)
|
|
|
|
**Heatmap (Iteration 2)**:
|
|
- Good: Immediate pattern recognition
|
|
- Advanced: Shows regional trends and gradients
|
|
- Best for: Continuous phenomena (temperature, density, intensity)
|
|
|
|
## Technical Architecture
|
|
|
|
### File Structure
|
|
```
|
|
mapbox_globe_2/
|
|
├── index.html # Main page with UI panels
|
|
├── src/
|
|
│ ├── index.js # Map initialization and heatmap configuration
|
|
│ └── data/
|
|
│ └── temperature-data.js # 280 stations GeoJSON
|
|
├── README.md # User documentation
|
|
└── CLAUDE.md # This file - development context
|
|
```
|
|
|
|
### Data Design
|
|
|
|
**GeoJSON Features**: Each station includes:
|
|
- `station`: Location name
|
|
- `temperature`: 2023 measured temperature
|
|
- `anomaly`: Deviation from 1951-1980 baseline
|
|
- `baseline`: Historical average temperature
|
|
- `year`: Data year (2023)
|
|
|
|
**Geographic Coverage**:
|
|
- North America: 20 stations
|
|
- South America: 10 stations
|
|
- Europe: 50 stations (showing high warming)
|
|
- Asia: 40 stations (mixed patterns)
|
|
- Middle East: 12 stations (extreme warming)
|
|
- Africa: 30 stations
|
|
- Oceania: 18 stations
|
|
- Russia/Arctic: 20 stations (extreme warming)
|
|
- Additional key locations: 80 stations
|
|
|
|
### Heatmap Paint Properties Explained
|
|
|
|
```javascript
|
|
// Weight: How much each point contributes
|
|
'heatmap-weight': Uses 'anomaly' property
|
|
-1°C anomaly → 0.1 weight (minimal contribution)
|
|
+3°C anomaly → 1.0 weight (maximum contribution)
|
|
|
|
// Intensity: Global multiplier by zoom
|
|
Zoom 0: 0.8 (subtle at global view)
|
|
Zoom 10: 1.5 (prominent at local view)
|
|
|
|
// Color: Density mapped to temperature gradient
|
|
0 density: Transparent
|
|
Low density: Blue (cooling)
|
|
Medium density: Yellow (moderate warming)
|
|
High density: Red (extreme warming)
|
|
|
|
// Radius: Point influence spread
|
|
Zoom 0: 15px (broad patterns)
|
|
Zoom 10: 35px (precise local density)
|
|
|
|
// Opacity: Layer visibility by zoom
|
|
Zoom 0-7: 0.9 (heatmap dominant)
|
|
Zoom 7-15: 0.9 → 0 (fade to circles)
|
|
```
|
|
|
|
### Circle Layer Strategy
|
|
|
|
- **Activation**: minzoom 7 (regional scale)
|
|
- **Purpose**: Show individual stations when zoomed in
|
|
- **Radius**: Based on anomaly magnitude (3-18px)
|
|
- **Color**: Matches heatmap gradient for consistency
|
|
- **Opacity**: 0 → 0.85 as heatmap fades
|
|
- **Stroke**: White outline for visibility
|
|
|
|
## Climate Data Patterns
|
|
|
|
The visualization reveals scientifically accurate patterns:
|
|
|
|
1. **Arctic Amplification**: Polar regions +2.5°C to +3.6°C (documented phenomenon)
|
|
2. **Continental vs Oceanic**: Land warming faster (thermal inertia effect)
|
|
3. **Latitude Gradient**: Higher latitudes showing greater warming
|
|
4. **Regional Hotspots**: Middle East, Central Asia, Mediterranean
|
|
5. **Tropical Moderation**: Equatorial regions showing less warming
|
|
|
|
## Development Notes
|
|
|
|
### Design Decisions
|
|
|
|
1. **Dark Theme**: Maximizes data visibility, reduces eye strain
|
|
2. **Diverging Colors**: Blue-to-red familiar from climate visualizations
|
|
3. **Auto-Rotation**: Reveals global patterns without user effort
|
|
4. **Smart Pause**: Rotation stops during interaction, resumes after
|
|
5. **Dual Layers**: Heatmap for patterns, circles for precision
|
|
|
|
### Performance Optimizations
|
|
|
|
- Heatmap rendering is GPU-accelerated via WebGL
|
|
- GeoJSON pre-loaded (no async data fetching)
|
|
- Layer visibility controlled by zoom (not rendering unused features)
|
|
- Popup generation on-demand (not pre-rendered)
|
|
|
|
### User Experience Enhancements
|
|
|
|
- **Legend**: Color scale shows anomaly meaning
|
|
- **Statistics**: Aggregate data provides context
|
|
- **Info Panel**: Explains methodology and data source
|
|
- **Popups**: Detailed station data on interaction
|
|
- **Controls**: Easy toggling between views
|
|
- **Fullscreen**: Immersive exploration mode
|
|
|
|
## Learning Outcomes
|
|
|
|
### Web Documentation Research Skills
|
|
- Successfully fetched and analyzed Mapbox heatmap documentation
|
|
- Extracted key paint properties and their usage patterns
|
|
- Applied documentation examples to novel use case (climate data)
|
|
|
|
### Mapbox Technique Mastery
|
|
- **New**: Heatmap layer type and all paint properties
|
|
- **Advanced**: Multi-layer visualization with zoom transitions
|
|
- **Refined**: Globe projection styling with atmosphere
|
|
- **Maintained**: Auto-rotation from iteration 1
|
|
|
|
### Climate Data Visualization
|
|
- Understood diverging color schemes for anomaly data
|
|
- Applied density visualization to continuous phenomena
|
|
- Designed multi-scale approach (global patterns → local detail)
|
|
|
|
## Future Enhancement Ideas
|
|
|
|
1. **Temporal Animation**: Show anomaly progression over decades
|
|
2. **Multiple Variables**: Precipitation, sea level, ice coverage
|
|
3. **3D Terrain**: Elevation-aware temperature visualization
|
|
4. **Real-time Data**: Integration with climate APIs
|
|
5. **Comparison Mode**: Side-by-side historical vs current
|
|
6. **Regional Focus**: Drill-down into specific areas
|
|
7. **Export Functionality**: Save visualizations as images
|
|
|
|
## Iteration Success Criteria
|
|
|
|
✅ **Web Learning**: Fetched and applied heatmap documentation
|
|
✅ **Heatmap Implementation**: All key paint properties configured correctly
|
|
✅ **Climate Data**: Realistic 280-station global dataset
|
|
✅ **Pattern Visibility**: Arctic amplification and regional trends clear
|
|
✅ **Multi-Scale**: Heatmap (global) + circles (local) working seamlessly
|
|
✅ **Globe Features**: Atmosphere, rotation, controls maintained
|
|
✅ **Documentation**: README explains heatmap advantages over circles
|
|
✅ **Code Quality**: Well-commented, organized, production-ready
|
|
|
|
## Connection to Learning Series
|
|
|
|
This iteration demonstrates:
|
|
- **Progressive complexity**: Building on globe 1's foundation
|
|
- **Web-enhanced learning**: Real documentation informing development
|
|
- **Technique diversity**: Different visualization for different data types
|
|
- **Professional quality**: Production-ready implementation
|
|
|
|
The series showcases how web research + iterative development = rapid skill acquisition in geospatial visualization.
|