6

I'm trying to construct a DerivedCRS in OGC WKT form that describes a 3D local rectangular coordinate system that is sometimes referred to as an LSR or ENU or Topocentric. It has an origin described by a (lat, long, ht).

My best guess so far is this:

ENGCRS[
    "Topocentric example A",
    BASEGEODCRS[
        "WGS 84",
        DATUM[
            "WGS 84",
            ELLIPSOID["WGS 84",6378137,298.2572236,
                      LENGTHUNIT["metre",1.0]]
        ]
    ],
    DERIVINGCONVERSION[
        "Topocentric example A",
        METHOD[
            "Geographic/topocentric conversions",
            ID["EPSG",4326]
        ],
        PARAMETER["Latitude of topocentric origin",
                  55.0,ANGLEUNIT["degree",0.0174532925199433]],
        PARAMETER["Longitude of topocentric origin",
                  5.0,ANGLEUNIT["degree",0.0174532925199433]],
        PARAMETER["Ellipsoidal height of topocentric origin",
                  0.0,LENGTHUNIT["metre",1.0]]
    ],
    CS[Cartesian,3],
    AXIS["(X)",east,ORDER[1]],
    AXIS["(Y)",north,ORDER[2]],
    AXIS["(Zaq)",up,ORDER[3]],
    LENGTHUNIT["metre",1.0]
]

However, gdalsrsinfo -V says "Validate Fails - SRS is not well-formed". I'm using gdalsrsinfo version 2.1.2 (2016-10-24).

I have a large number of points to convert, and will need to do this from time to time, so I would like to be able to construct the transform I need and feed it to a tool (like cs2cs) to batch convert a bunch of points at once.

How do I construct a CRS definition for the Topocentric coordinate system that I can use as input to a conversion tool, given the location for the origin of that coordinate system as a WGS-84 lat, long, ht?

2
  • Welcome to GIS SE! As a new user please take the tour to learn about our focused Q&A format. The tour states there should be only one question per question, however you have multiple questions here. Please edit your question to focus on one specific problem in order to make your question less broad. You can ask your other question separately, however often you will find that an answer for one question may negate the need for answers to the other(s).
    – Midavalo
    Commented May 20, 2017 at 0:31
  • Were you able to figure this out? Oddly, the WKT for EPSG:5819 comes back as: PROJCS["EPSG topocentric example A"] spatialreference.org/ref/epsg/5819/prettywkt Not much of an example to work from. Commented Feb 7, 2020 at 21:43

1 Answer 1

5

The problem seems to be the definition of a Derived Engineering CRS with a Base Geodetic CRS.

As seen in the Section 14.6 (Derived engineering CRS) of the Geographic information — Well-known text representation of coordinate reference systems standarization (2.0.6 version), a Derived Engineering CRS must have a Base Engineering CRS, wich must have an Engineering Datum:

1

The conversion is an operation from a coordinate system to another, based in the same datum.

A datum transformation must be defined for the transformation from a Geodetic CRS to a Engineering CRS:

Georeferenced image coordinates are not referenced to a derived CRS but to an engineering CRS. The georeferencing is accomplished through a coordinate transformation between the image’s engineering CRS and the (usually geodetic or projected) CRS to which the image is georeferenced.


A Topocentric CRS is a Projected CRS derived from a Geographic or Geodetic one, with a Geographic/Topocentric conversions method.

EPSG:5819 and EPSG:5820 EPSG registry entries are examples with the valid definition, for Geographic 3D and Geocentric datums (and methods) respectively.

The WKT2:2019 representation of EPSG:5819 Topocentric CRS is as follows:

PROJCRS["EPSG topocentric example A",
    BASEGEOGCRS["WGS 84",
        DATUM["World Geodetic System 1984",
            ELLIPSOID["WGS 84",6378137,298.257223563,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4979]],
    CONVERSION["EPSG topocentric example A",
        METHOD["Geographic/topocentric conversions",
            ID["EPSG",9837]],
        PARAMETER["Latitude of topocentric origin",55,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8834]],
        PARAMETER["Longitude of topocentric origin",5,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8835]],
        PARAMETER["Ellipsoidal height of topocentric origin",0,
            LENGTHUNIT["metre",1],
            ID["EPSG",8836]]],
    CS[Cartesian,3],
        AXIS["topocentric East (U)",east,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["topocentric North (V)",north,
            ORDER[2],
            LENGTHUNIT["metre",1]],
        AXIS["topocentric height (W)",up,
            ORDER[3],
            LENGTHUNIT["metre",1]],
    USAGE[
        SCOPE["unknown"],
        AREA["To be specified"],
        BBOX[-90,-180,90,180]],
    ID["EPSG",5819]]

You will not be able to convert coordinates with PROJ.6, because the Topocentric Conversion methods are not yet implemented.

But you can use GeographicLib to do that (CartConvert Utility program to convert to Geocentric or Local Cartesian systems).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.