Skip to main content

A library to convert BNG/OSNG coordinates

Project description


Build Status pypi Python License

An Ordinance-Survey National Grid coordinates converter

Getting Started

PyBNG is built on top of OSGridConverter and is used to convert coordinates from the Ordnance Survey National Grid system (often called the British National Grid -- BNG) to latitude and longitude using WGS84 (other geodetic reference systems available).

While OSGridConverter can convert BNG to latitude and longitude, it does not support all-numeric grid references, which is the primary feature in this library.


PIP (recommended)

pip install PyBNG

Manual Installation

Simply clone the entire repo and extract the files in the PyBNG folder, then copy all the content to your project folder

Or use one of the shorthand methods below

  • cd into your project directory
  • Use sparse-checkout to pull the library files only into your project directory
    git init PyBNG
    cd PyBNG
    git remote add -f origin
    git config core.sparseCheckout true
    echo "PyBNG/*" >> .git/info/sparse-checkout
    git pull --depth=1 origin master
  • Import the newly pulled files into your project folder
  • cd into your project directory
  • checkout the library files
    svn checkout
  • Import the newly checked out files into your project folder



A PyBNG object can be instantiated as follows:

from PyBNG import PyBNG

bng = PyBNG(easting=519080, northing=185050)

latlon = PyBNG(lat=51.55178424773851, lon= -0.2835125528796557)

The initializer expects easting and northing OR lat and lon parameters, depending on the required conversion


  • get_latlon(datum='WGS84'):
    • Description: calculates the latitude and logitude based on the given BNG coordinates
    • Parameters: none (passed to constructor)
    • Return Value: tuple -- (latitude, longitude)
    • Usage:
      from PyBNG import PyBNG
      bng = PyBNG(easting=519080, northing=185050)
      bng.get_latlon()     # (51.55178424773851, -0.2835125528796557)
  • get_bng(datum='WGS84'):
    • Description: calculates the BNG coordinates given a latitude and a longitude
    • Parameters: none (passed to constructor)
    • Return Value: typle -- (easting, northing)
    • Usage:
      from PyBNG import PyBNG
      latlon = PyBNG(lat=51.55178424773851, lon= -0.2835125528796557)
      latlon.get_bng()     # (519107, 185051)

Please note that converting BNG coordinates to latitude/longitude and back to BNG will yield different results due to internal float rounding


I would like to thank Dr. Lakshmi Babu-Saheer for her unwavering support, encouragement, and advice.


This project is licensed under the MIT License - see the LICENSE file for details

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyBNG-0.1.8.tar.gz (5.2 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page