Skip to content
Commits on Source (4)
[bumpversion]
current_version = 1.0.0
current_version = 1.1.0
commit = True
tag = True
......
This diff is collapsed.
mipp (1.0.0-4) UNRELEASED; urgency=medium
mipp (1.1.0-1) UNRELEASED; urgency=medium
[ Antonio Valentino ]
* New upstream release.
* debian/patches
- refresh all patches
[ Bas Couwenberg ]
* Update Vcs-* URLs for Salsa.
-- Antonio Valentino <antonio.valentino@tiscali.it> Sat, 31 Mar 2018 12:26:45 +0200
......
......@@ -7,10 +7,10 @@ Subject: fix None checking
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mipp/xrit/loader.py b/mipp/xrit/loader.py
index 08a11ba..76c9a78 100644
index f08499a..4ad135a 100644
--- a/mipp/xrit/loader.py
+++ b/mipp/xrit/loader.py
@@ -121,7 +121,7 @@ class ImageLoader(object):
@@ -126,7 +126,7 @@ class ImageLoader(object):
def __call__(self, area_extent=None):
"""Slice according to (ll_x, ll_y, ur_x, ur_y) or read full disc.
"""
......
......@@ -25,4 +25,4 @@
"""Version file.
"""
__version__ = "v1.0.0"
__version__ = "v1.1.0"
......@@ -28,18 +28,18 @@
#raise NotImplementedError
import logging
import sys
from datetime import datetime
from StringIO import StringIO
import numpy as np
from mipp import CalibrationError
from mipp import CalibrationError, ReaderError
from mipp.xrit import bin_reader as rbin
from mipp.xrit import Metadata, _xrit
logger = logging.getLogger(__name__)
__all__ = ['read_metadata']
eval_np = eval
......@@ -59,6 +59,8 @@ else:
'Performance will be slower.')
MSG_HEIGHT = 35785831.00 # m
# Reflectance factor for visible bands
HRV_F = 25.15
VIS006_F = 20.76
......@@ -852,7 +854,10 @@ def read_metadata(prologue, image_files, epilogue):
fp = StringIO(epilogue.data)
ftr = read_epiheader(fp)
try:
im = _xrit.read_imagedata(image_files[0])
except IndexError:
raise ReaderError("No image segments available")
md = Metadata()
md.calibrate = _Calibrator(
......@@ -886,10 +891,13 @@ def read_metadata(prologue, image_files, epilogue):
ftr["UpperEastColumnActual"],
ftr["UpperWestColumnActual"]]])
md.coff = (ftr["Lower" + ew_.capitalize() + "ColumnActual"]
+ im.navigation.coff + 1)
md.coff = (ftr["Lower" + ew_.capitalize() + "ColumnActual"] - 1
+ im.navigation.coff - 1)
md.loff = im.navigation.loff + \
segment_size * (im.segment.seg_no - 1) + 2
segment_size * (im.segment.seg_no - 1) - 1
if (hdr["GeometricProcessing"]["EarthModel"]["TypeOfEarthModel"] < 2):
md.coff += 1.5
md.loff += 1.5
else:
md.first_pixel = hdr["ReferenceGridVIS_IR"]["GridOrigin"]
......@@ -900,8 +908,16 @@ def read_metadata(prologue, image_files, epilogue):
ftr["EasternColumnActual"],
ftr["WesternColumnActual"]]])
md.coff = im.navigation.coff
md.loff = im.navigation.loff + segment_size * (im.segment.seg_no - 1)
md.coff = im.navigation.coff - 1
md.loff = im.navigation.loff + \
segment_size * (im.segment.seg_no - 1) - 1
if (hdr["GeometricProcessing"]["EarthModel"]["TypeOfEarthModel"] < 2):
md.coff += .5
md.loff += .5
md.x_pixel_size = np.deg2rad(2.**16 / im.navigation.cfac) * MSG_HEIGHT * -1
md.y_pixel_size = np.deg2rad(2.**16 / im.navigation.lfac) * MSG_HEIGHT * -1
md.data_type = im.structure.nb
md.no_data_value = no_data_value
......
......@@ -3,21 +3,25 @@
#
# Inspired by NWCLIB
#
import numpy
import types
import copy
import logging
logger = logging.getLogger('mipp')
import types
import numpy
import mipp
from mipp.xrit import _xrit, convert
logger = logging.getLogger('mipp')
__all__ = ['ImageLoader']
def _null_converter(blob):
return blob
class ImageLoader(object):
def __init__(self, mda, image_files, mask=False, calibrate=False):
......@@ -95,7 +99,8 @@ class ImageLoader(object):
#
# Update meta-data
#
mda.area_extent = numpy.array(self._slice2extent(rows, columns, rotated=True), dtype=numpy.float64)
mda.area_extent = numpy.array(self._slice2extent(
rows, columns, rotated=True), dtype=numpy.float64)
if (rows != self._allrows) or (columns != self._allcolumns):
mda.region_name = 'sliced'
......@@ -142,15 +147,20 @@ class ImageLoader(object):
else:
coff = self.mda.coff - 1
try:
row_size = self.mda.y_pixel_size
col_size = self.mda.x_pixel_size
except AttributeError:
row_size = self.mda.pixel_size[0]
col_size = self.mda.pixel_size[1]
logger.debug('area_extent: %.2f, %.2f, %.2f, %.2f'%tuple(area_extent))
logger.debug('area_extent: resolution %.2f, %.2f'%(row_size, col_size))
logger.debug('area_extent: %.2f, %.2f, %.2f, %.2f' %
tuple(area_extent))
logger.debug('area_extent: resolution %.2f, %.2f' %
(row_size, col_size))
logger.debug('area_extent: loff, coff %d, %d' % (loff, coff))
logger.debug('area_extent: expected size %d, %d'%\
(int(numpy.round((area_extent[2] - area_extent[0])/col_size)),\
logger.debug('area_extent: expected size %d, %d' %
(int(numpy.round((area_extent[2] - area_extent[0]) / col_size)),
int(numpy.round((area_extent[3] - area_extent[1]) / row_size))))
col_start = int(numpy.round(area_extent[0] / col_size + coff + 0.5))
......@@ -161,7 +171,8 @@ class ImageLoader(object):
row_stop += 1
col_stop += 1
logger.debug('area_extent: computed size %d, %d'%(col_stop - col_start, row_stop - row_start))
logger.debug('area_extent: computed size %d, %d' %
(col_stop - col_start, row_stop - row_start))
return self[row_start:row_stop, col_start:col_stop]
......@@ -183,7 +194,8 @@ class ImageLoader(object):
if isinstance(columns, int):
columns = slice(item[1], item[1] + 1)
else:
raise IndexError, "can only handle two indexes, not %d"%len(item)
raise IndexError, "can only handle two indexes, not %d" % len(
item)
elif item is None:
# full disc
rows, columns = self._allrows, self._allcolumns
......@@ -225,11 +237,15 @@ class ImageLoader(object):
else:
coff -= 1
logger.debug('slice2extent: size %d, %d'% \
logger.debug('slice2extent: size %d, %d' %
(columns.stop - columns.start, rows.stop - rows.start))
rows = slice(rows.start, rows.stop - 1)
columns = slice(columns.start, columns.stop - 1)
try:
row_size = self.mda.y_pixel_size
col_size = self.mda.x_pixel_size
except AttributeError:
row_size = self.mda.pixel_size[0]
col_size = self.mda.pixel_size[1]
......@@ -238,10 +254,10 @@ class ImageLoader(object):
ur_x = (columns.stop - coff + 0.5) * col_size
ur_y = -(rows.start - loff - 0.5) * row_size
logger.debug('slice2extent: computed extent %.2f, %.2f, %.2f, %.2f'% \
logger.debug('slice2extent: computed extent %.2f, %.2f, %.2f, %.2f' %
(ll_x, ll_y, ur_x, ur_y))
logger.debug('slice2extent: computed size %d, %d'% \
(int(numpy.round((ur_x - ll_x)/col_size)), \
logger.debug('slice2extent: computed size %d, %d' %
(int(numpy.round((ur_x - ll_x) / col_size)),
int(numpy.round((ur_y - ll_y) / row_size))))
return [ll_x, ll_y, ur_x, ur_y]
......@@ -360,7 +376,8 @@ class ImageLoader(object):
# Calculate final line in actual segment.
#
if seg_no == seg_end:
end_line_in_segment = line_end - (segment_nlines*(seg_end - 1))
end_line_in_segment = line_end - \
(segment_nlines * (seg_end - 1))
else:
end_line_in_segment = segment_nlines
......@@ -433,7 +450,8 @@ class ImageLoader(object):
if isinstance(calibrate, bool):
# allow boolean True/False for 1/0
calibrate = int(calibrate)
image, mda.calibration_unit = mda.calibrate(image, calibrate=calibrate)
image, mda.calibration_unit = mda.calibrate(
image, calibrate=calibrate)
mda.is_calibrated = True
else:
mda.calibration_unit = ""
......@@ -448,4 +466,3 @@ class ImageLoader(object):
image = image.filled(mda.no_data_value)
return image