Skip to content

ProjectTableMapping CRS input, lon_lat_height table EPSG:4979 & optimize pyproj vertical transformation #65

@JoostGevaert

Description

@JoostGevaert

ProjectTableMapping CRS

Should have a single crs input that accepts one of:

  • CompoundCRS
  • (ProjectedCRS, VerticalCRS)
  • HorizontalCRS
  • 3D Geodetic CRS
  • 2D Geodetic CRS

LonLatHeight table EPSG:4979 & optimize pyproj vertical transformation

Currently LonLatHeight uses WGS 84 + EGM2008 orthometric Height (EPSG:9518). This has to be changed to WGS 84 with ellipsoidal height (EPSG:4979) for at least two reasons:

  1. 3D transformations between SRSes that use ellipsoidal heights are possible without geoid undulation grids. This is impossible with 3D SRSes that use orthometric heights.
  2. WGS 84 with ellipsoidal height (EPSG:4979) is more commonly used by other apps. Software such as CesiumJS can handle WGS 84 with ellipsoidal height (EPSG:4979), but not WGS 84 + EGM2008 orthometric height (EPSG:9518).

The correct way to do vertical transformations:

  1. Check whether PROJ-data has a geoid undulation grid available for the given vertical SRS.
  2. Now there are 2 options:
    a. Yes => do the transformation using the geoid grid. In order to do so, PROJ needs to access the geoid grid from cdn.proj.org. Therefore, ensure that pyproj.network.set_network_enabled(active=True), see PROJ Network Settings.
    b. No => promote the 2D projected SRS to 3D .to_3d(). This adds the ellipsoidal height for that SRS to the SRS. See sketch below:
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions