Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Stoops committed Aug 27, 2024
1 parent 7c347f7 commit d673179
Showing 1 changed file with 46 additions and 7 deletions.
53 changes: 46 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,14 @@

Small geographic coordinate systems Python library with a few additional helper functions.

This package focuses on performance, correct matrix shapes, single to many point functions and many to many point functions

This package focuses on:
1. Performance
2. Input and output coordinates of ideal mathematical shapes. Ideally, all coordinates should be of shapes (3,1) or (nPoints,3,1), but shapes (3,) and (nPoints,3) are supported too.
3. Functions that adapt to differing input matrices shapes: one-to-one, many-to-many and one-to-many points. See [here](examples/example1.ipynb) for an example.
3. Functions that adapt to differing input matrices shapes: one-to-one, many-to-many and one-to-many points. See [below](#many-to-many--one-to-many) for an example.

## Installation
`pip install transforms84`

## Examples
See the Jupyter notebooks in [examples](examples) to see how to use the transform84. Run `pip install transforms84[examples]` to run the examples locally.

## Operations
### Transformations
The following transformations have been implemented:
Expand All @@ -39,5 +34,49 @@ The following functions have been implemented:
- [rad, rad, X] → [deg, deg, X]
- [deg, deg, X] → [rad, rad, X]

## Examples
See the Jupyter notebooks in [examples](examples) to see how to use the transform84. Run `pip install transforms84[examples]` to run the examples locally.

### Many-to-many & one-to-many
The `transforms.ECEF2ENU` transformation accepts same and differing matrix shape sizes. Below showcases the many-to-many method where three target points, `rrm_target`, in the geodetic coordinate system ([WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System)) are transformed to the local ENU coordinate system about the point `rrm_local`, where both matrices are of shape (3, 3, 1):
```
>> import numpy as np
>> from transforms84.systems import WGS84
>> from transforms84.helpers import DDM2RRM
>> from transforms84.transforms import ECEF2ENU, geodetic2ECEF
>> rrm_local = DDM2RRM(np.array([[[30], [31], [0]], [[30], [31], [0]], [[30], [31], [0]]], dtype=np.float64)) # convert each point from [deg, deg, X] to [rad, rad, X]
>> rrm_target = DDM2RRM(np.array([[[31], [32], [0]], [[31], [32], [0]], [[31], [32], [0]]], dtype=np.float64))
>> ECEF2ENU(rrm_local, geodetic2ECEF(rrm_target, WGS84.a, WGS84.b), WGS84.a, WGS84.b) # geodetic2ECEF -> ECEF2ENU
array([[[ 4.06379074e+01],
[-6.60007585e-01],
[ 1.46643956e+05]],
[[ 4.06379074e+01],
[-6.60007585e-01],
[ 1.46643956e+05]],
[[ 4.06379074e+01],
[-6.60007585e-01],
[ 1.46643956e+05]]])
```

We can achieve the same result using the one-to-many method with a single local point of shape (3, 1):
```
>> rrm_local = DDM2RRM(np.array([[30], [31], [0]], dtype=np.float64))
>> ECEF2ENU(rrm_local, geodetic2ECEF(rrm_target, WGS84.a, WGS84.b), WGS84.a, WGS84.b)
array([[[ 4.06379074e+01],
[-6.60007585e-01],
[ 1.46643956e+05]],
[[ 4.06379074e+01],
[-6.60007585e-01],
[ 1.46643956e+05]],
[[ 4.06379074e+01],
[-6.60007585e-01],
[ 1.46643956e+05]]])
```

## Contributing
PRs are always welcome and appreciated!
PRs are always welcome and appreciated! Please install the pre-commit hooks before making commits.

0 comments on commit d673179

Please sign in to comment.