# Геометрия из таблицы

## Назначение

Модуль позволяет сохранять координаты узлов объектов в табличном виде, а также, наоборот, считать подготовленные таким образом данные и создать геометрические объекты Аксиомы.

Файл, который используется для импорта и экспорта информации об узлах (внешний файл), может быть стандартной таблицей Аксиомы, но вы можете использовать и другие форматы: XLSX и CSV. Инструмент позволяет сохранять структуру графических объектов и воссоздавать их из файлов, содержащих записи об узловых точках.

Модуль поддерживает два инструмента в ленте Таблица:

Создать из узлов - импорт координат из внешнего файла и создание на их основе геометрических объектов.

Сохранить как узлы - экспорт геометрий из таблицы Аксиомы во внешний файл. Инструмент может применяться к временным таблицам (выборкам и запросам).

## Формат файла импорта-экспорта

Для хранения информации об узлах объектов Аксиомы, используются следующие форматы:

- таблица Аксиомы (TAB-файл)
- таблица Excel
- текстовый файл с разделителями (CSV)

Процедуры импорта-экспорта поддерживают два вида представления данных об узлах:

1. Координаты всех точек геометрии.
2. Первая точка задается координатами. Для каждой следующей точки вносятся направление (азимут) и расстояние от предыдущей точки в метрах.

Значения координат точек могут быть представлены в одной из следующих форм:

1. В виде десятичного числа.
2. В виде градусов/минут/секунд. Значение представляется в формате dd°mm'ss,zz".
3. Также в виде градусов/минут/секунд, только в качестве разделителя выступает дефис: dd-mm-ss,zz.

Направление может быть задано либо в градусах, либо в румбах.

Таблица в файле экспорта-импорта координат узлов, должна содержать следующие поля:

Наименование | Тип | Краткое описание | Имя, создаваемое при экспорте
--- | --- | --- | ---
Номер геометрии | Целый | Идентификатор, по которому определяется принадлежность элементов одному геометрическом объекту | id_feature
Номер части геометрии | Целый | Для случая, если геометрия состоит из нескольких элементов | id_geometry
Номер точки | Целый | Порядковый номер точки в геометрии. Нужен для корректной сортировки точек | d_point
Первое значение | Вещественный или в виде градусов-минут-секунд | В зависимости от типа представления данных содержит либо X-координату, либо расстояние до следующей точки в метрах | v1
Второе значение | Вещественный или в виде градусов-минут-секунд | В зависимости от типа представления данных содержит либо Y-координату, либо направление до следующей точки в градусах | v2

## Примеры файлов с координатами узлов

Пример хранения узлов полилинии и полигона в виде координат точек:

id_feature | id_geometry | id_point | v1 | v2
--- | --- | --- | --- | ---
0 | 0 | 0 | -8194000 | 6039000
0 | 0 | 1 | -6645000 | 8439000
0 | 0 | 2 | -4400000 | 8013000
0 | 0 | 3 | -2581000 | 6039000
0 | 0 | 4 | -4052000 | 3561000
0 | 0 | 5 | -6606000 | 3677000
1 | 0 | 0 | 2297000 | 2091000
1 | 0 | 1 | 5045000 | 813000
1 | 0 | 2 | 6477000 | -2090000
1 | 0 | 3 | 2374000 | -1974000
1 | 0 | 4 | 1019000 | 39000
1 | 0 | 5 | 2297000 | 2091000

Пример формата хранения в виде координат точек в форме градусов:

id_feature | id_geometry | id_point | v1 | v2
--- | --- | --- | --- | ---
0 | 0 | 0 | -56°10'48" | 40°11'24"
0 | 0 | 1 | -27°52'48" | -2°49'48"
1 | 0 | 0 | -6°39'0" | 40°28'12"

Пример хранения узлов полилинии в форме расстояния и направления:

id_feature | id_geometry | id_point | v1 | v2
--- | --- | --- | --- | ---
0 | 0 | 0 | -8194000 | 6039000
0 | 0 | 1 | 2856466.52352167 | 57.1611277872651
0 | 0 | 2 | 2285060.39307498 | 349.255581274055
0 | 0 | 3 | 2684294.50694219 | 312.659924251394
0 | 0 | 4 | 2881722.57512759 | 239.305619962062
0 | 0 | 5 | 2556632.94197661 | 177.399473026951

## Импорт данных

1. Откройте таблицу, из которой будут загружаться данные. Если данные хранятся в файлах XLSX или CSV, то создайте для них TAB-файл средствами Аксиомы.

2. Нажмите на кнопку Создать из узлов в ленте Таблица.

Откроется диалоговое окно с режимами импорта узлов.

3. Выберите таблицу из списка Таблица.

(Таблица, из которой будут загружаться данные, должна быть предварительно открыта.)

Поля в этой таблице должны содержать информацию об узловых точках и (см. выше раздел "Формат файла импорта-экспорта").

4. В списке Тип данных выберите форму представления данных:

- Перечень узлов в виде координат.
- Первый узел задается как координата, все последующие как координата-направление-расстояние.

5. Выберите в списках Номер... поля из таблицы импорта, описывающие последовательность узловых точек, чтобы при импорте воспроизводились исходный состав и форма объектов.

Значения в этих списках могут быть пустыми (в списке для этого нужно выбрать пустое поле).

Если не задано значение Номер геометрии, то Аксиома использует вместо него номер записи в таблице.

Если не задано значение Номер части геометрии, то при импорте теряется информация о том, какие объекты составлены из нескольких элементов.

Если не задано значение Номер точки, то при импорте Аксиома не может корректно создать форму объекта.

Таким образом, пустые значения в списках Номер... допустимы в простых случаях, например, если вы импортируете информацию о точечных объектах.

6. Выберите колонки с X- и Y-координатами в одноименных списках. Информация в этих колонках в исходном файле должна соответствовать правилам, описанным выше в разделе "Формат файла импорта-экспорта".

7. Если исходные данные были заданы в определенной системе координат, то выберите эту систему в одноименном списке.

8. В процессе создания объектов при импорте образуются как замкнутые, так и незамкнутые полилинии. При этом может случиться так, что координаты первого и последнего узла некой незамкнутой полилинии совпадут и внешне она не будет отличаться от замкнутой, хотя в последней будет на один узел меньше. Сочетания флажков Создавать полигоны для замкнутых линий и Замыкать линии при дублировании первой точки позволяют выбрать один из вариантов создаваемых в этом случае объектов:

- Никакие дополнительные действия не производятся. Вы получаете незамкнутую полилинию, в которой координаты двух узлов совпадают, но эти узлы Аксиомой полагаются отдельными друг от друга. Для этого оба флажка должны быть сброшены.
- Создаются замкнутые полилинии из незамкнутых. Для этого установите только флажок Замыкать линии при дублировании первой точки.
- Создаются объекты типа "полигон" из всех замкнутых полилиний. Для этого оба флажка должны быть установлены. Этот случай также позволяет импортировать полигоны с дырками.
- Если при импорте некоторые полилинии были созданы как замкнутые, то установка только флажка Создавать полигоны для замкнутых линий преобразует их в полигоны, в то время, как все полилинии, созданные как незамкнутые, таковыми и останутся.

9. Выберите, в какое окно поместить результат импорта:

- Нажмите кнопку Создать. Аксиома создает новую таблицу в которую поместит результаты импорта и тут же откроет ее в отдельном окне карты.
- Нажмите кнопку Вставить. Аксиома вносит результат импорта в текущее окно карты. При этом необходимо, чтобы эта карта была открыта, а слой, на который будет производиться вставка, должен быть изменяемым.

Кнопка Закрыть отменяет импорт и закрывает диалог.

## Экспорт данных

1. Нажмите кнопку Сохранить как узлы в ленте Таблица.

2. В диалоге Сохранение данных выберите таблицу из списка открытых в Аксиоме таблиц и запросов.
Если в окне карты есть выборка, то можно ее экспортировать, выбрав в списке таблиц Выборка.

3. Выберите форму представления данных (координаты или координаты-азимут-расстояние) в списке Тип данных.

4. Выберите форму представления координат (десятичным числом или градусами) в списке Формат координат.

5. Нажмите OK.

6. Откроется диалог сохранения файла. Задайте в нем файла и его тип (TAB, XLSX или CSV).

7. Нажмите OK.

В результате создается файл с структурой, описанной выше в раздел "Формат файла импорта-экспорта".