Skip to content
/ RadioMap Public

A web app for calculating and displaying radio coverage on a map. Based on Signal-Server.

License

Notifications You must be signed in to change notification settings

lmux/RadioMap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RadioMap

Java/Cpp CI with Maven/Make

A web app for displaying the radio coverage of a specified antenna on a map.

Using Signal-Server to calculate the coverage.

Demo

See https://radiomap.lmux.de/. Using SRTM3 height data in the region of Germany and Ubiquiti .ant files.

Demo for API documentation

Motivation

Before RadioMap, when calculating and displaying radio coverage on a map, users had to rely in proprietary software or services which limited the functionality to certain antennas or exposed their planned antenna configuration. Networks should be built and controlled by the people who use them, with tools that are freely available, without profiting off the necessity to communicate.

Build the project

  • Clone this repo with the submodule Signal-Server: git clone --recursive https://github.com/lmux/RadioMap/

  • Build Signal-Server:

cd src/main/resources/Signal-Server/src/
make install

More information how to use Signal-Server

  • Compile and run the project: ./mvnw spring-boot:run

Make sure that the system variable $JAVA_HOME used by maven to compile the project points to the same version of the Java Runtime Environment used in pom.xml, if a different version is used than java -version (currently 1.8).

A .jar file can then be built with ./mvnw clean package and run with java -jar target/RadioMap-0.0.1-SNAPSHOT.jar.

Add height and antenna data

Height and antenna data are not needed to run the web app, although it is recommended to make use of them in order to generate more precise coverage maps.

The web app is currently set up to use SRTM3 height data from src/main/resources/Signal-Server/data/SRTM3. SRTM3 height data can be downloaded from USGS and converted into the format used by Signal-Server with ./Signal-Server/utils/sdf/srtm2sdf. The bash script get_srtm3_sdf.sh automates these steps.

After starting the web app, the directory src/main/resources/Signal-Server/antenna/ is scanned for .el and .az radiation pattern files, which are then added as optional antennas on the website to create the coverage from.

These files can be created by getting the .ant file, usually found on the manufacturers website of the (directional) antenna. Convert the .ant file with ./src/main/resources/Signal-Server/utils/antenna/ant2azel.py (python3 needed) and place the resulting .el and .az files in the above mentioned directory.

Dependencies and Plugins

The dependencies used on the back end are listed in the pom.xml:

  • Spring MVC (spring-boot-starter-web) is used to create a RESTful Web Service. See example and Documentation for Spring Boot.

  • Thymeleaf (spring-boot-starter-thymeleaf) is used to create the website from the template.

  • spring-boot-starter-test is used for the test class for creating a coverage.

  • springdoc-openapi-ui is used for documenting the API based on the OpenAPI specification.

  • The plugin spring-boot-maven-plugin is used for compiling the project with maven.

The dependencies used on the front end are listed under src/main/resources/static/:

  • Leaflet is used to create the interactive map.

  • The Leaflet plugin Leaflet.Toolbar is used to create the toolbar on the map.

  • JSZip is used to export the markers representing antennas with its properties and coverage from the map as a .kmz file.

About

A web app for calculating and displaying radio coverage on a map. Based on Signal-Server.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published