wgs84_to_osgb36

pyhelpers.geom.wgs84_to_osgb36(longitudes, latitudes, as_array=False, **kwargs)[source]

Convert latitude and longitude (WGS84) to British national grid (OSGB36).

Parameters:
  • longitudes (int | float | Iterable[int, float]) – the longitude (abbr: long., λ, or lambda) of a point on Earth’s surface

  • latitudes (int | float | Iterable[int, float]) – the latitude (abbr: lat., φ, or phi) of a point on Earth’s surface

  • as_array (bool) – whether to return an array, defaults to False

  • kwargs – [optional] parameters of pyproj.Transformer.transform

Returns:

geographic Cartesian coordinate (Easting, Northing) or (X, Y)

Return type:

tuple | numpy.ndarry

Examples:

>>> from pyhelpers.geom import wgs84_to_osgb36
>>> from pyhelpers._cache import example_dataframe

>>> example_df = example_dataframe()
>>> example_df
            Longitude   Latitude
City
London      -0.127647  51.507322
Birmingham  -1.902691  52.479699
Manchester  -2.245115  53.479489
Leeds       -1.543794  53.797418

>>> lon, lat = example_df.loc['London'].values
>>> x, y = wgs84_to_osgb36(longitudes=lon, latitudes=lat)
>>> print(f"London (Easting, Northing): {(x, y)}")
London (Easting, Northing): (530039.558844505, 180371.68016544735)

>>> lonlat_array = example_df.to_numpy()
>>> lonlat_array
array([[-0.1276474, 51.5073219],
       [-1.9026911, 52.4796992],
       [-2.2451148, 53.4794892],
       [-1.5437941, 53.7974185]])

>>> lons, lats = lonlat_array.T  # lonlat_array[:, 0], lonlat_array[:, 1]
>>> xs, ys = wgs84_to_osgb36(longitudes=lons, latitudes=lats)
>>> xs
array([530039.5588445 , 406705.8870136 , 383830.03903573, 430147.44735387])
>>> ys
array([180371.68016545, 286868.16664219, 398113.05583091, 433553.32711728])

>>> xy_array = wgs84_to_osgb36(longitudes=lons, latitudes=lats, as_array=True)
>>> xy_array
array([[530039.5588445 , 180371.68016545],
       [406705.8870136 , 286868.16664219],
       [383830.03903573, 398113.05583091],
       [430147.44735387, 433553.32711728]])