Simple large-radius viewshed and visibility analysis
RangePlotter is a command line, python-based geospatial utility designed to calculate accurate large-radius sensor coverage maps for visualisation in an appropriate viewer (such as Google Earth). Unlike pure geometric tools, RangePlotter integrates high-resolution (30m) global terrain data (Copernicus GLO-30) to determine exactly where a sensor can see, accounting for Earth curvature, atmospheric refraction, and terrain masking (viewsheds).
- Radar Network Visualisation: Optimize site selection by visualizing coverage gaps and terrain shadowing.
- Telecommunications: Analyze line-of-sight for microwave links or radio towers.
- Gap Analysis: Identify blind spots in existing sensor networks.
For a comprehensive guide on how to use RangePlotter, including configuration details, command reference, and best practices, please see the User Guide.
- Install
- Connect your (free) Copernicus account
- Provide a .kml file (e.g. exported from Google Earth) with one or more placemarks
- Run './rangeplotter viewshed' to calculate the viewshed around your placemark
- Import the output .kml file to Google Earth to see your viewshed
No Python environment required.
-
Download the latest release archive (
rangeplotter_vX.Y.Z_linux.zip) from the GitHub Releases page. -
Unzip the archive:
unzip rangeplotter_vX.Y.Z_linux.zip cd rangeplotter_vX.Y.Z_linux -
Install / Upgrade: Run the included script to set up the executable and preserve your existing configuration if upgrading:
chmod +x install_or_upgrade.sh ./install_or_upgrade.sh
This script will make
rangeplotterexecutable and ensure yourconfig/andworking_files/are safe.Tip: While the script is designed to be safe, it is always good practice to backup your important files (e.g.,
cp config/config.yaml config/config.yaml.backup) before performing an upgrade. The installer will strictly ignore any files ending in.bacor.backup. -
Run:
./rangeplotter --help
For users who have Python installed (Linux, macOS, Windows) and prefer using pip.
- Download the
.whlfile from the GitHub Releases page. - Install:
pip install rangeplotter-0.1.5-py3-none-any.whl
- Run:
rangeplotter --help
- Clone the repository:
git clone https://github.com/renwell-studio/rangeplotter.git cd rangeplotter - Set up environment:
python3 -m venv .venv source .venv/bin/activate pip install -e .
- Run via module:
python -m rangeplotter.cli.main --help
RangePlotter is built on a robust open-source geospatial stack:
- Core Engine: Python 3.12+
- Geospatial Processing:
Rasterio(GDAL),Shapely,PyProj. - Terrain Data: Automatic fetching and caching of Copernicus GLO-30 DEM (30m global resolution).
- Physics:
- Adjustable Earth Equivalent Radius Model: Accounts for atmospheric refraction.
- Azimuthal Equidistant Projection: Automatically centers calculations on each sensor for high-precision distance measurements.
Please report issues via the GitHub Issue Tracker.
- Bugs: Include the command run, error output, log contents and a sample KML if possible.
- Features: Describe the use case and desired output.
Developed by Renwell Studio.
- If you find this tool useful or interesting, please consider supporting development.
- Donations: ko-fi
Distributed under the MIT License. See LICENSE for more information.
Note on Third-Party Dependencies:
This project uses fastkml and simplekml, which are licensed under the LGPL.
- If you modify these libraries and redistribute this application, you must comply with the LGPL terms (e.g., allowing users to replace the modified library).
- As this project is open source, the source code is available for users to rebuild the application with their own versions of these dependencies.