How simongsk/navigating-map-of-denmark-under-changing-sea-levels works
This is a JavaFX map application for exploring OpenStreetMap data in Denmark, simulating rising sea levels, and finding routes that avoid submerged roads. The main workflow is choosing map files, parsing OSM and height-curve data, then viewing and interacting with the rendered map; route selection invokes shortest-path search, and sea-level changes update the simulation and route. The README documents binary caching and the major capabilities; sampled excerpts confirm parts of parsing, rendering, UI interaction, and pathfinding, but not all wiring between subsystems.
Main entry points: AppController.java App controller · OsmData.java OSM elements · OsmParser.java OSM parser · HeightCurveParser.java Height parser
Components 19
Map application
- App controller
src/main/java/models/ui/AppController.java - Dataset selection
src/main/java/models/ui/StartupDialog.java - Input events
src/main/java/models/ui/EventHandler.java - Map interface
src/main/java/models/ui/UserInterface.java - Loaded map state
src/main/java/models/ui/AppData.java
Data ingestion
- OSM parser
src/main/java/models/parser/OsmParser.java - Height parser
src/main/java/models/parser/HeightCurveParser.java - Binary cache I/O
src/main/java/models/parser/BinaryReader.java - Binary cache writer
src/main/java/models/parser/BinaryWriter.java
Map model and rendering
- OSM elements
src/main/java/models/parser/OsmData.java - Height curve data
src/main/java/models/parser/HeightCurveData.java - Submergence model
src/main/java/models/heightcurve/HeightCurve.java - Spatial index
src/main/java/models/RTree/Tree.java - Map renderers
src/main/java/models/rendering/AbstractRenderer.java - Height renderer
src/main/java/models/rendering/HeightCurveRenderer.java
Route finding
- A* and Dijkstra
src/main/java/models/pathfinding/Pathfinder.java - Road graph builder
src/main/java/models/pathfinding/GraphBuilder.java - Route selection state
src/main/java/models/pathfinding/PathfindingObject.java
Other components
- Map user
Connections 24
- Map user → Dataset selection: chooses dataset
- Dataset selection → App controller: returns choice
- Map user → Map interface: map interaction
- App controller → Input events: binds handlers
- Input events → App controller: dispatches input
- App controller → Map interface: updates view
- App controller → OSM parser: loads OSM
- App controller → Height parser: loads curves
- App controller → Binary cache I/O: reads cache
- App controller → Binary cache writer: writes cache
- OSM parser → OSM elements: builds elements
- OSM parser → Road graph builder: connects road nodes
- Height parser → OSM elements: associates nodes
- Height parser → Height curve data: builds curve data
- Height curve data → Submergence model: contains curves
- App controller → Loaded map state: updates state
- Loaded map state → Spatial index: indexes elements
- App controller → Map renderers: draws map
- App controller → Height renderer: sets sea level
- Height renderer → Submergence model: renders submersion
- App controller → Route selection state: updates route
- Route selection state → A* and Dijkstra: requests path
- A* and Dijkstra → OSM elements: searches road graph
- Road graph builder → OSM elements: adds adjacency