Я использую gdal
для чтения jp2
по строкам, вот код:
def open(self):
if self.ds is None:
self.ds = gdal.Open(self.file_path, gdal.GA_ReadOnly)
self.geo_transform = self.ds.GetGeoTransform()
self.rows = self.ds.RasterYSize
self.cols = self.ds.RasterXSize
def read_strip(self, y_start, read_y_size):
"""
y_start : y in projection coordinate
"""
self.open()
if not self.ds:
raise IOError("Could not open '%s'" % self.file_path)
y_off = int((y_start - self.geo_transform[3]) / self.geo_transform[5])
if y_off < 0 or y_off >= self.rows:
return None
else:
read_y_size_in_data = min(self.rows - y_off, read_y_size)
try:
read_data = self.ds.ReadAsArray(0, y_off, ysize=read_y_size_in_data)
band_data = read_data.astype(float)
self.logger.info('{}, {}, {}'.format(read_y_size, y_off, read_y_size_in_data))
return band_data
except Exception:
self.logger.exception('this file is Nonetype, file: {}'.format(self.file_path))
self.logger.info('{}, {}, {}'.format(read_y_size, y_off, read_y_size_in_data))
self.close()
Вот сообщение об ошибке:
Traceback (most recent call last): File "scene_reader.py", line 62, in read_strip band_data = read_data.astype(float), 'NoneType' object has no attribute 'astype'
Каждый раз, когда явыполнить код, я не получил IOError, что означает, что файл jp2 успешно открыт, в то время как ReadAsArray () получил ошибку «Nonetype».Кстати, я пытался просто использовать gdal.Open () и ReadAsArray (), чтобы прочитать один и тот же файл в несколько строк в ipython, все в порядке, так что я уверен, что нет ничего плохого в самом файле jp2,так, кто-нибудь может мне помочь?