Skip to main content

Universal Reference Frame Transformer

Project description

URFT - Universal Reference Frame Transformer

Overview

The Universal Reference Frame Transformer transforms coordinates between supported reference frames, including epoch handling for dynamic frames and optional uncertainty propagation.

This repository also includes:

  • A batch file module (file_transformer.py) used for processing csv data.
  • A Streamlit GUI (app.py) for interactive single-point and batch transformations.

Installation

To install URFT use pip

pip install urft

If you want to use the gui use following pip command

pip install urft[gui]

Supported Reference Frames

Transformations can be completed between any of the following frames.

Static

GDA2020, GDA94, AGD66, AGD84, MGA94, MGA2020

Dynamic

Australian:

ATRF2014

ITRF:

ITRF88, ITRF89, ITRF90, ITRF91, ITRF92, ITRF93, ITRF94, ITRF96, ITRF97, ITRF2000, ITRF2005, ITRF2008, ITRF2014, ITRF2020

WGS84:

WGS84 (Transit), WGS84 (G730), WGS84 (G873), WGS84 (G1150), WGS84 (G1674), WGS84 (G1762), WGS84 (G2139), WGS84 (G2296), WGS84 Ensemble

Dependencies

  • GeodePy
  • NumPy
  • Shapely
  • PyProj

For GUI:

  • Streamlit
  • pydeck

Core Functionality

Transformation can take place in any of the three coordinate types. Depending on which coordinate type is input will decide which function should be used.

XYZ (Cartesian)

universal_transform(
    x, y, z,
    from_ref, to_ref,
    from_epoch=None, to_epoch=None,
    plate_motion="auto", vcv=None,
    return_type="xyz", ignore_errors=False,
    verbose=False
)

LLH (Latitude/Longitude/Height)

universal_transform_llh(
    lat, lon, el_height,
    from_ref, to_ref,
    from_epoch=None, to_epoch=None,
    plate_motion="auto", vcv=None,
    return_type="llh", ignore_errors=False,
    verbose=False
)

ENU (Projected Easting/Northing/Height + Zone)

universal_transform_enu(
    east, north, height, zone,
    from_ref, to_ref,
    from_epoch=None, to_epoch=None,
    plate_motion="auto", vcv=None,
    return_type="enu", ignore_errors=False,
    verbose=False
)

Key parameters

  • plate_motion: "auto" selects plate motion automatically; "aus" forces the Australian plate motion model.
  • vcv: optional 3×3 NumPy array for uncertainty propagation.
  • return_type: one of "xyz", "llh", "enu".
  • ignore_errors: When set to true will run transformation even if it shouldn't
  • verbose: When set to true transformation path will be printed

Epoch Requirements

Epoch inputs depend on whether the source/target frames are static or dynamic.

  • Static → Static: no epochs required
  • Static → Dynamic: to_epoch required
  • Dynamic → Static: from_epoch required
  • Dynamic → Dynamic: from_epoch and to_epoch required

Output

Output can be in any of the three coordinate types. All functions return a dictionary containing:

  • type: output coordinate type (xyz, llh, or enu)
  • vcv: 3×3 NumPy array if uncertainties are available, else None
  • coords: coordinate fields matching the output type

For example to access the coords from an llh coordinate type you would use to following

latitude = result['coords']['lat']
longitude = results['coords']['lon']

Streamlit GUI

A Streamlit app is provided in app.py with two pages:

  • Single Point
  • Batch Processing

To run:

streamlit run app.py

GUI Screenshot

Batch / File Transformation Helper

file_transformer.py let you complete batch processing of points in a csv. To do so it has two classes to handle required data:

  • TransformParams holds transformation parameters that are not the coordinates
  • CSVCoordinateMapping for mapping coordinate columns in csv (supports xyz, llh, and enu)

Using these classes a csv file can be transformed using the following function.

csv_transformation(file_path, CSVCoordinateMapping, TransformParams)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

urft-0.1.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

urft-0.1.0-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file urft-0.1.0.tar.gz.

File metadata

  • Download URL: urft-0.1.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for urft-0.1.0.tar.gz
Algorithm Hash digest
SHA256 99120a176ddf343c4215e8d1efaf1c517d1a0edd4c5870281c4aef8ecd5b0e92
MD5 76fddea7f9a9a7a9b5538ca96728b3b1
BLAKE2b-256 4f05f36bd273eec1f9d1b3a88d45008be2b635f822e8f025ebdc567c144ff23b

See more details on using hashes here.

File details

Details for the file urft-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: urft-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for urft-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 405a073c56ca85d6a39524557ec8096b688230495b2a4276ded56fc27048181e
MD5 d076b7e4e46e7c93b568202b576f9b44
BLAKE2b-256 254db4f3909073b63ad9c22d430e9958178c6373d1aac033570eba7a4eaa6e3f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page