A comprehensive AI-powered conversational system for ARGO float data that enables users to query, explore, and visualize oceanographic information using natural language with an interactive 3D globe interface.
- Black background with blue Earth - Optimized for oceanographic data visualization
- Country borders - White/light gray outlines for clear geographic reference
- Latitude/longitude coordinates - Precise positioning for all data points
- Rotation and zoom controls - Full 3D navigation capabilities
- Geographic labels - Seas, oceans, and countries clearly marked
- Natural language queries - Ask about salinity profiles, temperature data, BGC parameters
- Contextual responses - AI understands oceanographic terminology and concepts
- Quick query suggestions - Pre-built examples for common research questions
- Data export options - Export NetCDF files and view detailed profiles
- 9 Dummy floats positioned in the Indian Ocean region
- Real-time status indicators:
- π’ Active Floats - Currently collecting data
- π‘ Recent Data - Recently updated profiles
- π΄ BGC Sensors - Bio-Geo-Chemical sensor equipped floats
- Detailed float information - Temperature, salinity, depth, coordinates, last update
- Float trajectories - Historical movement patterns
- Split-screen layout - Chat interface on left, 3D globe on right
- Smooth transitions - Animated slide-in/out for map visibility
- Theme switching - Light/dark mode support
- Responsive design - Adapts to different screen sizes
- Next.js 14 - React framework with App Router
- react-globe.gl - 3D globe visualization library
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Lucide React - Modern icon library
- GeoJSON - World countries from D3 Graph Gallery
- ARGO Float Data - Simulated oceanographic measurements
- Geographic Labels - Comprehensive Indian Ocean region coverage
- Node.js 18+
- npm or yarn package manager
-
Clone or download the project ```bash git clone cd argo-float-chat ```
-
Install dependencies ```bash npm install
yarn install ```
-
Required packages (automatically installed): ```json { "react-globe.gl": "^2.27.0", "next": "^14.0.0", "react": "^18.0.0", "typescript": "^5.0.0", "tailwindcss": "^3.0.0", "lucide-react": "^0.400.0" } ```
-
Start development server ```bash npm run dev
yarn dev ```
-
Open in browser Navigate to
http://localhost:3000
``` βββ components/ β βββ float-chat.tsx # Main chat interface component β βββ argo-globe-3d.tsx # 3D globe visualization component β βββ ui/ # Shadcn UI components βββ app/ β βββ page.tsx # Main application page β βββ layout.tsx # Root layout with fonts β βββ globals.css # Global styles and theme βββ README.md # This documentation ```
- Launch the application - you'll see the chat interface
- Click the Globe button in the header to reveal the 3D map
- Use the theme toggle to switch between light/dark modes
- Quick queries - Click suggested examples to get started
- Natural language - Ask questions like:
- "Show salinity profiles near the equator in March 2023"
- "Find nearest ARGO floats to 20Β°N, 65Β°E"
- "Compare BGC parameters in Arabian Sea last 6 months"
- Data actions - Use "View Profiles" and "Export NetCDF" buttons
- Mouse controls:
- π±οΈ Drag to rotate the globe
- π Scroll to zoom in/out
- π Hover over floats for detailed information
- π Click countries for geographic info
- Float positions - Precise latitude/longitude coordinates
- Status indicators - Color-coded by operational status
- Oceanographic data - Temperature, salinity, depth measurements
- Trajectory tracking - Historical movement patterns
```typescript
interface ArgoFloat {
id: string; // WMO identifier (e.g., "WMO_5906468")
lat: number; // Latitude coordinate
lng: number; // Longitude coordinate
name: string; // Human-readable name
status: 'active' | 'recent' | 'bgc'; // Operational status
depth: number; // Maximum profiling depth (meters)
temperature?: number; // Sea surface temperature (Β°C)
salinity?: number; // Salinity (PSU)
lastUpdate: string; // Last data transmission date
trajectory?: Array<{lat: number; lng: number}>; // Movement history
}
```
```typescript interface GeographicLabel { lat: number; // Label latitude lng: number; // Label longitude name: string; // Geographic feature name type: 'ocean' | 'sea' | 'country'; // Feature type size: number; // Label size multiplier } ```
Edit components/argo-globe-3d.tsx and add to the argoFloats array:
```typescript
{
id: 'WMO_XXXXXX',
lat: -XX.X,
lng: XX.X,
name: 'Float Name',
status: 'active',
depth: 2000,
temperature: XX.X,
salinity: XX.X,
lastUpdate: '2024-01-15'
}
```
Add new labels to the geographicLabels array:
```typescript
{ lat: XX, lng: XX, name: 'Feature Name', type: 'ocean', size: 1.5 }
```
- Colors - Modify Tailwind classes in components
- Globe appearance - Adjust
react-globe.glprops - Themes - Update theme object in
float-chat.tsx
-
Globe not loading
- Ensure
react-globe.glis installed - Check browser console for WebGL errors
- Verify internet connection for GeoJSON data
- Ensure
-
Performance issues
- Reduce number of float points
- Lower globe resolution settings
- Close other browser tabs
-
Styling problems
- Clear browser cache
- Verify Tailwind CSS is properly configured
- Check for conflicting CSS rules
- Recommended: Chrome 90+, Firefox 88+, Safari 14+
- WebGL required for 3D globe functionality
- JavaScript enabled for all interactive features
- Real ARGO data integration - Connect to live oceanographic databases
- Advanced filtering - Filter floats by date, depth, parameters
- Data visualization - Charts and graphs for profile analysis
- Export capabilities - Multiple data format support
- User authentication - Personal data queries and saved searches
- Performance optimization - Lazy loading and data caching
- Mobile responsiveness - Touch-friendly 3D controls
- Accessibility - Screen reader support and keyboard navigation
- Testing suite - Comprehensive unit and integration tests
This is a proof-of-concept implementation for oceanographic data visualization. To contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is for educational and research purposes. Please respect the terms of use for any external data sources.
Built with β€οΈ for the oceanographic research community