# 89333367/util-gis architecture

> Architecture diagram of the GitHub repository 89333367/util-gis, 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/89333367/util-gis
- Repository: https://github.com/89333367/util-gis

## Overview

This is a Java GIS utility library for GPS and agricultural field-work analysis, not a hosted application. Its principal workflow accepts WGS84 points, filters and projects them, processes trajectory segments into field geometries, and returns plot or split summaries. README capabilities also include general geometry operations and distance/area calculations. The tree and README establish these public capabilities; implementation details beyond the sampled data classes are not verified, so links between internal algorithm stages are omitted where ownership is uncertain.

Main entry points: [`src/main/java/sunyu/util/GisUtil.java`](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java) (GIS utility API), [`src/main/java/sunyu/util/pojo/SplitRoadParams.java`](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/SplitRoadParams.java) (Split parameters), [`src/main/java/sunyu/util/pojo/FarmPlot.java`](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/FarmPlot.java) (Farm plot), [`src/main/java/sunyu/util/pojo/Wgs84Point.java`](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/Wgs84Point.java) (WGS84 points)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_coordinates["Coordinates and Geometry"]
  node_gis["GIS utility API<br/>[GisUtil.java]"]
  node_wgs["WGS84 points<br/>[Wgs84Point.java]"]
  node_gauss["Gauss points<br/>[GaussPoint.java]"]
  node_coordinate["Coordinate conversion<br/>[GisUtil.java]"]
  node_geometry["Geometry operations<br/>[GisUtil.java]"]
end

subgraph group_tracks["Trajectory and Farming"]
  node_track["Track filtering<br/>[GisUtil.java]"]
  node_window["Time windows<br/>[TimeWindow.java]"]
  node_time["Time ranges<br/>[TimeRange.java]"]
  node_polygon_time["Plot time ranges"]
  node_plot_generation["Field plot creation<br/>[GisUtil.java]"]
  node_road_split["Road splitting<br/>[GisUtil.java]"]
  node_split_params["Split parameters"]
end

subgraph group_results["Results and Metrics"]
  node_intersection["Intersection result"]
  node_plot_geometry["Plot geometry data"]
  node_farm_plot["Farm plot<br/>[FarmPlot.java]"]
  node_split_result["Split result<br/>[SplitResult.java]"]
  node_metrics["Distance and area<br/>[GisUtil.java]"]
end

node_caller(("Library caller"))

node_caller -->|"calls"| node_gis
node_caller -->|"supplies points"| node_wgs
node_gis -->|"provides conversions"| node_coordinate
node_coordinate -->|"produces projections"| node_gauss
node_gis -->|"provides operations"| node_geometry
node_geometry -->|"returns result"| node_intersection
node_gis -->|"provides filtering"| node_track
node_track -->|"segments by interval"| node_window
node_gis -->|"creates plots"| node_plot_generation
node_plot_generation -->|"returns plot"| node_farm_plot
node_gis -->|"provides splitting"| node_road_split
node_caller -->|"configures split"| node_split_params
node_road_split -->|"accepts options"| node_split_params
node_road_split -->|"returns summary"| node_split_result
node_road_split -.->|"uses result model"| node_plot_geometry
node_road_split -.->|"uses time model"| node_polygon_time
node_gis -->|"provides calculations"| node_metrics
node_metrics -->|"reports area"| node_farm_plot
node_gis -.->|"provides time-range operations"| node_time

click node_gis "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java"
click node_wgs "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/Wgs84Point.java"
click node_gauss "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/GaussPoint.java"
click node_coordinate "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java"
click node_geometry "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java"
click node_intersection "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/WktIntersectionResult.java"
click node_track "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java"
click node_window "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/TimeWindow.java"
click node_time "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/TimeRange.java"
click node_polygon_time "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/PolygonTimeRange.java"
click node_plot_generation "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java"
click node_road_split "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java"
click node_split_params "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/SplitRoadParams.java"
click node_plot_geometry "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/FarmPlotGeometryInfo.java"
click node_farm_plot "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/FarmPlot.java"
click node_split_result "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/SplitResult.java"
click node_metrics "https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java"

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_gis,node_wgs,node_gauss,node_coordinate,node_geometry toneBlue
class node_track,node_window,node_time,node_polygon_time,node_plot_generation,node_road_split,node_split_params toneAmber
class node_intersection,node_plot_geometry,node_farm_plot,node_split_result,node_metrics toneMint
class node_caller toneIndigo
```

## Components

### Coordinates and Geometry

- [GIS utility API](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java): `src/main/java/sunyu/util/GisUtil.java`
- [WGS84 points](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/Wgs84Point.java): `src/main/java/sunyu/util/pojo/Wgs84Point.java`
- [Gauss points](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/GaussPoint.java): `src/main/java/sunyu/util/pojo/GaussPoint.java`
- [Coordinate conversion](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java): `src/main/java/sunyu/util/GisUtil.java`
- [Geometry operations](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java): `src/main/java/sunyu/util/GisUtil.java`

### Trajectory and Farming

- [Track filtering](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java): `src/main/java/sunyu/util/GisUtil.java`
- [Time windows](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/TimeWindow.java): `src/main/java/sunyu/util/pojo/TimeWindow.java`
- [Time ranges](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/TimeRange.java): `src/main/java/sunyu/util/pojo/TimeRange.java`
- [Plot time ranges](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/PolygonTimeRange.java): `src/main/java/sunyu/util/pojo/PolygonTimeRange.java`
- [Field plot creation](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java): `src/main/java/sunyu/util/GisUtil.java`
- [Road splitting](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java): `src/main/java/sunyu/util/GisUtil.java`
- [Split parameters](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/SplitRoadParams.java): `src/main/java/sunyu/util/pojo/SplitRoadParams.java`

### Results and Metrics

- [Intersection result](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/WktIntersectionResult.java): `src/main/java/sunyu/util/pojo/WktIntersectionResult.java`
- [Plot geometry data](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/FarmPlotGeometryInfo.java): `src/main/java/sunyu/util/pojo/FarmPlotGeometryInfo.java`
- [Farm plot](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/FarmPlot.java): `src/main/java/sunyu/util/pojo/FarmPlot.java`
- [Split result](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/pojo/SplitResult.java): `src/main/java/sunyu/util/pojo/SplitResult.java`
- [Distance and area](https://github.com/89333367/util-gis/blob/main/src/main/java/sunyu/util/GisUtil.java): `src/main/java/sunyu/util/GisUtil.java`

### Other components

- **Library caller**

## Connections

- Library caller → GIS utility API: calls
- Library caller → WGS84 points: supplies points
- GIS utility API → Coordinate conversion: provides conversions
- Coordinate conversion → Gauss points: produces projections
- GIS utility API → Geometry operations: provides operations
- Geometry operations → Intersection result: returns result
- GIS utility API → Track filtering: provides filtering
- Track filtering → Time windows: segments by interval
- GIS utility API → Field plot creation: creates plots
- Field plot creation → Farm plot: returns plot
- GIS utility API → Road splitting: provides splitting
- Library caller → Split parameters: configures split
- Road splitting → Split parameters: accepts options
- Road splitting → Split result: returns summary
- Road splitting → Plot geometry data: uses result model
- Road splitting → Plot time ranges: uses time model
- GIS utility API → Distance and area: provides calculations
- Distance and area → Farm plot: reports area
- GIS utility API → Time ranges: provides time-range operations
