Example #1
0
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
Example #2
0
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]
Example #3
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
Example #4
0
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
Example #5
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)
Example #6
0
 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