Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/transformez/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,7 @@ def build_components(
)

if source.horizontal is not None:
vertical = vertical.reproject(
source.horizontal,
dst_region=region_obj,
)
vertical = vertical.reproject(source.horizontal)

return TransformationComponents(
horizontal=horizontal,
Expand Down
124 changes: 83 additions & 41 deletions src/transformez/cli/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,66 +64,108 @@ def reference(ref_id) -> None:
parsed_ref = parse_reference(ref_id)

if parsed_ref is not None:
parsed_horizontal = parsed_ref.horizontal
parsed_vertical = parsed_ref.vertical

click.secho("\n Reference:", fg="cyan", bold=True)
click.echo("-" * 12)
click.echo(f" {'Input:':<18} {parsed_ref.source_text}")

click.echo(f" {'ID:':<18} {parsed_ref.source_text}")
if parsed_horizontal is not None:
click.secho("\n Horizontal:", fg="cyan", bold=True)
click.echo("-" * 12)

if parsed_vertical is not None:
click.echo(f" {'Name:':<18} {parsed_vertical.name}")
click.echo(f" {'Kind:':<18} {parsed_vertical.kind}")
click.echo(
f" {'Axis Direction:':<18} {parsed_vertical.axis_direction}"
auth = parsed_horizontal.to_authority()
horizontal_id = (
f"{auth[0]}:{auth[1]}"
if auth is not None
else parsed_horizontal.to_string()
)
click.echo(f" {'Units:':<18} {parsed_vertical.unit_name}")

resolved_ref = resolve_reference(parsed_ref)
resolved_vertical = resolved_ref.vertical
if resolved_vertical is not None:
resolved_binding = resolved_vertical.binding
if resolved_binding is not None:
click.secho("\n Execution:", fg="cyan", bold=True)
click.echo("-" * 12)

click.echo(f" {'Engine:':<18} {resolved_binding.engine}")
click.echo(f" {'Provider:':<18} {resolved_binding.provider}")
click.echo(
f" {'Provider Datum:':<18} {resolved_binding.provider_datum}"
)
click.echo(
f" {'Native Frame:':<18} {resolved_binding.native_frame}"
)
click.echo(
f" {'Default Model:':<18} {resolved_binding.default_model}"
)
click.echo(
f" {'Global Proxy:':<18} {resolved_binding.global_proxy}"
)

if parsed_horizontal.is_projected:
horizontal_type = "projected"
elif parsed_horizontal.is_geographic:
horizontal_type = "geographic"
else:
horizontal_type = "other"

click.echo(f" {'ID:':<18} {horizontal_id}")
click.echo(f" {'Name:':<18} {parsed_horizontal.name}")
click.echo(f" {'Type:':<18} {horizontal_type}")

if parsed_vertical is not None:
click.secho("\n Vertical:", fg="cyan", bold=True)
click.echo("-" * 12)

click.echo(f" {'ID:':<18} {parsed_vertical.id}")
click.echo(f" {'Name:':<18} {parsed_vertical.name}")
click.echo(f" {'Kind:':<18} {parsed_vertical.kind.value}")
click.echo(
f" {'Axis Direction:':<18} {parsed_vertical.axis_direction.value}"
)
click.echo(f" {'Units:':<18} {parsed_vertical.unit_name}")

resolved_ref = resolve_reference(parsed_ref)
resolved_vertical = resolved_ref.vertical

if resolved_vertical is not None:
resolved_binding = resolved_vertical.binding

if resolved_binding is not None:
click.secho("\n Execution:", fg="cyan", bold=True)
click.echo("-" * 12)

click.echo(f" {'Engine:':<18} {resolved_binding.engine}")
click.echo(
f" {'Provider:':<18} {resolved_binding.provider}"
)
click.echo(
f" {'Provider Datum:':<18} "
f"{resolved_binding.provider_datum}"
)
click.echo(
f" {'Native Frame:':<18} "
f"{resolved_binding.native_frame}"
)
click.echo(
f" {'Default Model:':<18} "
f"{resolved_binding.default_model}"
)
click.echo(
f" {'Global Proxy:':<18} "
f"{resolved_binding.global_proxy}"
)

resolved_frame_binding = resolved_vertical.frame_binding

if resolved_frame_binding is not None:
click.secho("\n Frame:", fg="cyan", bold=True)
click.echo("-" * 12)

frame_auth = resolved_vertical.native_frame.to_authority()
frame_id = (
f"{frame_auth[0]}:{frame_auth[1]}"
if frame_auth is not None
else resolved_vertical.native_frame.to_string()
)

click.echo(f" {'ID:':<18} {frame_id}")
click.echo(f" {'Name:':<18} {resolved_frame_binding.name}")
click.echo(
f" {'HTDP ID:':<18} {resolved_frame_binding.htdp_id}"
)
click.echo(
f" {'Reference Epoch:':<18} {resolved_frame_binding.reference_epoch}"
f" {'Reference Epoch:':<18} "
f"{resolved_frame_binding.reference_epoch}"
)
else:
click.echo(f" No frame binding available for {ref_id}")
else:
click.echo(f" No operation binding available for {ref_id}")
else:
click.echo(f" No vertical reference available for {ref_id}")
else:
click.echo(f" No vertical reference available for {ref_id}")
else:
click.echo(f" Could not parse {ref_id}")
elif resolved_binding is not None:
click.echo(
f" No frame binding available for "
f"{resolved_vertical.native_frame.to_string()}"
)

elif parsed_horizontal is None:
click.echo(f" No coordinate reference available for {ref_id}")

except InvalidReferenceError:
click.echo(f" {ref_id} is unsupported by transformez")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ def run(self) -> bool:
class UninstallTransformezTask(TransformezTask):
"""Uninstall Transformez from the managed isolated runtime."""

def __init__(self):
def __init__(self) -> None:
super().__init__("Uninstall Transformez from isolated runtime")
self.result: subprocess.CompletedProcess[str] | None = None

Expand Down
7 changes: 7 additions & 0 deletions src/transformez/reference/resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,13 @@ def resolve_reference(
)

native_frame = parsed.vertical.crs
if native_frame.is_projected:
if native_frame.geodetic_crs is not None:
native_frame = native_frame.geodetic_crs

if native_frame is not None and len(native_frame.axis_info) != 3:
native_frame = native_frame.to_3d()

effective_model = None

elif binding is not None:
Expand Down
10 changes: 6 additions & 4 deletions src/transformez/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ def __init__(self, filename: str | Path, default_nodata: float = 0.0):

with rasterio.open(filename) as src:
self.data = src.read(1)
self.crs = src.crs
self.transform = src.transform
self.inv_transform = ~src.transform
self.bounds = src.bounds
Expand All @@ -142,10 +143,11 @@ def query(self, x: np.ndarray, y: np.ndarray) -> np.ndarray:
q_x = np.asarray(x).copy()
q_y = np.asarray(y)

if self.bounds.left < 0 and np.any(q_x > 180):
q_x = np.where(q_x > 180, q_x - 360, q_x)
elif self.bounds.left >= 0 and np.any(q_x < 0):
q_x = np.where(q_x < 0, q_x + 360, q_x)
if self.crs is not None and self.crs.is_geographic:
if self.bounds.left < 0 and np.any(q_x > 180):
q_x = np.where(q_x > 180, q_x - 360, q_x)
elif self.bounds.left >= 0 and np.any(q_x < 0):
q_x = np.where(q_x < 0, q_x + 360, q_x)

cols_f, rows_f = self.inv_transform * (q_x, q_y)

Expand Down
2 changes: 1 addition & 1 deletion tests/test_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def test_build_components_vertical_is_aligned_to_source_crs(monkeypatch):

args, kwargs = generated.reproject.call_args
assert CRS.from_user_input(args[0]) == CRS.from_epsg(32610)
assert kwargs["dst_region"] is region
# assert kwargs["dst_region"] is region # we removed dst_region from build_components


# Removing this test for now; i don't think we should crash here when
Expand Down
Loading