Earth Visualization Backend - FastAPI router for weather data and earth imagery
Project description
Earth-Viz Backend
FastAPI backend server for the Earth-Viz interactive globe visualization.
What It Does
- Serves the Earth-Viz web application
- Proxies NOAA weather data requests (OpenDAP and GRIB2)
- Generates real-time cloud imagery from satellite data
- Provides WebSocket API for programmatic control of the visualization
- Serves static planet textures
Quick Start
pip install earth-viz
earth-viz-setup # Download static files (one-time, ~100MB)
earth-viz-server # Start server
The application will be available at http://localhost:8000/earth-viz-app/
Installation
Prerequisites
- Python 3.8+
- pip package manager
Install Package
pip install earth-viz
Download Static Files
The package requires high-resolution planet textures (~300MB). Download them once:
earth-viz-setup
This downloads static images to ~/.globe-server/static_images/
Start Server
earth-viz-server
API Endpoints
Web Application
GET /earth-viz-app/ # Main application
Health & Status
GET /earth-viz/api/health # Health check
GET /earth-viz/api/status # Connection status
Data Proxies
GET /earth-viz/api/proxy/opendap?url={url} # OpenDAP data proxy
GET /earth-viz/api/cgi-bin/filter_gfs_0p25.pl # GRIB2 data proxy
Planet Images
GET /earth-viz/api/planets/{planet_name} # Static planet textures
Supported planets: earth, mars, venus, moon, jupiter, saturn, uranus, neptune, mercury
Cloud Generation
GET /earth-viz/api/live-earth/status # Trigger cloud generation
WebSocket Control
WS /earth-viz/ws # Control connection
WebSocket Control API
Connect to /earth-viz/ws to send commands to the visualization:
const ws = new WebSocket('ws://localhost:8000/earth-viz/ws');
ws.send(JSON.stringify({
type: 'EARTH_COMMAND',
command: 'setProjection',
params: ['orthographic']
}));
Available commands:
setProjection(projection)- Set map projectionsetOverlay(type)- Set overlay typesetAirMode(level, particleType, overlayType)- Air modesetOceanMode(particleType, overlayType)- Ocean modesetPlanetMode(planet)- Planet modesetLevel(level)- Set atmospheric levelshowGrid()/hideGrid()- Toggle gridsetWindUnits(units)- Set wind unitssetDate(date)/setHour(hour)- Time controlsnavigateTime(hours)- Navigate timegoToNow()- Reset to current timehideUI()/showUI()- Toggle UIenableFullScreen()/disableFullScreen()- Fullscreen
Integration Mode
Mount the Earth-Viz router in your own FastAPI application:
from fastapi import FastAPI
from earth_viz_backend.earth_viz_api import create_earth_viz_router
from earth_viz_backend.earth_control import create_earth_control_router
from earth_viz_backend.services.cloud_scheduler import scheduler
import asyncio
app = FastAPI()
# Mount routers
app.include_router(create_earth_viz_router())
app.include_router(create_earth_control_router())
# Add lifecycle handlers
@app.on_event("startup")
async def startup():
asyncio.create_task(scheduler.start())
@app.on_event("shutdown")
async def shutdown():
await scheduler.stop()
Programmatic Control
Control the visualization from Python:
from earth_viz_backend.earth_control import (
set_projection,
set_air_mode,
set_planet_mode,
await_earth_connection
)
# Wait for frontend to connect
await await_earth_connection(timeout=30.0)
# Send commands
await set_projection("orthographic")
await set_air_mode("surface", "wind", "temp")
await set_planet_mode("mars")
Development
API documentation available at:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
File Locations
- Static images:
~/.globe-server/static_images/ - Generated clouds:
~/.globe-server/images/ - Package source:
src/earth_viz_backend/ - Frontend app:
src/earth_viz_backend/static/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file earth_viz-0.0.462.tar.gz.
File metadata
- Download URL: earth_viz-0.0.462.tar.gz
- Upload date:
- Size: 251.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9b1e7798a0f5884758bfee2739af90653283cd2d5e8c321c55810421aa4ed4b
|
|
| MD5 |
ace995a1dea8f6d2989ae70f4f4cb6ca
|
|
| BLAKE2b-256 |
06616beffcc0d84cff6c3e5fcd074405d0a9c998a4c6be381ff17f0f40a128a9
|
File details
Details for the file earth_viz-0.0.462-py3-none-any.whl.
File metadata
- Download URL: earth_viz-0.0.462-py3-none-any.whl
- Upload date:
- Size: 252.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e459db63847f41c00def035a13447a0ef4fe6fcc491b48712bfee39c6263c37a
|
|
| MD5 |
9559cdee3cc1487efba3ad92d55f1f06
|
|
| BLAKE2b-256 |
de23a78ad638c9af02e620de4564bc6b119778044f7bb0a5b83ea1204914a673
|