Skip to content

Repository files navigation

智云锋卫 - 3D卫星地图山洪监测系统

🌊 基于Next.js和React的现代化山洪预警监测系统,采用3D卫星地图技术,提供实时水文数据监测和智能预警服务。

🚀 项目特色

核心功能

  • 3D卫星地图显示 - 基于Google卫星图层的真实地理环境展示
  • 实时监测系统 - 水位、降雨量、温度、湿度等多维度数据监控
  • 智能预警机制 - 多级预警系统,支持危险、警告、正常三种状态
  • 科技化UI设计 - 深色主题,发光效果,动画过渡,现代化交互体验
  • 预报分析系统 - 气象预报、远程监控、水位预报三大模块
  • 数据可视化 - Chart.js图表展示历史趋势和预测数据

技术亮点

  • 无边框全屏设计 - 摒弃传统页头页脚,提供沉浸式监测体验
  • 实时数据更新 - 支持一键刷新和自动更新机制
  • 响应式布局 - 适配不同屏幕尺寸,优化用户体验
  • 性能优化 - 地图瓦片缓存,减少加载闪烁,提升渲染性能

🛠️ 技术栈详解

前端框架

  • Next.js 15.2.4 - React全栈框架,支持SSR和静态生成
  • React 19 - 用户界面构建库,最新版本
  • TypeScript 5 - 类型安全的JavaScript超集

UI组件库

  • Tailwind CSS 3.4.17 - 原子化CSS框架,快速样式开发
  • Lucide React 0.454.0 - 现代化图标库
  • Radix UI - 无障碍的原生UI组件集合
    • @radix-ui/react-accordion - 手风琴组件
    • @radix-ui/react-dialog - 对话框组件
    • @radix-ui/react-dropdown-menu - 下拉菜单
    • @radix-ui/react-popover - 弹出框组件
    • @radix-ui/react-tooltip - 工具提示

地图与可视化

  • Leaflet 1.9.4 - 开源JavaScript地图库
  • React Leaflet 5.0.0 - Leaflet的React封装组件
  • Chart.js 4.4.9 - 强大的图表库
  • React Chart.js 2 5.3.0 - Chart.js的React组件
  • Recharts 2.15.0 - 基于React的图表库

表单与验证

  • React Hook Form 7.54.1 - 高性能表单处理库
  • Zod 3.24.1 - TypeScript优先的模式验证库
  • @hookform/resolvers 3.9.1 - Hook Form验证器集成

工具库

  • clsx 2.1.1 - 条件CSS类名工具
  • class-variance-authority 0.7.1 - CSS变体管理
  • tailwind-merge 2.5.5 - Tailwind类名合并工具
  • date-fns 4.1.0 - 现代JavaScript日期工具库

开发工具

  • PostCSS 8 - CSS处理工具
  • Autoprefixer 10.4.20 - CSS自动添加厂商前缀
  • ESLint - 代码质量检测工具

📁 项目结构

zhiyunfengwei/
├── app/                          # Next.js App Router
│   ├── monitoring/               # 监测页面
│   │   └── page.tsx             # 主监测页面入口
│   ├── history/                  # 历史数据页面
│   ├── settings/                 # 系统设置页面
│   ├── globals.css              # 全局样式
│   ├── layout.tsx               # 根布局组件
│   └── page.tsx                 # 首页
├── components/                   # 可复用组件
│   ├── monitor/                  # 监测相关组件
│   │   ├── 3d-satellite-monitoring.tsx  # 3D卫星监测主组件
│   │   ├── forecast-panel.tsx    # 预报面板组件
│   │   └── enhanced-map-monitoring.tsx  # 增强地图组件(备用)
│   ├── warning/                  # 预警组件
│   │   └── warning-alert.tsx     # 预警提醒组件
│   └── ui/                       # 基础UI组件
├── public/                       # 静态资源
│   ├── leaflet/                  # Leaflet地图图标
│   └── images/                   # 项目图片资源
├── tailwind.config.ts           # Tailwind配置
├── package.json                 # 项目依赖配置
└── README.md                    # 项目文档

🗂️ 核心组件说明

1. 3D卫星监测主组件 (3d-satellite-monitoring.tsx)

功能描述: 系统核心组件,提供完整的监测界面 主要特性:

  • 基于Google卫星图层的高清地图显示
  • 实时监测站数据展示和状态管理
  • 交互式地图标记和弹窗信息
  • 左侧监测站控制面板
  • 右侧数据分析和趋势图表
  • 底部功能控制栏
  • 科技化动画效果和毛玻璃背景

核心技术:

// 地图优化配置
<MapContainer
  preferCanvas={true}              // Canvas渲染提升性能
  keepBuffer={4}                   // 缓存瓦片减少闪烁
  updateWhenIdle={false}           // 实时更新
  updateWhenZooming={true}         // 缩放时更新
>
  <TileLayer
    url="https://mt{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}"
    subdomains={['0', '1', '2', '3']}  // 多子域名加速
    maxZoom={20}
    keepBuffer={4}
  />
</MapContainer>

2. 预报面板组件 (forecast-panel.tsx)

功能描述: 多功能预报分析面板 主要模块:

  • 气象预报: 温度趋势图、降雨量柱状图、风力气压数据
  • 远程监控: 视频监控、无人机巡检、设备状态监控
  • 水位预报: AI预测模型、关键指标、水利设施状态

数据可视化:

// Chart.js配置示例
const chartOptions = {
  responsive: true,
  maintainAspectRatio: false,
  scales: {
    x: { grid: { color: "rgba(255, 255, 255, 0.1)" } },
    y: { grid: { color: "rgba(255, 255, 255, 0.1)" } }
  }
};

3. 监测站数据类型定义

type MonitorStation = {
  id: string;                      // 监测站唯一标识
  name: string;                    // 监测站名称
  coordinates: [number, number];   // GPS坐标
  status: "normal" | "warning" | "danger"; // 状态
  waterLevel: {                    // 水位数据
    current: number;               // 当前水位
    warning: number;               // 警戒水位
    danger: number;                // 危险水位
    trend: "up" | "down" | "stable"; // 趋势
    history: Array<{time: string; value: number}>; // 历史
  };
  rainfall: { /* 降雨量数据 */ };
  temperature: number;             // 温度
  humidity: number;                // 湿度
  windSpeed: number;               // 风速
  pressure: number;                // 气压
  lastUpdate: string;              // 更新时间
};

🎨 UI设计系统

色彩方案

  • 主色调: 深蓝灰色系 (bg-gray-900)
  • 强调色: 青色 (#00d4ff) - 用于数据高亮和交互元素
  • 状态色彩:
    • 正常: 绿色 (#44ff44)
    • 警告: 橙色 (#ffaa00)
    • 危险: 红色 (#ff4444)

动画效果

/* 自定义动画关键帧 */
@keyframes pulse {
  0% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.3); opacity: 0.8; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes slide-up {
  0% { opacity: 0; transform: translateY(100px); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes glow {
  0%, 100% { box-shadow: 0 0 5px rgba(0, 212, 255, 0.5); }
  50% { box-shadow: 0 0 20px rgba(0, 212, 255, 0.8); }
}

毛玻璃效果

.backdrop-blur-md {
  backdrop-filter: blur(12px);
  background: rgba(17, 24, 39, 0.95);
}

🚀 快速开始

环境要求

  • Node.js 18.0 或更高版本
  • npm 或 yarn 包管理器

安装步骤

# 克隆项目
git clone [项目地址]
cd zhiyunfengwei

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 构建生产版本
npm run build

# 启动生产服务器
npm start

开发访问

  • 开发环境: http://localhost:3000
  • 监测系统: http://localhost:3000/monitoring

🔧 地图优化说明

问题解决

原始Leaflet地图存在瓦片分块加载的视觉问题,通过以下优化措施解决:

  1. 多子域名加载 - 使用Google地图的4个子域名并行加载瓦片
  2. 缓冲区设置 - keepBuffer={4} 预加载周围瓦片
  3. 实时更新 - updateWhenIdle={false} 地图移动时持续更新
  4. Canvas渲染 - preferCanvas={true} 提升渲染性能
  5. 高缩放级别 - 支持最高20级缩放,提供详细地理信息

地图配置

<TileLayer
  url="https://mt{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}"
  subdomains={['0', '1', '2', '3']}      // 多子域名
  maxZoom={20}                           // 最大缩放
  minZoom={10}                           // 最小缩放
  tileSize={256}                         // 瓦片大小
  keepBuffer={4}                         // 缓冲瓦片
  updateWhenIdle={false}                 // 实时更新
  updateWhenZooming={true}               // 缩放更新
/>

📊 数据流架构

状态管理

  • 使用React Hooks进行本地状态管理
  • 监测站数据通过useState集中管理
  • 实时时间更新使用useEffect定时器

数据更新机制

// 数据刷新功能
const refreshData = () => {
  setIsDataLoading(true);
  // 模拟API调用
  setTimeout(() => {
    setIsDataLoading(false);
    console.log("数据刷新完成");
  }, 1500);
};

🔄 未来扩展

可扩展功能

  1. WebSocket实时数据 - 替换模拟数据为真实API接口
  2. 用户权限管理 - 添加登录认证和角色权限
  3. 历史数据分析 - 长期趋势分析和数据挖掘
  4. 移动端优化 - PWA支持和移动端适配
  5. 多语言支持 - 国际化配置
  6. AI预测模型 - 集成机器学习算法进行智能预警

API接口设计

// 建议的API接口结构
interface APIEndpoints {
  getStations: () => Promise<MonitorStation[]>;
  getStationData: (stationId: string) => Promise<StationData>;
  getForecast: (type: string) => Promise<ForecastData>;
  updateStationStatus: (stationId: string, status: string) => Promise<void>;
}

📄 许可证

本项目采用 MIT 许可证

👥 贡献指南

欢迎提交Issue和Pull Request来改进项目


开发团队: 智云锋卫项目组
最后更新: 2025年1月
版本: v1.0.0

About

智云锋卫 — 3D satellite-map flood monitoring system (Next.js 15 + React 19 + TypeScript)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages