# Destination - Назначение объекта данных

class axipy.Destination

  Назначение объекта данных.

  Используется для создания данных или для указания назначения при конвертации.

  Пример открытия и конвертации

      file_in = 'world.tab'
      file_out = 'world.mif'
      source = provider_manager.tab.get_source(file_in).open()
      destination = provider_manager.mif.get_destination(file_out, source.schema)
      destination.export(source.items())

  Примечание

  Не все провайдеры поддерживают создание и конвертацию. См. описание конкретного провайдера данных.

  См.также

  Импорт/Экспорт

  См.также

  `Source`

  Методы:

  `create_open`() | Создает и открывает объект данных.
  `export`(features[, func_callback]) | Создает объект данных и экспортирует в него записи.
  `export_from`(source[, copy_schema]) | Создает объект данных и экспортирует в него записи из источника данных.
  `export_from_table`(table[, copy_schema, ...]) | Создает объект данных и экспортирует в него записи из таблицы.

  create_open() → DataObject

    Создает и открывает объект данных.

  export(features: Iterable[Feature], func_callback: Optional[Callable[[Feature, int], Optional[bool]]] = None)

    Создает объект данных и экспортирует в него записи.

    Параметры:

      - features – Записи.

      - func_callback –

        Функция, которая будет вызываться после экспорта каждой записи. В определении должны быть параметры следующих типов:

        > - feature `Feature` - текущая запись

        > - row `int` - порядковый номер

        Возможно прерывание процесса экспорта, для этого нужно вернуть False в func_callback.

    Пример экспорта данных

        # Определяем схему будущей таблицы
        schema = Schema(Attribute.string('name', 30), coordsystem="prj:1,104")
        # Формируем данные для вставки. В нашем случае одна точка
        features = [Feature(name='hello', geometry=Point(10, 10))]
        # Имя выходного файла
        filepath = './path/to/world_out.tab'
        # Создаем таблицу по определенной ранее информации
        dest = provider_manager.tab.get_destination(filepath, schema)
        # Производим экспорт
        dest.export(features)

  export_from(source: Source, copy_schema: bool = False)

    Создает объект данных и экспортирует в него записи из источника данных.

    Параметры:

      - source – Источник данных.

      - copy_schema – Копировать схему источника без изменений.

  export_from_table(table: Table, copy_schema: bool = False, func_callback: Optional[Callable[[Feature, int], Optional[bool]]] = None)

    Создает объект данных и экспортирует в него записи из таблицы.

    Параметры:

      - table – Таблица.

      - copy_schema – Копировать схему источника без изменений.

      - func_callback –

        Функция, которая будет вызываться после экспорта каждой записи. В определении должны быть параметры следующих типов:

        > - feature `Feature` - текущая запись

        > - row `int` - порядковый номер

        Возможно прерывание процесса экспорта, для этого нужно вернуть False в func_callback.

    Пример экспорта таблицы с прогрессом

        # Определяем функцию прогресса
        def func(feature: Feature, row: int) -> Union[None, bool]:
            # Экспорт первых 10 записей, затем процесс прерывается
            if row == 10:
                return False  # Прерывание процесса
            print(f'>> feature.id={feature.id} row={row}')

        # Открываем исходную таблицу
        table_src = provider_manager.openfile(input_filepath)
        # Формируем целевую и производим экспорт
        destination = provider_manager.tab.get_destination(output_filepath, Schema())
        destination.export_from_table(table_src, copy_schema=True, func_callback=func)

    Пример экспорта таблицы в формат CSV

        # Открываем исходную таблицу
        table_src = provider_manager.openfile(input_filepath)
        # Формируем целевую и производим экспорт
        destination = provider_manager.csv.get_destination(output_filepath, Schema())
        destination.export_from_table(table_src, copy_schema=True)