A web app for displaying the radio coverage of a specified antenna on a map.
Using Signal-Server to calculate the coverage.
See https://radiomap.lmux.de/. Using SRTM3 height data in the region of Germany and Ubiquiti .ant files.
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.
-
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
.
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.
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.