Skip to content

Simple, intuitive command line utility for generating very large line-of-sight & terrain-aware viewsheds for Google Earth or equivalent viewers

License

Notifications You must be signed in to change notification settings

renwell-studio/rangeplotter

Repository files navigation

RangePlotter

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).

Use Cases

  • 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.

Documentation

For a comprehensive guide on how to use RangePlotter, including configuration details, command reference, and best practices, please see the User Guide.

Quick Start Guide

  1. Install
  2. Connect your (free) Copernicus account
  3. Provide a .kml file (e.g. exported from Google Earth) with one or more placemarks
  4. Run './rangeplotter viewshed' to calculate the viewshed around your placemark
  5. Import the output .kml file to Google Earth to see your viewshed

Installation

Option 1: Standalone Binary (Recommended for Linux Users)

No Python environment required.

  1. Download the latest release archive (rangeplotter_vX.Y.Z_linux.zip) from the GitHub Releases page.

  2. Unzip the archive:

    unzip rangeplotter_vX.Y.Z_linux.zip
    cd rangeplotter_vX.Y.Z_linux
  3. 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 rangeplotter executable and ensure your config/ and working_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 .bac or .backup.

  4. Run:

    ./rangeplotter --help

Option 2: Python Wheel (Cross-Platform / Advanced)

For users who have Python installed (Linux, macOS, Windows) and prefer using pip.

  1. Download the .whl file from the GitHub Releases page.
  2. Install:
    pip install rangeplotter-0.1.5-py3-none-any.whl
  3. Run:
    rangeplotter --help

Option 3: Python Source (For Developers)

  1. Clone the repository:
    git clone https://github.com/renwell-studio/rangeplotter.git
    cd rangeplotter
  2. Set up environment:
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -e .
  3. Run via module:
    python -m rangeplotter.cli.main --help

Tech Stack & Methodology

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.

Bugs & Feature Requests

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.

Credit & Support

Developed by Renwell Studio.

  • If you find this tool useful or interesting, please consider supporting development.
  • Donations: ko-fi

License

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.

About

Simple, intuitive command line utility for generating very large line-of-sight & terrain-aware viewsheds for Google Earth or equivalent viewers

Topics

Resources

License

Stars

Watchers

Forks