def GetOutputDriversFor(filename: PathLikeOrStr, is_raster=True) -> List[str]: filename = os.fspath(filename) drv_list = [] ext = get_extension(filename) if ext.lower() == 'vrt': return ['VRT'] for i in range(gdal.GetDriverCount()): drv = gdal.GetDriver(i) if (drv.GetMetadataItem(gdal.DCAP_CREATE) is not None or drv.GetMetadataItem(gdal.DCAP_CREATECOPY) is not None) and \ drv.GetMetadataItem(gdal.DCAP_RASTER if is_raster else gdal.DCAP_VECTOR) is not None: if ext and DoesDriverHandleExtension(drv, ext): drv_list.append(drv.ShortName) else: prefix = drv.GetMetadataItem(gdal.DMD_CONNECTION_PREFIX) if prefix is not None and filename.lower().startswith(prefix.lower()): drv_list.append(drv.ShortName) # GMT is registered before netCDF for opening reasons, but we want # netCDF to be used by default for output. if ext.lower() == 'nc' and not drv_list and \ drv_list[0].upper() == 'GMT' and drv_list[1].upper() == 'NETCDF': drv_list = ['NETCDF', 'GMT'] return drv_list
def GetOutputDriverFor(filename: PathLikeOrStr, is_raster=True, default_raster_format='GTiff', default_vector_format='ESRI Shapefile') -> str: if not filename: return 'MEM' drv_list = GetOutputDriversFor(filename, is_raster) ext = get_extension(filename) if not drv_list: if not ext: return default_raster_format if is_raster else default_vector_format else: raise Exception("Cannot guess driver for %s" % filename) elif len(drv_list) > 1: print("Several drivers matching %s extension. Using %s" % (ext if ext else '', drv_list[0])) return drv_list[0]
def read(self, filename_or_strings: ColorPaletteOrPathOrStrings): if isinstance(filename_or_strings, ColorPalette): self.assign(filename_or_strings) else: filename, temp_filename = get_file_from_strings( filename_or_strings) ext = base.get_extension(filename).lower() if ext == 'qlr': self.read_qlr(filename) elif ext == 'txt': self.read_color_file(filename) else: return False if temp_filename: os.remove(temp_filename) return True
def test_utils_py_0(): for b in (False, 'False', 'OfF', 'no'): assert not base.is_true(b) for b in (True, 'TruE', 'ON', 'yes'): assert base.is_true(b) assert base.enum_to_str(Extent.UNION) == 'UNION' assert base.enum_to_str('UNION') == 'UNION' filename = Path('abc') / Path('def') / Path('a.txt') assert base.is_path_like(Path(filename)) assert base.is_path_like(str(filename)) assert not base.is_path_like(None) assert not base.is_path_like([filename]) assert base.get_suffix(filename) == '.txt' assert base.get_extension(filename) == 'txt' for idx, b in enumerate((0x23, 0xc1, 0xab, 0x00)): byte = base.get_byte(0xab_c1_23, idx) assert byte == b assert base.path_join(filename, 'a', 'b') == str(filename / 'a' / 'b') assert base.num(42) == 42 assert base.num('42') == 42 assert isinstance(base.num('42'), int) assert base.num(42.0) == 42.0 assert base.num('42.0') == 42.0 assert isinstance(base.num('42.0'), float) assert base.num('42.') == 42.0 assert isinstance(base.num('42.'), float) assert base.num(42.5) == 42.5 assert base.num('42.5') == 42.5 assert base.num_or_none('') is None assert base.num_or_none(None) is None assert base.num_or_none('1a') is None assert base.num_or_none('42') == 42 assert base.num_or_none('42.0') == 42.0
def read_file(self, filename: PathLikeOrStr): ext = base.get_extension(filename).lower() if ext in ['qlr', 'qml']: self.read_file_qml(filename) else: self.read_file_txt(filename)
def is_supported_format(self, filename: PathLikeOrStr): if base.is_path_like(filename): ext = base.get_extension().lower() return ext in self.get_supported_extenstions() return False