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/
Metadata
Release files for earth-viz 0.0.469
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| earth_viz-0.0.469.tar.gz | 252.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| earth_viz-0.0.469-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 505.6 kB
Release files / earth_viz-0.0.469.tar.gz
| Download URL | earth_viz-0.0.469.tar.gz |
|---|---|
| Size | 252.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
435d8dee908b0fdaa91d03aea8b82f1da361411875398b548c99ef02db3654f5
|
|
BLAKE2b-256 checksum How to use checksums |
7b458c97097c8bfe9ea287cbebbd246772c25927ffc6606e86cc2ef91d621b59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / earth_viz-0.0.469-py3-none-any.whl
| Download URL | earth_viz-0.0.469-py3-none-any.whl |
|---|---|
| Size | 253.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a3a3f44388fdf83df33ae0d45db939f7e768d9b07971ab72afd56a42473cb582
|
|
BLAKE2b-256 checksum How to use checksums |
7da4b919c9ed73dbc93cedfe466a22000789441b76da776da92041a14e3a4b8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|