# TabFile - Файл TAB

class axipy.TabFile

  Класс поддержки файла TAB формата MapInfo.

  Методы:

  `generate_tab`(data_object, out_file[, ...]) | Генерирует файл TAB для переданного открытого объекта, если такую возможность поддерживает провайдер данных.
  `suggest_tab_name`(data_object) | Сервисная функция.

  generate_tab(data_object: DataObject, out_file: str, override: bool = True, linked_file: bool = True) → bool

    Генерирует файл TAB для переданного открытого объекта, если такую возможность поддерживает провайдер данных.

    Параметры:

      - data_object – открытый объект данных, для которого необходимо создать файл TAB.

      - out_file – Имя файла c расширением tab. Как вариант, можно использовать результат `suggest_tab_name()`.

      - override – Перезаписывать файл. Если установлено False и файл существует, будет выброшено исключение FileExistsError

      - linked_file – Если файл генерируется для СУБД, и при установке значения True будет создан связанный файл

    Результат:

      Возвращает True, если успешно.

    Создание TAB файла для открытой таблицы или растра:

        filepath = 'world.tif'
        out_file_name = 'world.tab'
        tab = TabFile()
        tab.generate_tab(table, out_file_name)

    Создание TAB файла для открытого источника тайлового сервиса:

        prj_mercator = (
            'Earth Projection 10, 104, "m", 0 '
            'Bounds (-20037508.34, -20037508.34) (20037508.34, 20037508.34)'
        )
        osm_raster = axipy.provider_manager.tms.open(
            'http://maps.axioma-gis.ru/osm/{LEVEL}/{ROW}/{COL}.png',
            prj=prj_mercator
        )
        tab = axipy.TabFile()
        out_file_name = tab.suggest_tab_name(osm_raster)
        tab.generate_tab(osm_raster, out_file_name)

    Загрузка данных из БД PostgreSQL в виде связанной таблицы:

        definition = provider_manager.postgre.get_source(
            host='localhost',
            db_name='test',
            user='test',
            password='pass',
            dataobject='world'
        )
        table = provider_manager.open(definition)
        out_file_name = tab.suggest_tab_name(table)
        tab = TabFile()
        tab.generate_tab(table, out_file_name, linked_file = True)

  suggest_tab_name(data_object: DataObject) → str

    Сервисная функция.

    Предлагает наименование TAB файла для объекта данных. Результат можно использовать в методе `generate_tab()` в качестве имени выходного файла.