# opendreamstudioresearch/dji_way_line architecture

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

- Interactive diagram: https://gitdiagram.com/opendreamstudioresearch/dji_way_line
- Repository: https://github.com/opendreamstudioresearch/dji_way_line

## Overview

DJI Waypoint KMZ Generator is a Vue/Cesium mission-planning application: users create or select a mission, plan and edit a route on a map, configure flight and waypoint actions, preview camera/gimbal behavior, then export a DJI-compatible WPML KMZ. The README also documents KMZ import, area scanning and commercial route types. Their UI paths exist in the tree, but sampled implementation excerpts are incomplete; the graph shows documented capabilities without asserting unsampled algorithm wiring.

Main entry points: [`src/components/WaypointGenerator/editors/WaypointEditor.vue`](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/editors/WaypointEditor.vue) (Waypoint editor), [`src/components/WaypointGenerator/index.vue`](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/index.vue) (Mission workspace), [`src/utils/kmzGenerator.js`](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/kmzGenerator.js) (WPML KMZ generator), [`backend/server.mjs`](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/backend/server.mjs) (Generation API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_planning["Mission planning"]
  node_app["Vue application<br/>[App.vue]"]
  node_generator["Mission workspace<br/>[index.vue]"]
  node_library["Mission library<br/>[MissionLibrary.vue]"]
  node_create["Mission setup"]
end

subgraph group_editing["Route editing"]
  node_map["Route map<br/>[MapViewer.vue]"]
  node_editor["Waypoint editor<br/>[WaypointEditor.vue]"]
  node_list["Waypoint actions<br/>[WaypointList.vue]"]
  node_properties["Waypoint properties"]
  node_config["Flight configuration"]
  node_route_types["Route definitions<br/>[waypointRoute.js]"]
  node_strip_types["Strip route definitions<br/>[stripRoute.js]"]
  node_geometry["Geometry route definitions<br/>[geometryRoute.js]"]
  node_slope["Slope route definitions<br/>[slopeRoute.js]"]
  node_validator["Route validation"]
end

subgraph group_export["Mission interchange"]
  node_kmz["WPML KMZ generator<br/>[kmzGenerator.js]"]
  node_coordinates["Coordinate conversion<br/>[coordTransform.js]"]
  node_local_files["Local wayline files"]
  node_aircraft["Aircraft metadata<br/>[aircraftModels.js]"]
end

subgraph group_service["Preview and API"]
  node_camera["Camera preview<br/>[CameraPreview.vue]"]
  node_api["Generation API<br/>[server.mjs]"]
end

node_user(("Mission planner"))
node_flight_hub(("DJI FlightHub 2"))
node_browser(("Browser download"))
node_map_service(("Map and terrain services"))

node_user -->|"opens"| node_app
node_app -->|"renders"| node_generator
node_generator -->|"shows missions"| node_library
node_generator -->|"opens setup"| node_create
node_generator -->|"supplies route state"| node_map
node_generator -->|"opens editing"| node_editor
node_editor -->|"displays route"| node_map
node_editor -->|"edits waypoints"| node_list
node_editor -->|"edits properties"| node_properties
node_editor -->|"configures flight"| node_config
node_editor -.->|"validates parameters"| node_validator
node_map -.->|"loads imagery and terrain"| node_map_service
node_camera -.->|"loads imagery and terrain"| node_map_service
node_generator -->|"generates mission file"| node_kmz
node_editor -->|"generates mission file"| node_kmz
node_kmz -->|"converts coordinates"| node_coordinates
node_generator -->|"downloads file"| node_local_files
node_editor -->|"downloads file"| node_local_files
node_local_files -->|"saves file"| node_browser
node_kmz -->|"returns KMZ blob"| node_browser
node_kmz -.->|"uses aircraft metadata"| node_aircraft
node_user -.->|"posts mission request"| node_api
node_api -->|"normalizes aircraft config"| node_aircraft
node_api -->|"generates KMZ"| node_kmz
node_api -->|"returns KMZ download"| node_browser
node_flight_hub -.->|"imports exported mission"| node_user

click node_app "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/App.vue"
click node_generator "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/index.vue"
click node_library "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/MissionLibrary.vue"
click node_create "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/CreateMissionModal.vue"
click node_map "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/MapViewer.vue"
click node_editor "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/editors/WaypointEditor.vue"
click node_list "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/WaypointList.vue"
click node_properties "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/editors/WaypointPropertyPanel.vue"
click node_config "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/pro/MissionConfigPro.vue"
click node_route_types "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/waypointRoute.js"
click node_strip_types "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/stripRoute.js"
click node_geometry "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/geometryRoute.js"
click node_slope "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/slopeRoute.js"
click node_validator "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/parameterValidator.js"
click node_kmz "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/kmzGenerator.js"
click node_coordinates "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/coordTransform.js"
click node_local_files "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/localWaylineFile.js"
click node_aircraft "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/constants/aircraftModels.js"
click node_camera "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/pro/CameraPreview.vue"
click node_api "https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/backend/server.mjs"

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_app,node_generator,node_library,node_create,node_browser toneBlue
class node_map,node_editor,node_list,node_properties,node_config,node_route_types,node_strip_types,node_geometry,node_slope,node_validator toneAmber
class node_kmz,node_coordinates,node_local_files,node_aircraft toneMint
class node_camera,node_api toneRose
class node_user,node_flight_hub,node_map_service toneIndigo
```

## Components

### Mission planning

- [Vue application](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/App.vue): `src/App.vue`
- [Mission workspace](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/index.vue): `src/components/WaypointGenerator/index.vue`
- [Mission library](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/MissionLibrary.vue): `src/components/WaypointGenerator/MissionLibrary.vue`
- [Mission setup](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/CreateMissionModal.vue): `src/components/WaypointGenerator/CreateMissionModal.vue`

### Route editing

- [Route map](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/MapViewer.vue): `src/components/WaypointGenerator/MapViewer.vue`
- [Waypoint editor](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/editors/WaypointEditor.vue): `src/components/WaypointGenerator/editors/WaypointEditor.vue`
- [Waypoint actions](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/WaypointList.vue): `src/components/WaypointGenerator/WaypointList.vue`
- [Waypoint properties](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/editors/WaypointPropertyPanel.vue): `src/components/WaypointGenerator/editors/WaypointPropertyPanel.vue`
- [Flight configuration](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/pro/MissionConfigPro.vue): `src/components/WaypointGenerator/pro/MissionConfigPro.vue`
- [Route definitions](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/waypointRoute.js): `src/types/waypointRoute.js`
- [Strip route definitions](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/stripRoute.js): `src/types/stripRoute.js`
- [Geometry route definitions](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/geometryRoute.js): `src/types/geometryRoute.js`
- [Slope route definitions](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/types/slopeRoute.js): `src/types/slopeRoute.js`
- [Route validation](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/parameterValidator.js): `src/utils/parameterValidator.js`

### Mission interchange

- [WPML KMZ generator](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/kmzGenerator.js): `src/utils/kmzGenerator.js`
- [Coordinate conversion](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/coordTransform.js): `src/utils/coordTransform.js`
- [Local wayline files](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/utils/localWaylineFile.js): `src/utils/localWaylineFile.js`
- [Aircraft metadata](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/constants/aircraftModels.js): `src/constants/aircraftModels.js`

### Preview and API

- [Camera preview](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/src/components/WaypointGenerator/pro/CameraPreview.vue): `src/components/WaypointGenerator/pro/CameraPreview.vue`
- [Generation API](https://github.com/opendreamstudioresearch/dji_way_line/blob/v2/backend/server.mjs): `backend/server.mjs`

### Other components

- **Mission planner**
- **DJI FlightHub 2**
- **Browser download**
- **Map and terrain services**

## Connections

- Mission planner → Vue application: opens
- Vue application → Mission workspace: renders
- Mission workspace → Mission library: shows missions
- Mission workspace → Mission setup: opens setup
- Mission workspace → Route map: supplies route state
- Mission workspace → Waypoint editor: opens editing
- Waypoint editor → Route map: displays route
- Waypoint editor → Waypoint actions: edits waypoints
- Waypoint editor → Waypoint properties: edits properties
- Waypoint editor → Flight configuration: configures flight
- Waypoint editor → Route validation: validates parameters
- Route map → Map and terrain services: loads imagery and terrain
- Camera preview → Map and terrain services: loads imagery and terrain
- Mission workspace → WPML KMZ generator: generates mission file
- Waypoint editor → WPML KMZ generator: generates mission file
- WPML KMZ generator → Coordinate conversion: converts coordinates
- Mission workspace → Local wayline files: downloads file
- Waypoint editor → Local wayline files: downloads file
- Local wayline files → Browser download: saves file
- WPML KMZ generator → Browser download: returns KMZ blob
- WPML KMZ generator → Aircraft metadata: uses aircraft metadata
- Mission planner → Generation API: posts mission request
- Generation API → Aircraft metadata: normalizes aircraft config
- Generation API → WPML KMZ generator: generates KMZ
- Generation API → Browser download: returns KMZ download
- DJI FlightHub 2 → Mission planner: imports exported mission
