Julia photoscenery generator GUI
| Work in progress This article or section will be worked on in the upcoming hours or days. See history for the latest developments. |
|
| |
| Developed by | Adriano Bassignana |
|---|---|
| Initial release | 27.10.2025 |
| Latest release | (rolling releases) |
| Written in | julia |
| OS | Windows, GNU/Linux, MacOS |
| Development status | Active |
| Type | Photoscenery generator |
| License | GNU General Public License v2 |
Introduction
Photoscenery-GUI is the modern graphical interface for the Photoscenery tools previously available only as a command-line application. It provides an interactive map-based workflow for generating photographic scenery for FlightGear.
The GUI was created to make scenery generation:
- easier
- faster
- visually controlled
- less error‑prone
This version integrates:
- a real-time Leaflet map
- FGFS live aircraft tracking
- preview of tiles
- route-based batch downloading
- job monitoring
- automatic ICAO coordinate resolution
Why a GUI Version?
The original CLI tool forced users to manually enter coordinates, radii, resolutions and overwrite rules. The GUI solves this with a fully visual workflow.
Improvements over CLI
- Visual map control
- Colour‑coded resolutions
- Coverage and date filters
- One‑click ICAO resolve
- Live aircraft integration
- Route-based automatic patch generation
- Tile previews and metadata
System Requirements
- Julia 1.10 or newer. Recommended using juliaup, which is the robust official manager and updater for Julia releases.
- Git or Git as Julia module, read the differences below
- Modern browser
- FlightGear (optional, for live tracking)
Method 1 Git as a module in Julia
You don't need to install git beforehand, since it's already included as a module in Julia. The advantage of this installation is that the package remains protected within the Julia binaries directory, and if you want to have an isolated installation for security reasons, you can easily put it in a docker.
Method 2 Git yourself
Installation by downloading from git, which requires the prerequisite. In this case, the entire application is visible in any folder we create and allows us to modify the code if necessary, perhaps even using AI tools.
Installing
Method 1 - Installing juliaup - Git as a module in Julia
juliaup is the recommended way to install Julia. It automatically installs the latest stable julia binary and helps keep it up to date. It also supports installing and using different versions of Julia simultaneously.
https://github.com/JuliaLang/juliaup
In order to see the Julia's version, open a terminal then run:
$ julia --version
julia version 1.12.2
Create a folder Photoscenary-GUI, running julia inside
The name is not important, but it is useful for you as it will contain the various editable files necessary for running the application, including (if necessary) the directories containing the tiles.
Now run Julia inside Photoscenary-GUI folder
~/Photoscenery-GUI $ julia
You get next screen
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.12.2 (2025-11-20)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org release
|__/ |
julia>
Enter Julia package mode
Type the closed square bracket ]
We are now in package mode, notice the prompt now is pkg>
(@v1.12) pkg>
Adding repository
pkg> add "https://github.com/abassign/Photoscenery-GUI"
You will see that Julia starts downloading the entire application and the various modules it requires, then exit with ctrl-d.
Control + D
pkg> ^D
Summary: Method 1 - Git as a module in Julia
You have successfully installed the modern Julia Programming Language interpreter in your FGPC using Juliaup. You have created a folder to host Photoscenery-GUI, entered the Julia package mode, and added the GitHub repository for Photoscenery-GUI. With the last commands, Julia has magically instantiated and precompiled a version for your OS, Git has been managed as a Julia module, after which you exited with Control+D.
The advantage of this installation is that the package remains protected within the Julia binaries directory, and if you want to have an isolated installation for security reasons, you can easily put it in a docker.
Finally, let's see Photoscenery in action.
Executing Photoscenary-GUI (Method 1) Git as a module in Julia
Run in terminal only for the frist start:
julia -e "using Photoscenery; Photoscenery.GuiMode.run()"
Dopo la prima partenza, il programma carica in locale i comandi di start go.sh per MacOs e Linux ed il comando go.bat per Windows. Dopo basta digitare, il comando go corrispondente all'ambiente operativo:
Linux e MacOs: ./go.sh
Windows: go.bat
Open in browser
Open GUI, open next address with your browser and wait for 3 seconds:
http://localhost:8000/
You'll see Photoscenery-GUI in action, similar to the picture above, in the info box.
Method 2 - Installing juliaup - Git your self
juliaup is the recommended way to install Julia. It automatically installs the latest stable julia binary and helps keep it up to date. It also supports installing and using different versions of Julia simultaneously.
https://github.com/JuliaLang/juliaup
Download the Photoscenery-GUI project
https://github.com/abassign/Photoscenery-GUI
Calling Julia package manager to instantiate the project
From the Photoscenery-GUI directory, run in terminal
julia --project=. -e 'using Pkg; Pkg.instantiate()'
Summary: Method 2 Git yourself
You have successfully installed the modern Julia Programming Language interpreter in your FGPC using Juliaup. You have downloaded Photoscenery-GUI from Git, you have opened a terminal inside that folder, ordering Julia package manager to instantiate the project.
In this case, the entire application is visible in any folder we create and allows us to modify the code if necessary.
Finally, let's see Photoscenery-GUI in action.
Executing Photoscenary-GUI (Method 2) Git your self
Run in terminal
julia --project=. -e 'using Photoscenery; Photoscenery.GuiMode.run()'
Open in browser
Open GUI, open next address with your browser and wait for 3 seconds:
http://localhost:8000/
You'll see Photoscenery-GUI in action, similar to the picture above, in the info box.
Method 3 - installing from GitHub
If you want to use the full application in a directory of your system, you can directly download the entire application from GitHub:
git clone https://github.com/abassign/Photoscenery-GUI.git
The git command must be available on your system, and Julia must already be installed as described in the first method. In this case, the application will no longer run as a Julia module, so the startup procedure will be different.
Enter the directory automatically created by Git, then run one of the three possible go.xxx commands found inside it. Before launching the program, the command will download everything required and will configure the essential tmp directory, which is used to store image files needed to build the tiles.
Each time you start the application, the system will check for updates on GitHub and will periodically (about once a week) update the files airports.csv and naviaids.csv.
Updating Photoscenery-GUI
You can update to newer version
Julia using Pkg Pkg.update()
After update press
Control + D to exit.
^D
WIP (Work in Progress) Auto-Update Mechanism
A new way to launch the application that automatically checks for updates.
When you start the app using these scripts, it will check if a new version is available on GitHub and ask if you want to update. This ensures you're always running the latest version with the newest features and fixes.
Linux/macOS: Run
./go.sh
Windows: Double-click
go.bat
Julia: Run
julia --project=. go.jl
Basic Usage
Selecting a location
- Enter an ICAO code
- Click on the map
- Import aircraft position from FGFS
Configuring a patch
Parameters:
- Radius
- Resolution
- Downsampling (--sdwn)
- Overwrite mode (--over)
Running a job
Press Patch Scenery to start. Completed tiles display on the map.
Route-Based Scenery Creation
Drag & drop:
- a GPX flight plan
- or a FlightGear .xml route
The GUI automatically:
- Parses waypoints
- Computes segments
- Creates coverage circles
- Runs jobs in sequence
- Tracks progress
FlightGear Integration
Before running FGFS, enable Telnet by placing the property --telnet=5000 in the additional settings box in FG-launcher. Additionally, in the add-ons section, you must specify the path to the Orthophotos folder in the additional scenery folder section.
This is a WIP (Work in Progress); we still need to test paths and use flows.
- Aircraft position is displayed
- Live heading, altitude, speed shown
- “Download Around Aircraft” available
Coverage Visualization
The GUI supports filtering:
- by resolution
- by date (session/day/week/month/year)
- by opacity
Tiles can display preview images and metadata.
Directory Settings
Output and backup paths can be edited directly from the interface.
Troubleshooting
- Ensure Julia 1.10+ is installed
- Ensure no other service is using port 8000
- Clear browser cache if GUI does not load tiles