Skip to content
Snippets Groups Projects
Commit 2efb9cd9 authored by Kelvin Rodriguez's avatar Kelvin Rodriguez Committed by Jesse Mapel
Browse files

add reproject code (#36)

* add reproject code

* test reproject not pointing to autocnet

* get travis to work
parent 8492359a
No related branches found
No related tags found
No related merge requests found
...@@ -30,7 +30,7 @@ before_install: ...@@ -30,7 +30,7 @@ before_install:
- conda env update -n test -f environment.yml - conda env update -n test -f environment.yml
script: script:
- pytest tests - PYTHONPATH=. pytest tests
after_success: after_success:
- coveralls - coveralls
......
import pyproj
def reproject(record, semi_major, semi_minor, source_proj, dest_proj, **kwargs):
"""
Thin wrapper around PyProj's Transform() function to transform 1 or more three-dimensional
point from one coordinate system to another. If converting between Cartesian
body-centered body-fixed (BCBF) coordinates and Longitude/Latitude/Altitude coordinates,
the values input for semi-major and semi-minor axes determine whether latitudes are
planetographic or planetocentric and determine the shape of the datum for altitudes.
If semi_major == semi_minor, then latitudes are interpreted/created as planetocentric
and altitudes are interpreted/created as referenced to a spherical datum.
If semi_major != semi_minor, then latitudes are interpreted/created as planetographic
and altitudes are interpreted/created as referenced to an ellipsoidal datum.
Parameters
----------
record : object
Pandas series object
semi_major : float
Radius from the center of the body to the equater
semi_minor : float
Radius from the pole to the center of mass
source_proj : str
Pyproj string that defines a projection space ie. 'geocent'
dest_proj : str
Pyproj string that defines a project space ie. 'latlon'
Returns
-------
: list
Transformed coordinates as y, x, z
"""
source_pyproj = pyproj.Proj(proj = source_proj, a = semi_major, b = semi_minor)
dest_pyproj = pyproj.Proj(proj = dest_proj, a = semi_major, b = semi_minor)
y, x, z = pyproj.transform(source_pyproj, dest_pyproj, record[0], record[1], record[2], **kwargs)
return y, x, z
from unittest import mock
import pytest
from knoten import utils
def test_reproject():
with mock.patch('pyproj.transform', return_value=[1,1,1]) as mock_pyproj:
res = utils.reproject([1,1,1], 10, 10, 'geocent', 'latlon')
mock_pyproj.assert_called_once()
assert res == (1,1,1)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment