Julia photoscenery generator GUI

From FlightGear wiki
Jump to navigation Jump to search
WIP.png Work in progress
This article or section will be worked on in the upcoming hours or days.
See history for the latest developments.
Photoscenery-GUI
Photoscenery-GUI logo
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
FG Julia Photoscenery-GUI Design proposal "LIBERA ET TESSELA"

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

Follow: https://forum.flightgear.org/viewtopic.php?f=5&t=39066&sid=140c176bfaf360cf28c7f1a25d59b709&start=420

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:

  1. Parses waypoints
  2. Computes segments
  3. Creates coverage circles
  4. Runs jobs in sequence
  5. 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

See Also