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'tverbose: 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_epochrequired - Dynamic → Static:
from_epochrequired - Dynamic → Dynamic:
from_epochandto_epochrequired
Output
Output can be in any of the three coordinate types. All functions return a dictionary containing:
type: output coordinate type (xyz,llh, orenu)vcv: 3×3 NumPy array if uncertainties are available, elseNonecoords: 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
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:
TransformParamsholds transformation parameters that are not the coordinatesCSVCoordinateMappingfor mapping coordinate columns in csv (supportsxyz,llh, andenu)
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.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| urft-0.2.3.tar.gz | 1.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| urft-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.5 MB
Release files / urft-0.2.3.tar.gz
| Download URL | urft-0.2.3.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5540b4752c0f85b7f824aa31f66064a635bfb5ed9372ab13fda0b5a4039a38d
|
|
BLAKE2b-256 checksum How to use checksums |
67e16d8d1f42392df851ab032e121d8e2bb3741696e48bf7217620ab0d249892
|
| 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.3-py3-none-any.whl
| Download URL | urft-0.2.3-py3-none-any.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e68034bdb4b14e065bf943579744771294d992926242f61358ad78ef3b89998b
|
|
BLAKE2b-256 checksum How to use checksums |
43782f2474ae27301d229b915763bb2f33dec92fff351844b4d132423c748d26
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|