# lsd-ff/beidou_map architecture

> Architecture diagram of the GitHub repository lsd-ff/beidou_map, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lsd-ff/beidou_map
- Repository: https://github.com/lsd-ff/beidou_map

## Overview

这是一个以 FastAPI、PostGIS 和 Vue 地图界面组成的农田 GIS 系统。用户可在地图驾驶舱查看农田边界、农业专题图层、统计与预警，或进入数据台账查询和维护记录；后端提供空间查询、综合详情、趋势及 CRUD。README 明确说明六类业务数据存储于 PostGIS，并采用 Router → Service → Repository → Database 分层。图中保留该主流程和仪表盘、台账、地图展示等能力；部分未抽样实现仅按 README 与现有目录标注，未推断具体服务间调用。

Main entry points: [`frontend/src/views/MapCockpit.vue`](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/views/MapCockpit.vue) (地图驾驶舱), [`frontend/src/components/map/MapCanvas.vue`](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/components/map/MapCanvas.vue) (地图画布), [`backend/app/api/routes`](https://github.com/lsd-ff/beidou_map/tree/master/backend/app/api/routes) (业务路由), [`backend/app/services/farmland_service.py`](https://github.com/lsd-ff/beidou_map/blob/master/backend/app/services/farmland_service.py) (地块服务)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["地图与台账界面"]
  node_cockpit["地图驾驶舱<br/>[MapCockpit.vue]"]
  node_mapcanvas["地图画布<br/>[MapCanvas.vue]"]
  node_layerui["图层控制<br/>[LayerPanel.vue]"]
  node_layer_manager["图层管理器<br/>[layerManager.ts]"]
  node_dashboard_ui["统计与预警"]
  node_data_view["数据台账<br/>[DataListView.vue]"]
  node_http["前端 API 客户端"]
  node_amap_loader["地图加载器<br/>[useAmap.ts]"]
end

subgraph group_api["REST API"]
  node_api_app["FastAPI 应用<br/>[main.py]"]
  node_api_router["API 路由<br/>[router.py]"]
  node_route_groups["业务路由"]
end

subgraph group_domain["业务服务"]
  node_farmland_service["地块服务"]
  node_dashboard_service["仪表盘服务"]
  node_theme_services["专题与地图服务"]
  node_geojson_service["GeoJSON 与坐标<br/>[geojson_service.py]"]
end

subgraph group_data["空间数据"]
  node_repositories["数据仓储"]
  node_models["业务模型"]
  node_database[("PostGIS 数据库<br/>[database.py]")]
end

subgraph group_external["外部服务"]
  node_amap["高德地图"]
end

node_user(("用户"))

node_user -->|"打开地图"| node_cockpit
node_user -->|"维护数据"| node_data_view
node_cockpit -->|"展示地图"| node_mapcanvas
node_cockpit -->|"展示统计"| node_dashboard_ui
node_cockpit -->|"请求数据"| node_http
node_data_view -->|"查询与提交"| node_http
node_mapcanvas -->|"控制图层"| node_layerui
node_mapcanvas -->|"绘制地块"| node_layer_manager
node_mapcanvas -->|"加载地图"| node_amap_loader
node_amap_loader -.->|"加载底图"| node_amap
node_http -->|"REST 请求"| node_api_app
node_api_app -->|"分发请求"| node_api_router
node_api_router -->|"注册路由"| node_route_groups
node_route_groups -->|"调用地块业务"| node_farmland_service
node_route_groups -->|"调用统计业务"| node_dashboard_service
node_route_groups -->|"调用专题业务"| node_theme_services
node_farmland_service -->|"转换空间数据"| node_geojson_service
node_farmland_service -->|"访问地块数据"| node_repositories
node_dashboard_service -->|"查询统计"| node_database
node_theme_services -->|"访问专题数据"| node_repositories
node_repositories -->|"读写记录"| node_database
node_models -->|"映射业务表"| node_database

click node_cockpit "https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/views/MapCockpit.vue"
click node_mapcanvas "https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/components/map/MapCanvas.vue"
click node_layerui "https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/components/map/LayerPanel.vue"
click node_layer_manager "https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/map/layerManager.ts"
click node_dashboard_ui "https://github.com/lsd-ff/beidou_map/tree/master/frontend/src/components/dashboard"
click node_data_view "https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/views/DataListView.vue"
click node_http "https://github.com/lsd-ff/beidou_map/tree/master/frontend/src/api"
click node_amap_loader "https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/composables/useAmap.ts"
click node_api_app "https://github.com/lsd-ff/beidou_map/blob/master/backend/app/main.py"
click node_api_router "https://github.com/lsd-ff/beidou_map/blob/master/backend/app/api/router.py"
click node_route_groups "https://github.com/lsd-ff/beidou_map/tree/master/backend/app/api/routes"
click node_farmland_service "https://github.com/lsd-ff/beidou_map/blob/master/backend/app/services/farmland_service.py"
click node_dashboard_service "https://github.com/lsd-ff/beidou_map/blob/master/backend/app/services/dashboard_service.py"
click node_theme_services "https://github.com/lsd-ff/beidou_map/tree/master/backend/app/services"
click node_geojson_service "https://github.com/lsd-ff/beidou_map/blob/master/backend/app/services/geojson_service.py"
click node_repositories "https://github.com/lsd-ff/beidou_map/tree/master/backend/app/repositories"
click node_models "https://github.com/lsd-ff/beidou_map/tree/master/backend/app/models"
click node_database "https://github.com/lsd-ff/beidou_map/blob/master/backend/app/core/database.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cockpit,node_mapcanvas,node_layerui,node_layer_manager,node_dashboard_ui,node_data_view,node_http,node_amap_loader toneBlue
class node_api_app,node_api_router,node_route_groups toneAmber
class node_farmland_service,node_dashboard_service,node_theme_services,node_geojson_service toneMint
class node_repositories,node_models,node_database toneRose
class node_amap,node_user toneIndigo
```

## Components

### 地图与台账界面

- [地图驾驶舱](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/views/MapCockpit.vue): `frontend/src/views/MapCockpit.vue`
- [地图画布](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/components/map/MapCanvas.vue): `frontend/src/components/map/MapCanvas.vue`
- [图层控制](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/components/map/LayerPanel.vue): `frontend/src/components/map/LayerPanel.vue`
- [图层管理器](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/map/layerManager.ts): `frontend/src/map/layerManager.ts`
- [统计与预警](https://github.com/lsd-ff/beidou_map/tree/master/frontend/src/components/dashboard): `frontend/src/components/dashboard`
- [数据台账](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/views/DataListView.vue): `frontend/src/views/DataListView.vue`
- [前端 API 客户端](https://github.com/lsd-ff/beidou_map/tree/master/frontend/src/api): `frontend/src/api`
- [地图加载器](https://github.com/lsd-ff/beidou_map/blob/master/frontend/src/composables/useAmap.ts): `frontend/src/composables/useAmap.ts`

### REST API

- [FastAPI 应用](https://github.com/lsd-ff/beidou_map/blob/master/backend/app/main.py): `backend/app/main.py`
- [API 路由](https://github.com/lsd-ff/beidou_map/blob/master/backend/app/api/router.py): `backend/app/api/router.py`
- [业务路由](https://github.com/lsd-ff/beidou_map/tree/master/backend/app/api/routes): `backend/app/api/routes`

### 业务服务

- [地块服务](https://github.com/lsd-ff/beidou_map/blob/master/backend/app/services/farmland_service.py): `backend/app/services/farmland_service.py`
- [仪表盘服务](https://github.com/lsd-ff/beidou_map/blob/master/backend/app/services/dashboard_service.py): `backend/app/services/dashboard_service.py`
- [专题与地图服务](https://github.com/lsd-ff/beidou_map/tree/master/backend/app/services): `backend/app/services`
- [GeoJSON 与坐标](https://github.com/lsd-ff/beidou_map/blob/master/backend/app/services/geojson_service.py): `backend/app/services/geojson_service.py`

### 空间数据

- [数据仓储](https://github.com/lsd-ff/beidou_map/tree/master/backend/app/repositories): `backend/app/repositories`
- [业务模型](https://github.com/lsd-ff/beidou_map/tree/master/backend/app/models): `backend/app/models`
- [PostGIS 数据库](https://github.com/lsd-ff/beidou_map/blob/master/backend/app/core/database.py): `backend/app/core/database.py`

### 外部服务

- **高德地图**

### Other components

- **用户**

## Connections

- 用户 → 地图驾驶舱: 打开地图
- 用户 → 数据台账: 维护数据
- 地图驾驶舱 → 地图画布: 展示地图
- 地图驾驶舱 → 统计与预警: 展示统计
- 地图驾驶舱 → 前端 API 客户端: 请求数据
- 数据台账 → 前端 API 客户端: 查询与提交
- 地图画布 → 图层控制: 控制图层
- 地图画布 → 图层管理器: 绘制地块
- 地图画布 → 地图加载器: 加载地图
- 地图加载器 → 高德地图: 加载底图
- 前端 API 客户端 → FastAPI 应用: REST 请求
- FastAPI 应用 → API 路由: 分发请求
- API 路由 → 业务路由: 注册路由
- 业务路由 → 地块服务: 调用地块业务
- 业务路由 → 仪表盘服务: 调用统计业务
- 业务路由 → 专题与地图服务: 调用专题业务
- 地块服务 → GeoJSON 与坐标: 转换空间数据
- 地块服务 → 数据仓储: 访问地块数据
- 仪表盘服务 → PostGIS 数据库: 查询统计
- 专题与地图服务 → 数据仓储: 访问专题数据
- 数据仓储 → PostGIS 数据库: 读写记录
- 业务模型 → PostGIS 数据库: 映射业务表
