Skip to content

Commit 03033fe

Browse files
authored
srs vert extract (#58)
* srs vert extract * ruff format
1 parent e6d309b commit 03033fe

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

src/transformez/srs.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,18 @@ def _extract_geoid(self, srs_str):
5858
return parts[0], (parts[1] if len(parts) > 1 else None)
5959

6060
def _extract_vertical(self, srs_str):
61-
parts = str(srs_str).split("+")
62-
return parts[0], (parts[1] if len(parts) > 1 else None)
61+
# parts = str(srs_str).split("+")
62+
# return parts[0], (parts[1] if len(parts) > 1 else None)
63+
if "+" in srs_str:
64+
horz_str, vert_str = srs_str.rsplit("+", 1)
65+
try:
66+
if "EPSG" in vert_str.upper():
67+
vert_str = vert_str.split(":")[-1]
68+
return horz_str, int(vert_str)
69+
except Exception as e:
70+
logger.debug(f"Failed to build compound CRS from '{srs_str}': {e}")
71+
return srs_str, None
72+
return srs_str, None
6373

6474
def _get_epsg_int(self, crs):
6575
"""Extract EPSG integer from a CRS."""
@@ -108,8 +118,12 @@ def _parse_srs(self):
108118
self.tc["dst_vert_epsg"] = self._get_epsg_int(self.tc["dst_crs"])
109119

110120
if self.tc["src_vert_epsg"] is None:
121+
if vert_epsg_src is None:
122+
_, vert_epsg_src = self._extract_vertical(self.src_srs_input)
111123
self.tc["src_vert_epsg"] = vert_epsg_src
112124
if self.tc["dst_vert_epsg"] is None:
125+
if vert_epsg_dst is None:
126+
_, vert_epsg_dst = self._extract_vertical(self.dst_srs_input)
113127
self.tc["dst_vert_epsg"] = vert_epsg_dst
114128

115129
# Lookup default geoids

0 commit comments

Comments
 (0)