def __init__(self, dataset_path): """Opens the dataset and extracts metadata. Most of the metadata is kept in self._ds which is a EOtools.DatasetDrivers.SceneDataset object. Some extra metadata is extracted and kept the instance attributes. """ self._dataset_path = dataset_path LOGGER.info('Opening Dataset %s', self._dataset_path) self._ds = SceneDataset(default_metadata_required=False, utm_fix=True) self._ds = self._ds.Open(self.get_dataset_path()) if not self._ds: raise DatasetError("Unable to open %s" % self.get_dataset_path()) # # Cache extra metadata in instance attributes. # self._dataset_size = self._get_directory_size() if self.get_processing_level() in ['ORTHO', 'L1T', 'MAP']: LOGGER.debug('Dataset %s is Level 1', self.get_dataset_path()) self._gcp_count = self._get_gcp_count() self._mtl_text = self._get_mtl_text() else: self._gcp_count = None self._mtl_text = None self._xml_text = self._get_xml_text() AbstractDataset.__init__(self)
def __init__(self, dataset_path): """Opens the dataset and extracts metadata. Most of the metadata is kept in self._ds which is a EOtools.DatasetDrivers.SceneDataset object. Some extra metadata is extracted and kept the instance attributes. """ self._dataset_path = dataset_path LOGGER.info("Opening Dataset %s", self._dataset_path) # self._ds = SceneDataset(default_metadata_required=False, utm_fix=True) self._Open(self.get_dataset_path()) # # Cache extra metadata in instance attributes. # self._dataset_size = 0 # get the rest of our metadata for implementing abstracted methods self._Collect_Metadata(self.get_dataset_path()) if self.get_processing_level() in ["ORTHO", "L1T", "MAP"]: LOGGER.debug("Dataset %s is Level 1", self.get_dataset_path()) self._gcp_count = self._get_gcp_count() self._mtl_text = self._get_mtl_text() else: self._gcp_count = None self._mtl_text = None self._xml_text = self.get_xml_text() AbstractDataset.__init__(self)
def __init__(self, dataset_path): """Opens the dataset and extracts metadata. Most of the metadata is kept in self._ds which is a EOtools.DatasetDrivers.SceneDataset object. Some extra metadata is extracted and kept the instance attributes. """ self._dataset_path = dataset_path self._ds = SceneDataset(default_metadata_required=False, utm_fix=True) self._ds = self._ds.Open(self.get_dataset_path()) if not self._ds: raise DatasetError("Unable to open %s" % self.get_dataset_path()) # # Cache extra metadata in instance attributes. # self._dataset_size = self._get_directory_size() if self.get_processing_level() in ['ORTHO', 'L1T', 'MAP']: LOGGER.debug('Dataset %s is Level 1', self.get_dataset_path()) self._gcp_count = self._get_gcp_count() self._mtl_text = self._get_mtl_text() else: self._gcp_count = None self._mtl_text = None self._xml_text = self._get_xml_text() AbstractDataset.__init__(self)
def __init__(self, dataset_path): """Opens the dataset and extracts metadata. """ self._satellite_tag = "MT" self._satellite_sensor = "MODIS-Terra" self._dataset_file = os.path.abspath(dataset_path) fileName, fileExtension = os.path.splitext(self._dataset_file) if (fileName.endswith("RBQ500")): self._processor_level = "RBQ500" else: self._processor_level = "MOD09" vrt_file = open(dataset_path, 'r') vrt_string = vrt_file.read() vrt_file.close() self._dataset_path = re.search('NETCDF:(.*):', vrt_string).groups(1)[0] self._vrt_file = dataset_path self._ds = gdal.Open(self._dataset_path, gdal.GA_ReadOnly) if not self._ds: raise DatasetError("Unable to open %s" % self.get_dataset_path()) self._dataset_size = os.path.getsize(self._dataset_path) LOGGER.debug('Transform = %s', self._ds.GetGeoTransform()); LOGGER.debug('Projection = %s', self._ds.GetProjection()); LOGGER.debug('RasterXSize = %s', self._ds.RasterXSize); LOGGER.debug('RasterYSize = %s', self._ds.RasterYSize); command = "ncdump -v InputFileGlobalAttributes %s" % self._dataset_path result = execute(command) if result['returncode'] != 0: raise DatasetError('Unable to perform ncdump: ' + '"%s" failed: %s' % (command, result['stderr'])) s = re.sub(r"\s+", "", result['stdout']) LOGGER.debug('%s = %s', command, s); self._rangeendingdate = re.search('RANGEENDINGDATE\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEENDINGDATE', s).groups(1)[0] LOGGER.debug('RangeEndingDate = %s', self._rangeendingdate) self._rangeendingtime = re.search('RANGEENDINGTIME\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEENDINGTIME', s).groups(1)[0] LOGGER.debug('RangeEndingTime = %s', self._rangeendingtime) self._rangebeginningdate = re.search('RANGEBEGINNINGDATE\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEBEGINNINGDATE', s).groups(1)[0] LOGGER.debug('RangeBeginningDate = %s', self._rangebeginningdate) self._rangebeginningtime = re.search('RANGEBEGINNINGTIME\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEBEGINNINGTIME', s).groups(1)[0] LOGGER.debug('RangeBeginningTime = %s', self._rangebeginningtime) self.scene_start_datetime = self._rangebeginningdate + " " + self._rangebeginningtime self.scene_end_datetime = self._rangeendingdate + " " + self._rangeendingtime self._orbitnumber = int(re.search('ORBITNUMBER\\\\nCLASS=\\\\\"1\\\\\"\\\\nNUM_VAL=1\\\\nVALUE=(.*)\\\\nEND_OBJECT=ORBITNUMBER', s).groups(1)[0]) LOGGER.debug('OrbitNumber = %d', self._orbitnumber) self._cloud_cover_percentage = float(re.search('Cloudy:\\\\t(.*)\\\\n\\\\tMixed', s).groups(1)[0]) LOGGER.debug('CloudCover = %f', self._cloud_cover_percentage) self._completion_datetime = re.search('PRODUCTIONDATETIME\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)Z\\\\\"\\\\nEND_OBJECT=PRODUCTIONDATETIME', s).groups(1)[0] LOGGER.debug('ProcessedTime = %s', self._completion_datetime) self._metadata = self._ds.GetMetadata('SUBDATASETS') band1 = gdal.Open(self._metadata['SUBDATASET_1_NAME']) # Get Coordinates self._width = band1.RasterXSize self._height = band1.RasterYSize self._gt = band1.GetGeoTransform() self._minx = self._gt[0] self._miny = self._gt[3] + self._width*self._gt[4] + self._height*self._gt[5] # from self._maxx = self._gt[0] + self._width*self._gt[1] + self._height*self._gt[2] # from self._maxy = self._gt[3] LOGGER.debug('min/max x coordinates (%s, %s)',str(self._minx), str(self._maxx)) # min/max x coordinates LOGGER.debug('min/max y coordinates (%s, %s)',str(self._miny), str(self._maxy)) # min/max y coordinates LOGGER.debug('pixel size (%s, %s)', str(self._gt[1]), str(self._gt[5])) # pixel size self._pixelX = self._width self._pixelY = self._height LOGGER.debug('pixels (%s, %s)', str(self._pixelX), str(self._pixelY)) # pixels self._gcp_count = None self._mtl_text = None self._xml_text = None AbstractDataset.__init__(self)
def __init__(self, dataset_path): """Opens the dataset and extracts metadata. """ self._satellite_tag = "MT" self._satellite_sensor = "MODIS-Terra" self._dataset_file = os.path.abspath(dataset_path) fileName, fileExtension = os.path.splitext(self._dataset_file) if (fileName.endswith("RBQ500")): self._processor_level = "RBQ500" else: self._processor_level = "MOD09" vrt_file = open(dataset_path, 'r') vrt_string = vrt_file.read() vrt_file.close() self._dataset_path = re.search('NETCDF:(.*):', vrt_string).groups(1)[0] self._vrt_file = dataset_path self._ds = gdal.Open(self._dataset_path, gdal.GA_ReadOnly) if not self._ds: raise DatasetError("Unable to open %s" % self.get_dataset_path()) self._dataset_size = os.path.getsize(self._dataset_path) LOGGER.debug('Transform = %s', self._ds.GetGeoTransform()) LOGGER.debug('Projection = %s', self._ds.GetProjection()) LOGGER.debug('RasterXSize = %s', self._ds.RasterXSize) LOGGER.debug('RasterYSize = %s', self._ds.RasterYSize) command = "ncdump -v InputFileGlobalAttributes %s" % self._dataset_path result = execute(command) if result['returncode'] != 0: raise DatasetError('Unable to perform ncdump: ' + '"%s" failed: %s' % (command, result['stderr'])) s = re.sub(r"\s+", "", result['stdout']) LOGGER.debug('%s = %s', command, s) self._rangeendingdate = re.search( 'RANGEENDINGDATE\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEENDINGDATE', s).groups(1)[0] LOGGER.debug('RangeEndingDate = %s', self._rangeendingdate) self._rangeendingtime = re.search( 'RANGEENDINGTIME\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEENDINGTIME', s).groups(1)[0] LOGGER.debug('RangeEndingTime = %s', self._rangeendingtime) self._rangebeginningdate = re.search( 'RANGEBEGINNINGDATE\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEBEGINNINGDATE', s).groups(1)[0] LOGGER.debug('RangeBeginningDate = %s', self._rangebeginningdate) self._rangebeginningtime = re.search( 'RANGEBEGINNINGTIME\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)\\\\\"\\\\nEND_OBJECT=RANGEBEGINNINGTIME', s).groups(1)[0] LOGGER.debug('RangeBeginningTime = %s', self._rangebeginningtime) self.scene_start_datetime = self._rangebeginningdate + " " + self._rangebeginningtime self.scene_end_datetime = self._rangeendingdate + " " + self._rangeendingtime self._orbitnumber = int( re.search( 'ORBITNUMBER\\\\nCLASS=\\\\\"1\\\\\"\\\\nNUM_VAL=1\\\\nVALUE=(.*)\\\\nEND_OBJECT=ORBITNUMBER', s).groups(1)[0]) LOGGER.debug('OrbitNumber = %d', self._orbitnumber) self._cloud_cover_percentage = float( re.search('Cloudy:\\\\t(.*)\\\\n\\\\tMixed', s).groups(1)[0]) LOGGER.debug('CloudCover = %f', self._cloud_cover_percentage) self._completion_datetime = re.search( 'PRODUCTIONDATETIME\\\\nNUM_VAL=1\\\\nVALUE=\\\\\"(.*)Z\\\\\"\\\\nEND_OBJECT=PRODUCTIONDATETIME', s).groups(1)[0] LOGGER.debug('ProcessedTime = %s', self._completion_datetime) self._metadata = self._ds.GetMetadata('SUBDATASETS') band1 = gdal.Open(self._metadata['SUBDATASET_1_NAME']) # Get Coordinates self._width = band1.RasterXSize self._height = band1.RasterYSize self._gt = band1.GetGeoTransform() self._minx = self._gt[0] self._miny = self._gt[ 3] + self._width * self._gt[4] + self._height * self._gt[5] # from self._maxx = self._gt[ 0] + self._width * self._gt[1] + self._height * self._gt[2] # from self._maxy = self._gt[3] LOGGER.debug('min/max x coordinates (%s, %s)', str(self._minx), str(self._maxx)) # min/max x coordinates LOGGER.debug('min/max y coordinates (%s, %s)', str(self._miny), str(self._maxy)) # min/max y coordinates LOGGER.debug('pixel size (%s, %s)', str(self._gt[1]), str(self._gt[5])) # pixel size self._pixelX = self._width self._pixelY = self._height LOGGER.debug('pixels (%s, %s)', str(self._pixelX), str(self._pixelY)) # pixels self._gcp_count = None self._mtl_text = None self._xml_text = None AbstractDataset.__init__(self)