EPSG:10870

ITRF2020 to ETRS89-NOR [EUREF89] (1)

Attributes

Geodetic CRS: ITRF2020

Datum: International Terrestrial Reference Frame 2020

Ellipsoid: GRS 1980

Prime meridian: Greenwich

Data source: EPSG

Information source: Häkli et al., "NKG2020 transformation: An updated transformation between dynamic and static reference frames in the Nordic and Baltic countries"; Journal of Geodetic Science 2023; 13: 20220155, https://doi.org/10.1515/jogs-2022-0155.

Revision date: 2025-08-24

Steps of transformation: 10587 10809 10811

Scope: Geodesy.

Remarks: The coordinate epoch (in years) of the coordinates referenced to the source CRS (ITRF2020) is user-defined and is used as the source epoch in step 2.

Area of use: Norway - onshore.

Description: (0,)

MapTiler banner

Definition: OGC Well Known Text 2 (2019)

CONCATENATEDOPERATION["ITRF2020 to ETRS89-NOR [EUREF89] (1)",
    VERSION["NKG2020"],
    SOURCECRS[
        GEODCRS["ITRF2020",
            DYNAMIC[
                FRAMEEPOCH[2015]],
            DATUM["International Terrestrial Reference Frame 2020",
                ELLIPSOID["GRS 1980",6378137,298.257222101,
                    LENGTHUNIT["metre",1]]],
            PRIMEM["Greenwich",0,
                ANGLEUNIT["degree",0.0174532925199433]],
            CS[Cartesian,3],
                AXIS["(X)",geocentricX,
                    ORDER[1],
                    LENGTHUNIT["metre",1]],
                AXIS["(Y)",geocentricY,
                    ORDER[2],
                    LENGTHUNIT["metre",1]],
                AXIS["(Z)",geocentricZ,
                    ORDER[3],
                    LENGTHUNIT["metre",1]],
            ID["EPSG",9988]]],
    TARGETCRS[
        GEODCRS["ETRS89-NOR [EUREF89]",
            DATUM["ETRS89-NOR [EUREF89]",
                ELLIPSOID["GRS 1980",6378137,298.257222101,
                    LENGTHUNIT["metre",1]],
                ANCHOREPOCH[1995]],
            PRIMEM["Greenwich",0,
                ANGLEUNIT["degree",0.0174532925199433]],
            CS[Cartesian,3],
                AXIS["(X)",geocentricX,
                    ORDER[1],
                    LENGTHUNIT["metre",1]],
                AXIS["(Y)",geocentricY,
                    ORDER[2],
                    LENGTHUNIT["metre",1]],
                AXIS["(Z)",geocentricZ,
                    ORDER[3],
                    LENGTHUNIT["metre",1]],
            ID["EPSG",10873]]],
    STEP[
        COORDINATEOPERATION["ITRF2020 to ETRF2014 (1)",
            VERSION["EUREF-Eur 2024"],
            SOURCECRS[
                GEODCRS["ITRF2020",
                    DYNAMIC[
                        FRAMEEPOCH[2015]],
                    DATUM["International Terrestrial Reference Frame 2020",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[Cartesian,3],
                        AXIS["(X)",geocentricX,
                            ORDER[1],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Y)",geocentricY,
                            ORDER[2],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Z)",geocentricZ,
                            ORDER[3],
                            LENGTHUNIT["metre",1]],
                    ID["EPSG",9988]]],
            TARGETCRS[
                GEODCRS["ETRF2014",
                    DYNAMIC[
                        FRAMEEPOCH[1989]],
                    DATUM["European Terrestrial Reference Frame 2014",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[Cartesian,3],
                        AXIS["(X)",geocentricX,
                            ORDER[1],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Y)",geocentricY,
                            ORDER[2],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Z)",geocentricZ,
                            ORDER[3],
                            LENGTHUNIT["metre",1]],
                    ID["EPSG",8401]]],
            METHOD["Time-dependent Position Vector tfm (geocentric)",
                ID["EPSG",1053]],
            PARAMETER["X-axis translation",-1.4,
                LENGTHUNIT["millimetre",0.001],
                ID["EPSG",8605]],
            PARAMETER["Y-axis translation",-0.9,
                LENGTHUNIT["millimetre",0.001],
                ID["EPSG",8606]],
            PARAMETER["Z-axis translation",1.4,
                LENGTHUNIT["millimetre",0.001],
                ID["EPSG",8607]],
            PARAMETER["X-axis rotation",2.21,
                ANGLEUNIT["milliarc-second",4.84813681109536E-09],
                ID["EPSG",8608]],
            PARAMETER["Y-axis rotation",13.806,
                ANGLEUNIT["milliarc-second",4.84813681109536E-09],
                ID["EPSG",8609]],
            PARAMETER["Z-axis rotation",-20.02,
                ANGLEUNIT["milliarc-second",4.84813681109536E-09],
                ID["EPSG",8610]],
            PARAMETER["Scale difference",-0.42,
                SCALEUNIT["parts per billion",1E-09],
                ID["EPSG",8611]],
            PARAMETER["Rate of change of X-axis translation",0,
                LENGTHUNIT["millimetres per year",3.16887651727315E-11],
                ID["EPSG",1040]],
            PARAMETER["Rate of change of Y-axis translation",-0.1,
                LENGTHUNIT["millimetres per year",3.16887651727315E-11],
                ID["EPSG",1041]],
            PARAMETER["Rate of change of Z-axis translation",0.2,
                LENGTHUNIT["millimetres per year",3.16887651727315E-11],
                ID["EPSG",1042]],
            PARAMETER["Rate of change of X-axis rotation",0.085,
                ANGLEUNIT["milliarc-seconds per year",1.53631468932076E-16],
                ID["EPSG",1043]],
            PARAMETER["Rate of change of Y-axis rotation",0.531,
                ANGLEUNIT["milliarc-seconds per year",1.53631468932076E-16],
                ID["EPSG",1044]],
            PARAMETER["Rate of change of Z-axis rotation",-0.77,
                ANGLEUNIT["milliarc-seconds per year",1.53631468932076E-16],
                ID["EPSG",1045]],
            PARAMETER["Rate of change of Scale difference",0,
                SCALEUNIT["parts per billion per year",3.16887651727315E-17],
                ID["EPSG",1046]],
            PARAMETER["Parameter reference epoch",2015,
                TIMEUNIT["year",31556925.445],
                ID["EPSG",1047]],
            OPERATIONACCURACY[0.0],
            ID["EPSG",10587],
            REMARK["Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9."]]],
    STEP[
        COORDINATEOPERATION["ETRF2014 to NKG_ETRF14 (1)",
            VERSION["NKG2020"],
            SOURCECRS[
                GEODCRS["ETRF2014",
                    DYNAMIC[
                        FRAMEEPOCH[1989]],
                    DATUM["European Terrestrial Reference Frame 2014",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[Cartesian,3],
                        AXIS["(X)",geocentricX,
                            ORDER[1],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Y)",geocentricY,
                            ORDER[2],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Z)",geocentricZ,
                            ORDER[3],
                            LENGTHUNIT["metre",1]],
                    ID["EPSG",8401]]],
            TARGETCRS[
                GEODCRS["NKG_ETRF14",
                    DATUM["Nordic Geodetic Commission ETRF14",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]],
                        ANCHOREPOCH[2000]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[Cartesian,3],
                        AXIS["(X)",geocentricX,
                            ORDER[1],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Y)",geocentricY,
                            ORDER[2],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Z)",geocentricZ,
                            ORDER[3],
                            LENGTHUNIT["metre",1]],
                    ID["EPSG",10805]]],
            METHOD["Geocentric translations using NEU velocity grid (gtg)",
                ID["EPSG",1144]],
            PARAMETERFILE["Point motion velocity grid file","NKG_RF17vel.tif"],
            PARAMETER["Target epoch",2000,
                TIMEUNIT["year",31556925.445],
                ID["EPSG",1069]],
            INTERPOLATIONCRS[
                GEOGCRS["ETRF2014",
                    DYNAMIC[
                        FRAMEEPOCH[1989]],
                    DATUM["European Terrestrial Reference Frame 2014",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[ellipsoidal,2],
                        AXIS["geodetic latitude (Lat)",north,
                            ORDER[1],
                            ANGLEUNIT["degree",0.0174532925199433]],
                        AXIS["geodetic longitude (Lon)",east,
                            ORDER[2],
                            ANGLEUNIT["degree",0.0174532925199433]]]],
            OPERATIONACCURACY[0.003],
            ID["EPSG",10809],
            REMARK["Nordic Geodetic Commission (NKG) 2020 transformation. Accuracy estimated as 0.1, 0.1, and 0.4 mm/year for the North, East, and Up components, respectively. Because the difference in coordinates between ETRF2014 and NKG_ETRF14 is small (under a decimetre), although the interpolation CRS is given as ETRF2014, any realization of ETRS89 (including NKG_ETRF14) may be used as the interpolation CRS. The source CRS ETRF2014 is a dynamic CRS and the coordinate epoch for the coordinates referenced to it is a user-defined input."]]],
    STEP[
        COORDINATEOPERATION["NKG_ETRF14 to ETRS89-NOR [EUREF89] (1)",
            VERSION["NKG2020"],
            SOURCECRS[
                GEODCRS["NKG_ETRF14",
                    DATUM["Nordic Geodetic Commission ETRF14",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]],
                        ANCHOREPOCH[2000]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[Cartesian,3],
                        AXIS["(X)",geocentricX,
                            ORDER[1],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Y)",geocentricY,
                            ORDER[2],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Z)",geocentricZ,
                            ORDER[3],
                            LENGTHUNIT["metre",1]],
                    ID["EPSG",10805]]],
            TARGETCRS[
                GEODCRS["ETRS89-NOR [EUREF89]",
                    DATUM["ETRS89-NOR [EUREF89]",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]],
                        ANCHOREPOCH[1995]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[Cartesian,3],
                        AXIS["(X)",geocentricX,
                            ORDER[1],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Y)",geocentricY,
                            ORDER[2],
                            LENGTHUNIT["metre",1]],
                        AXIS["(Z)",geocentricZ,
                            ORDER[3],
                            LENGTHUNIT["metre",1]],
                    ID["EPSG",10873]]],
            METHOD["Geocen translations by grid (gtg) & Geocen translations NEU velocities (gtg)",
                ID["EPSG",1142]],
            PARAMETERFILE["Geocentric translation file","no_kv_NKGETRF14_EPSG7922_2000.tif"],
            PARAMETERFILE["Point motion velocity grid file","NKG_RF17vel.tif"],
            PARAMETER["Source epoch",2000,
                TIMEUNIT["year",31556925.445],
                ID["EPSG",1068]],
            PARAMETER["Target epoch",1995,
                TIMEUNIT["year",31556925.445],
                ID["EPSG",1069]],
            INTERPOLATIONCRS[
                GEOGCRS["NKG_ETRF14",
                    DATUM["Nordic Geodetic Commission ETRF14",
                        ELLIPSOID["GRS 1980",6378137,298.257222101,
                            LENGTHUNIT["metre",1]],
                        ANCHOREPOCH[2000]],
                    PRIMEM["Greenwich",0,
                        ANGLEUNIT["degree",0.0174532925199433]],
                    CS[ellipsoidal,2],
                        AXIS["geodetic latitude (Lat)",north,
                            ORDER[1],
                            ANGLEUNIT["degree",0.0174532925199433]],
                        AXIS["geodetic longitude (Lon)",east,
                            ORDER[2],
                            ANGLEUNIT["degree",0.0174532925199433]]]],
            OPERATIONACCURACY[0.005],
            ID["EPSG",10811],
            REMARK["Nordic Geodetic Commission (NKG) 2020 transformation. Replaces NKG2008 transformation. Because the difference between coordinates referenced to NKG_ETRF14 and coordinates referenced to ETRS89-NO EUREF89 is small (under a decimetre), although the interpolation CRS is given as NKG_ETRF14 any realization of ETRS89 (including ETRF2014 and ETRS89-NO EUREF89) may be used as the interpolation CRS. Scale difference in ppb where 1/billion = 1E-9."]]],
    OPERATIONACCURACY[0.006],
    USAGE[
        SCOPE["Geodesy."],
        AREA["Norway - onshore."],
        BBOX[57.9,4.39,71.24,31.32]],
    ID["EPSG",10870],
    REMARK["The coordinate epoch (in years) of the coordinates referenced to the source CRS (ITRF2020) is user-defined and is used as the source epoch in step 2."]]

Definition: PROJ.4

+proj=pipeline +step +proj=helmert +x=-0.0014 +y=-0.0009 +z=0.0014 +rx=0.00221 +ry=0.013806 +rz=-0.02002 +s=-0.00042 +dx=0 +dy=-0.0001 +dz=0.0002 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=2015 +convention=position_vector +step +inv +proj=deformation +t_epoch=2000 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80 +step +proj=xyzgridshift +grids=no_kv_NKGETRF14_EPSG7922_2000.tif +step +proj=deformation +dt=-5 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80

Definition: JavaScript (Proj4js)

proj4.defs("EPSG:10870","+proj=pipeline +step +proj=helmert +x=-0.0014 +y=-0.0009 +z=0.0014 +rx=0.00221 +ry=0.013806 +rz=-0.02002 +s=-0.00042 +dx=0 +dy=-0.0001 +dz=0.0002 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=2015 +convention=position_vector +step +inv +proj=deformation +t_epoch=2000 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80 +step +proj=xyzgridshift +grids=no_kv_NKGETRF14_EPSG7922_2000.tif +step +proj=deformation +dt=-5 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80");

Definition: JSON

{
    "$schema": "https://proj.org/schemas/v0.7/projjson.schema.json",
    "type": "ConcatenatedOperation",
    "name": "ITRF2020 to ETRS89-NOR [EUREF89] (1)",
    "source_crs": {
        "type": "GeodeticCRS",
        "name": "ITRF2020",
        "datum": {
            "type": "DynamicGeodeticReferenceFrame",
            "name": "International Terrestrial Reference Frame 2020",
            "frame_reference_epoch": 2015,
            "ellipsoid": {
                "name": "GRS 1980",
                "semi_major_axis": 6378137,
                "inverse_flattening": 298.257222101
            }
        },
        "coordinate_system": {
            "subtype": "Cartesian",
            "axis": [
                {
                    "name": "Geocentric X",
                    "abbreviation": "X",
                    "direction": "geocentricX",
                    "unit": "metre"
                },
                {
                    "name": "Geocentric Y",
                    "abbreviation": "Y",
                    "direction": "geocentricY",
                    "unit": "metre"
                },
                {
                    "name": "Geocentric Z",
                    "abbreviation": "Z",
                    "direction": "geocentricZ",
                    "unit": "metre"
                }
            ]
        },
        "id": {
            "authority": "EPSG",
            "code": 9988
        }
    },
    "target_crs": {
        "type": "GeodeticCRS",
        "name": "ETRS89-NOR [EUREF89]",
        "datum": {
            "type": "GeodeticReferenceFrame",
            "name": "ETRS89-NOR [EUREF89]",
            "anchor_epoch": 1995,
            "ellipsoid": {
                "name": "GRS 1980",
                "semi_major_axis": 6378137,
                "inverse_flattening": 298.257222101
            }
        },
        "coordinate_system": {
            "subtype": "Cartesian",
            "axis": [
                {
                    "name": "Geocentric X",
                    "abbreviation": "X",
                    "direction": "geocentricX",
                    "unit": "metre"
                },
                {
                    "name": "Geocentric Y",
                    "abbreviation": "Y",
                    "direction": "geocentricY",
                    "unit": "metre"
                },
                {
                    "name": "Geocentric Z",
                    "abbreviation": "Z",
                    "direction": "geocentricZ",
                    "unit": "metre"
                }
            ]
        },
        "id": {
            "authority": "EPSG",
            "code": 10873
        }
    },
    "steps": [
        {
            "type": "Transformation",
            "name": "ITRF2020 to ETRF2014 (1)",
            "source_crs": {
                "type": "GeodeticCRS",
                "name": "ITRF2020",
                "datum": {
                    "type": "DynamicGeodeticReferenceFrame",
                    "name": "International Terrestrial Reference Frame 2020",
                    "frame_reference_epoch": 2015,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "Cartesian",
                    "axis": [
                        {
                            "name": "Geocentric X",
                            "abbreviation": "X",
                            "direction": "geocentricX",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Y",
                            "abbreviation": "Y",
                            "direction": "geocentricY",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Z",
                            "abbreviation": "Z",
                            "direction": "geocentricZ",
                            "unit": "metre"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 9988
                }
            },
            "target_crs": {
                "type": "GeodeticCRS",
                "name": "ETRF2014",
                "datum": {
                    "type": "DynamicGeodeticReferenceFrame",
                    "name": "European Terrestrial Reference Frame 2014",
                    "frame_reference_epoch": 1989,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "Cartesian",
                    "axis": [
                        {
                            "name": "Geocentric X",
                            "abbreviation": "X",
                            "direction": "geocentricX",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Y",
                            "abbreviation": "Y",
                            "direction": "geocentricY",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Z",
                            "abbreviation": "Z",
                            "direction": "geocentricZ",
                            "unit": "metre"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 8401
                }
            },
            "method": {
                "name": "Time-dependent Position Vector tfm (geocentric)",
                "id": {
                    "authority": "EPSG",
                    "code": 1053
                }
            },
            "parameters": [
                {
                    "name": "X-axis translation",
                    "value": -1.4,
                    "unit": {
                        "type": "LinearUnit",
                        "name": "millimetre",
                        "conversion_factor": 0.001
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 8605
                    }
                },
                {
                    "name": "Y-axis translation",
                    "value": -0.9,
                    "unit": {
                        "type": "LinearUnit",
                        "name": "millimetre",
                        "conversion_factor": 0.001
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 8606
                    }
                },
                {
                    "name": "Z-axis translation",
                    "value": 1.4,
                    "unit": {
                        "type": "LinearUnit",
                        "name": "millimetre",
                        "conversion_factor": 0.001
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 8607
                    }
                },
                {
                    "name": "X-axis rotation",
                    "value": 2.21,
                    "unit": {
                        "type": "AngularUnit",
                        "name": "milliarc-second",
                        "conversion_factor": 4.84813681109536e-09
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 8608
                    }
                },
                {
                    "name": "Y-axis rotation",
                    "value": 13.806,
                    "unit": {
                        "type": "AngularUnit",
                        "name": "milliarc-second",
                        "conversion_factor": 4.84813681109536e-09
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 8609
                    }
                },
                {
                    "name": "Z-axis rotation",
                    "value": -20.02,
                    "unit": {
                        "type": "AngularUnit",
                        "name": "milliarc-second",
                        "conversion_factor": 4.84813681109536e-09
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 8610
                    }
                },
                {
                    "name": "Scale difference",
                    "value": -0.42,
                    "unit": {
                        "type": "ScaleUnit",
                        "name": "parts per billion",
                        "conversion_factor": 1e-09
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 8611
                    }
                },
                {
                    "name": "Rate of change of X-axis translation",
                    "value": 0,
                    "unit": {
                        "type": "LinearUnit",
                        "name": "millimetres per year",
                        "conversion_factor": 3.16887651727315e-11
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1040
                    }
                },
                {
                    "name": "Rate of change of Y-axis translation",
                    "value": -0.1,
                    "unit": {
                        "type": "LinearUnit",
                        "name": "millimetres per year",
                        "conversion_factor": 3.16887651727315e-11
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1041
                    }
                },
                {
                    "name": "Rate of change of Z-axis translation",
                    "value": 0.2,
                    "unit": {
                        "type": "LinearUnit",
                        "name": "millimetres per year",
                        "conversion_factor": 3.16887651727315e-11
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1042
                    }
                },
                {
                    "name": "Rate of change of X-axis rotation",
                    "value": 0.085,
                    "unit": {
                        "type": "AngularUnit",
                        "name": "milliarc-seconds per year",
                        "conversion_factor": 1.53631468932076e-16
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1043
                    }
                },
                {
                    "name": "Rate of change of Y-axis rotation",
                    "value": 0.531,
                    "unit": {
                        "type": "AngularUnit",
                        "name": "milliarc-seconds per year",
                        "conversion_factor": 1.53631468932076e-16
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1044
                    }
                },
                {
                    "name": "Rate of change of Z-axis rotation",
                    "value": -0.77,
                    "unit": {
                        "type": "AngularUnit",
                        "name": "milliarc-seconds per year",
                        "conversion_factor": 1.53631468932076e-16
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1045
                    }
                },
                {
                    "name": "Rate of change of Scale difference",
                    "value": 0,
                    "unit": {
                        "type": "ScaleUnit",
                        "name": "parts per billion per year",
                        "conversion_factor": 3.16887651727315e-17
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1046
                    }
                },
                {
                    "name": "Parameter reference epoch",
                    "value": 2015,
                    "unit": {
                        "type": "TimeUnit",
                        "name": "year",
                        "conversion_factor": 31556925.445
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1047
                    }
                }
            ],
            "accuracy": "0.0",
            "id": {
                "authority": "EPSG",
                "code": 10587
            },
            "remarks": "Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9."
        },
        {
            "type": "Transformation",
            "name": "ETRF2014 to NKG_ETRF14 (1)",
            "source_crs": {
                "type": "GeodeticCRS",
                "name": "ETRF2014",
                "datum": {
                    "type": "DynamicGeodeticReferenceFrame",
                    "name": "European Terrestrial Reference Frame 2014",
                    "frame_reference_epoch": 1989,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "Cartesian",
                    "axis": [
                        {
                            "name": "Geocentric X",
                            "abbreviation": "X",
                            "direction": "geocentricX",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Y",
                            "abbreviation": "Y",
                            "direction": "geocentricY",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Z",
                            "abbreviation": "Z",
                            "direction": "geocentricZ",
                            "unit": "metre"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 8401
                }
            },
            "target_crs": {
                "type": "GeodeticCRS",
                "name": "NKG_ETRF14",
                "datum": {
                    "type": "GeodeticReferenceFrame",
                    "name": "Nordic Geodetic Commission ETRF14",
                    "anchor_epoch": 2000,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "Cartesian",
                    "axis": [
                        {
                            "name": "Geocentric X",
                            "abbreviation": "X",
                            "direction": "geocentricX",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Y",
                            "abbreviation": "Y",
                            "direction": "geocentricY",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Z",
                            "abbreviation": "Z",
                            "direction": "geocentricZ",
                            "unit": "metre"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 10805
                }
            },
            "interpolation_crs": {
                "type": "GeographicCRS",
                "name": "ETRF2014",
                "datum": {
                    "type": "DynamicGeodeticReferenceFrame",
                    "name": "European Terrestrial Reference Frame 2014",
                    "frame_reference_epoch": 1989,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "ellipsoidal",
                    "axis": [
                        {
                            "name": "Geodetic latitude",
                            "abbreviation": "Lat",
                            "direction": "north",
                            "unit": "degree"
                        },
                        {
                            "name": "Geodetic longitude",
                            "abbreviation": "Lon",
                            "direction": "east",
                            "unit": "degree"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 9069
                }
            },
            "method": {
                "name": "Geocentric translations using NEU velocity grid (gtg)",
                "id": {
                    "authority": "EPSG",
                    "code": 1144
                }
            },
            "parameters": [
                {
                    "name": "Point motion velocity grid file",
                    "value": "NKG_RF17vel.tif",
                    "id": {
                        "authority": "EPSG",
                        "code": 1050
                    }
                },
                {
                    "name": "Target epoch",
                    "value": 2000,
                    "unit": {
                        "type": "TimeUnit",
                        "name": "year",
                        "conversion_factor": 31556925.445
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1069
                    }
                }
            ],
            "accuracy": "0.003",
            "id": {
                "authority": "EPSG",
                "code": 10809
            },
            "remarks": "Nordic Geodetic Commission (NKG) 2020 transformation. Accuracy estimated as 0.1, 0.1, and 0.4 mm/year for the North, East, and Up components, respectively. Because the difference in coordinates between ETRF2014 and NKG_ETRF14 is small (under a decimetre), although the interpolation CRS is given as ETRF2014, any realization of ETRS89 (including NKG_ETRF14) may be used as the interpolation CRS. The source CRS ETRF2014 is a dynamic CRS and the coordinate epoch for the coordinates referenced to it is a user-defined input."
        },
        {
            "type": "Transformation",
            "name": "NKG_ETRF14 to ETRS89-NOR [EUREF89] (1)",
            "source_crs": {
                "type": "GeodeticCRS",
                "name": "NKG_ETRF14",
                "datum": {
                    "type": "GeodeticReferenceFrame",
                    "name": "Nordic Geodetic Commission ETRF14",
                    "anchor_epoch": 2000,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "Cartesian",
                    "axis": [
                        {
                            "name": "Geocentric X",
                            "abbreviation": "X",
                            "direction": "geocentricX",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Y",
                            "abbreviation": "Y",
                            "direction": "geocentricY",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Z",
                            "abbreviation": "Z",
                            "direction": "geocentricZ",
                            "unit": "metre"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 10805
                }
            },
            "target_crs": {
                "type": "GeodeticCRS",
                "name": "ETRS89-NOR [EUREF89]",
                "datum": {
                    "type": "GeodeticReferenceFrame",
                    "name": "ETRS89-NOR [EUREF89]",
                    "anchor_epoch": 1995,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "Cartesian",
                    "axis": [
                        {
                            "name": "Geocentric X",
                            "abbreviation": "X",
                            "direction": "geocentricX",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Y",
                            "abbreviation": "Y",
                            "direction": "geocentricY",
                            "unit": "metre"
                        },
                        {
                            "name": "Geocentric Z",
                            "abbreviation": "Z",
                            "direction": "geocentricZ",
                            "unit": "metre"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 10873
                }
            },
            "interpolation_crs": {
                "type": "GeographicCRS",
                "name": "NKG_ETRF14",
                "datum": {
                    "type": "GeodeticReferenceFrame",
                    "name": "Nordic Geodetic Commission ETRF14",
                    "anchor_epoch": 2000,
                    "ellipsoid": {
                        "name": "GRS 1980",
                        "semi_major_axis": 6378137,
                        "inverse_flattening": 298.257222101
                    }
                },
                "coordinate_system": {
                    "subtype": "ellipsoidal",
                    "axis": [
                        {
                            "name": "Geodetic latitude",
                            "abbreviation": "Lat",
                            "direction": "north",
                            "unit": "degree"
                        },
                        {
                            "name": "Geodetic longitude",
                            "abbreviation": "Lon",
                            "direction": "east",
                            "unit": "degree"
                        }
                    ]
                },
                "id": {
                    "authority": "EPSG",
                    "code": 10807
                }
            },
            "method": {
                "name": "Geocen translations by grid (gtg) & Geocen translations NEU velocities (gtg)",
                "id": {
                    "authority": "EPSG",
                    "code": 1142
                }
            },
            "parameters": [
                {
                    "name": "Geocentric translation file",
                    "value": "no_kv_NKGETRF14_EPSG7922_2000.tif",
                    "id": {
                        "authority": "EPSG",
                        "code": 8727
                    }
                },
                {
                    "name": "Point motion velocity grid file",
                    "value": "NKG_RF17vel.tif",
                    "id": {
                        "authority": "EPSG",
                        "code": 1050
                    }
                },
                {
                    "name": "Source epoch",
                    "value": 2000,
                    "unit": {
                        "type": "TimeUnit",
                        "name": "year",
                        "conversion_factor": 31556925.445
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1068
                    }
                },
                {
                    "name": "Target epoch",
                    "value": 1995,
                    "unit": {
                        "type": "TimeUnit",
                        "name": "year",
                        "conversion_factor": 31556925.445
                    },
                    "id": {
                        "authority": "EPSG",
                        "code": 1069
                    }
                }
            ],
            "accuracy": "0.005",
            "id": {
                "authority": "EPSG",
                "code": 10811
            },
            "remarks": "Nordic Geodetic Commission (NKG) 2020 transformation. Replaces NKG2008 transformation. Because the difference between coordinates referenced to NKG_ETRF14 and coordinates referenced to ETRS89-NO EUREF89 is small (under a decimetre), although the interpolation CRS is given as NKG_ETRF14 any realization of ETRS89 (including ETRF2014 and ETRS89-NO EUREF89) may be used as the interpolation CRS. Scale difference in ppb where 1/billion = 1E-9."
        }
    ],
    "accuracy": "0.006",
    "scope": "Geodesy.",
    "area": "Norway - onshore.",
    "bbox": {
        "south_latitude": 57.9,
        "west_longitude": 4.39,
        "north_latitude": 71.24,
        "east_longitude": 31.32
    },
    "id": {
        "authority": "EPSG",
        "code": 10870
    },
    "remarks": "The coordinate epoch (in years) of the coordinates referenced to the source CRS (ITRF2020) is user-defined and is used as the source epoch in step 2."
}

Definition: MapServer - MAPfile

PROJECTION
	"proj=pipeline"
	"step"
	"proj=helmert"
	"x=-0.0014"
	"y=-0.0009"
	"z=0.0014"
	"rx=0.00221"
	"ry=0.013806"
	"rz=-0.02002"
	"s=-0.00042"
	"dx=0"
	"dy=-0.0001"
	"dz=0.0002"
	"drx=8.5e-05"
	"dry=0.000531"
	"drz=-0.00077"
	"ds=0"
	"t_epoch=2015"
	"convention=position_vector"
	"step"
	"inv"
	"proj=deformation"
	"t_epoch=2000"
	"grids=eur_nkg_nkgrf17vel.tif"
	"ellps=GRS80"
	"step"
	"proj=xyzgridshift"
	"grids=no_kv_NKGETRF14_EPSG7922_2000.tif"
	"step"
	"proj=deformation"
	"dt=-5"
	"grids=eur_nkg_nkgrf17vel.tif"
	"ellps=GRS80"
END

Definition: Mapnik

<?xml version="1.0" encoding="utf-8"?>
<Map srs="+proj=pipeline +step +proj=helmert +x=-0.0014 +y=-0.0009 +z=0.0014 +rx=0.00221 +ry=0.013806 +rz=-0.02002 +s=-0.00042 +dx=0 +dy=-0.0001 +dz=0.0002 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=2015 +convention=position_vector +step +inv +proj=deformation +t_epoch=2000 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80 +step +proj=xyzgridshift +grids=no_kv_NKGETRF14_EPSG7922_2000.tif +step +proj=deformation +dt=-5 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80">
	<Layer srs="+proj=pipeline +step +proj=helmert +x=-0.0014 +y=-0.0009 +z=0.0014 +rx=0.00221 +ry=0.013806 +rz=-0.02002 +s=-0.00042 +dx=0 +dy=-0.0001 +dz=0.0002 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=2015 +convention=position_vector +step +inv +proj=deformation +t_epoch=2000 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80 +step +proj=xyzgridshift +grids=no_kv_NKGETRF14_EPSG7922_2000.tif +step +proj=deformation +dt=-5 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80">
	</Layer>
</Map>

Definition: SQL (PostGIS)

INSERT into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext) values ( 10870, 'EPSG', 10870, '+proj=pipeline +step +proj=helmert +x=-0.0014 +y=-0.0009 +z=0.0014 +rx=0.00221 +ry=0.013806 +rz=-0.02002 +s=-0.00042 +dx=0 +dy=-0.0001 +dz=0.0002 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=2015 +convention=position_vector +step +inv +proj=deformation +t_epoch=2000 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80 +step +proj=xyzgridshift +grids=no_kv_NKGETRF14_EPSG7922_2000.tif +step +proj=deformation +dt=-5 +grids=eur_nkg_nkgrf17vel.tif +ellps=GRS80', 'None');