Skip to main content

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", output_zone=None, 
    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", output_zone=None,
    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", output_zone=None,
    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".
  • output_zone: Will set output_zone if using "enu" return type.
  • 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)

Metadata

Release files for urft 0.2.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for urft 0.2.6
File Size Uploaded Provenance Actions
urft-0.2.6.tar.gz 1.3 MB Without provenance Details for urft-0.2.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for urft 0.2.6
File Interpreter ABI Platform Actions
urft-0.2.6-py3-none-any.whl Python 3 none any Details for urft-0.2.6-py3-none-any.whl

Total release size: 2.5 MB

Release files / urft-0.2.6.tar.gz

Download URL urft-0.2.6.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
717864d5d4f831b4426f877f331a9f83b666cd459cb4f4e89684fcff8a245dfe
BLAKE2b-256 checksum
How to use checksums
2df0ca9b708e8c2f69aed674ca9d395ed98da563299a79424e53c3496a893dbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / urft-0.2.6-py3-none-any.whl

Download URL urft-0.2.6-py3-none-any.whl
Size 1.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
7c79b944936b564223b3a600b75e56a408804dc90716abb1819f6225ff3ae3c8
BLAKE2b-256 checksum
How to use checksums
5c526c5df2a36d957a1584f1c32c753cdf304fd409a7f64f642da8ac3932354d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for urft 0.2.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page