Module:Ordnance Survey coordinates/data

From Zoophilia Wiki
Revision as of 00:25, 1 January 2026 by SockyPaws (talk | contribs) (Import needed module from English Wikipedia)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Documentation for this module may be created at Module:Ordnance Survey coordinates/data/doc

-- Data for [[Module:Ordnance Survey coordinates]]
-- You may use and redistribute this data under the terms of the GPL see http://www.gnu.org/copyleft/gpl.html

local deg2rad = math.rad

local OSGBglobe = {
    semimajor = 6377563.396,
    semiminor = 6356256.910,
    ecc = 0.006670539761597529073698869358812557054558,
    n1 = 0.00167322025032508731869331280635710896296,
    scale = 0.9996012717,
    e0 = 400000.0,
    n0 = -100000.0,
    lat0 = 49.0,
    lon0 = -2.0
}

local IEglobe = {
    semimajor = 6377340.189,
    semiminor = 6356034.447,
    ecc = 0.006670540293336110419293763349975612794125,
    n1 = 0.001673220384152058651484728058385228837777,
    scale = 1.000035,
    e0 = 200000.0,
    n0 = 250000.0,
    lat0 = 53.5,
    lon0 = -8.0
}

local WGSglobe = {
    semimajor = 6378137.0,
    semiminor = 6356752.3141,
    ecc = 0.00669438003551279089034150031998869922791
}

local WGS2OSGBparam = {
    -- Table 4, Section 6.6, Ordnance Survey document https://www.ordnancesurvey.co.uk/documents/resources/guide-coordinate-systems-great-britain.pdf
    semimajor_src = WGSglobe.semimajor,
    semiminor_src = WGSglobe.semiminor,
    ecc_src = WGSglobe.ecc,
    semimajor_dst = OSGBglobe.semimajor,
    semiminor_dst = OSGBglobe.semiminor,
    ecc_dst = OSGBglobe.ecc,
    tx = -446.448,
    ty = 125.157,
    tz = -542.060,
    s0 = 0.0000204894,
    rx = deg2rad(-.1502 / 3600.),
    ry = deg2rad(-.2470 / 3600.),
    rz = deg2rad(-.8421 / 3600.)
}

local OSGB2WGSparam = {
    semimajor_src = OSGBglobe.semimajor,
    semiminor_src = OSGBglobe.semiminor,
    ecc_src = OSGBglobe.ecc,
    semimajor_dst = WGSglobe.semimajor,
    semiminor_dst = WGSglobe.semiminor,
    ecc_dst = WGSglobe.ecc,
    tx = -WGS2OSGBparam.tx,
    ty = -WGS2OSGBparam.ty,
    tz = -WGS2OSGBparam.tz,
    s0 = -WGS2OSGBparam.s0,
    rx = -WGS2OSGBparam.rx,
    ry = -WGS2OSGBparam.ry,
    rz = -WGS2OSGBparam.rz
}

local IE2WGSparam = {
    semimajor_src = IEglobe.semimajor,
    semiminor_src = IEglobe.semiminor,
    ecc_src = IEglobe.ecc,
    semimajor_dst = WGSglobe.semimajor,
    semiminor_dst = WGSglobe.semiminor,
    ecc_dst = WGSglobe.ecc,
    tx = 482.53,
    ty = -130.596,
    tz = 564.557,
    s0 = 8.15 / 1000000.0,
    rx = deg2rad(-1.042 / 3600.0),
    ry = deg2rad(-0.214 / 3600.0),
    rz = deg2rad(-0.631 / 3600.0)
}

return {
    OSGBglobe = OSGBglobe,
    IEglobe = IEglobe,
    WGSglobe = WGSglobe,
    WGS2OSGBparam = WGS2OSGBparam,
    OSGB2WGSparam = OSGB2WGSparam,
    IE2WGSparam = IE2WGSparam
}