# onex_agent **Repository Path**: HTKing/onex_agent ## Basic Information - **Project Name**: onex_agent - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-20 - **Last Updated**: 2026-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GIS 分析平台 高性能地理信息系统分析平台,支持对千万级矢量数据进行快速统计分析。 ## 功能特性 - **多数据源支持**:支持连接 Shapefile、FileGDB (ESRI) 和 PostGIS 数据库 - **高性能统计**:针对大规模数据集优化的并行处理引擎 - **交互式地图**:使用 Leaflet 实现矢量数据可视化 - **快速聚合**:基于网格和字段的空间聚合分析 ## 项目结构 ``` /workspace ├── backend/ # Python/FastAPI 后端 │ ├── api/ │ │ └── routes.py # API 路由 │ ├── core/ │ │ ├── config.py # 配置管理 │ │ ├── datasource.py # 数据源基类 │ │ ├── statistics_engine.py # 高性能统计引擎 │ │ └── sources/ # 数据源实现 │ │ ├── shapefile_source.py │ │ ├── gdb_source.py │ │ └── postgis_source.py │ ├── models/ │ │ └── schemas.py # Pydantic 数据模型 │ └── main.py # FastAPI 入口 ├── frontend/ # Vue 3 + Vite 前端 │ ├── src/ │ │ ├── views/ # 视图组件 │ │ │ ├── DataSourcePanel.vue # 数据源连接 │ │ │ ├── MapView.vue # 地图可视化 │ │ │ └── StatisticsPanel.vue # 统计分析 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── index.html │ ├── package.json │ └── vite.config.js # Vite 配置 ├── requirements.txt # Python 依赖 └── start.sh # 启动脚本 ``` ## 核心能力 | 功能 | 技术实现 | |------|---------| | **GDB/Shapefile 读取** | GeoPandas + Fiona + GDAL/pyogrio | | **PostGIS 集成** | GeoAlchemy2 + SQLAlchemy | | **千万级统计** | ThreadPoolExecutor 并行 + R-tree 空间索引 | | **前端地图** | Leaflet + Vue 3 | | **快速聚合** | 基于网格和字段的空间聚合 | | **反向代理** | Vite 代理到后端 `/api` | ### 性能优化 1. **并行处理**:使用 ThreadPoolExecutor 并行计算字段统计 2. **空间索引**:R-tree 索引加速空间查询 3. **分块处理**:可配置的分块处理(默认:100,000 条) 4. **采样**:对超大规模数据集可选采样做初步统计 ## 技术栈 ### 后端 - **FastAPI** - Web 框架 - **GeoPandas** - 地理空间数据处理 - **Fiona/GDAL** - Shapefile 和 GDB 读取 - **GeoAlchemy2** - PostGIS 集成 - **Pandas/NumPy** - 数据处理 - **Rtree** - 空间索引 ### 前端 - **Vue 3** - UI 框架 - **Vite** - 构建工具 - **Leaflet** - 地图可视化 - **Element Plus** - UI 组件库 - **Axios** - HTTP 客户端 - **Pinia** - 状态管理 ## 快速开始 ### 环境要求 - Python 3.10+ - Node.js 18+ - PostGIS(可选,用于数据库连接) ### 安装 ```bash # 安装 Python 依赖 pip install -r requirements.txt # 安装前端依赖 cd frontend npm install cd .. ``` ### 运行 ```bash # 启动前后端服务 chmod +x start.sh ./start.sh # 或分别启动: # 后端:cd backend && python -m uvicorn main:app --port 3001 # 前端:cd frontend && npm run dev ``` 访问应用:`http://localhost:5173` ## API 接口 ### 数据源管理 | 方法 | 接口 | 说明 | |------|------|------| | POST | `/api/datasource/connect` | 连接数据源 | | DELETE | `/api/datasource/{source_id}` | 断开连接 | | GET | `/api/datasource/layers/{source_id}` | 获取图层列表 | | POST | `/api/datasource/upload` | 上传文件 | ### 图层操作 | 方法 | 接口 | 说明 | |------|------|------| | GET | `/api/datasource/layers/{source_id}/{layer_name}/features` | 获取要素 | | GET | `/api/datasource/layers/{source_id}/{layer_name}/statistics` | 获取统计信息 | | POST | `/api/datasource/layers/{source_id}/{layer_name}/aggregate` | 按字段聚合 | | POST | `/api/datasource/layers/{source_id}/{layer_name}/grid-aggregate` | 网格聚合 | ## 配置 可在 `.env` 文件中设置环境变量: ``` POSTGIS_HOST=localhost POSTGIS_PORT=5432 POSTGIS_USER=postgres POSTGIS_PASSWORD=postgres POSTGIS_DB=gis MAX_WORKERS=4 CHUNK_SIZE=100000 ``` ## 数据源支持 ### Shapefile (.shp) - 单文件上传 - 通过 GeoPandas 直接读取路径 ### FileGDB (.gdb) - ESRI 文件地理数据库文件夹 - 多图层支持 - 只读访问 ### PostGIS - 带有 PostGIS 扩展的 PostgreSQL 数据库 - 通过 SQLAlchemy/GeoAlchemy2 连接 - 完整空间查询支持