From 94442eaf6b47d86cb53ca5017f6c68349a8ea3ed Mon Sep 17 00:00:00 2001 From: jlaura <jlaura@usgs.gov> Date: Fri, 28 Jun 2019 15:14:30 -0700 Subject: [PATCH] Updates control network IO to convert to 0 based pixels (#127) * Updates to_isis to use the 0.5 offset * inverse correction on from_isis --- plio/io/io_controlnetwork.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plio/io/io_controlnetwork.py b/plio/io/io_controlnetwork.py index 62544ca..e01dea5 100644 --- a/plio/io/io_controlnetwork.py +++ b/plio/io/io_controlnetwork.py @@ -169,7 +169,7 @@ class IsisStore(object): self._handle.seek(point_start_byte) cp = cnp5.ControlPointFileEntryV0005() pts = [] - byte_count = 0; + byte_count = 0 while byte_count < find_in_dict(pvl_header, 'PointsBytes'): message_size = struct.unpack('I', self._handle.read(4))[0] cp.ParseFromString(self._handle.read(message_size)) @@ -185,6 +185,9 @@ class IsisStore(object): cols = self.point_attrs + self.measure_attrs df = IsisControlNetwork(pts, columns=cols) + # Convert the (0.5, 0.5) origin pixels back to (0,0) pixels + df['line'] -= 0.5 + df['sample'] -= 0.5 df.header = pvl_header return df @@ -259,8 +262,9 @@ class IsisStore(object): if attr in g.columns: setattr(measure_spec, attr, attrtype(m[attr])) measure_spec.serialnumber = m.serialnumber - measure_spec.sample = m.x - measure_spec.line = m.y + # ISIS pixels are centered on (0.5, 0.5). NDArrays are (0,0) based. + measure_spec.sample = m.x + 0.5 + measure_spec.line = m.y + 0.5 measure_spec.type = m.measuretype measure_iterable.append(measure_spec) self.nmeasures += 1 -- GitLab