ГИС TopoL-L лес лесоустройство

2.6.6 Операции с базами данных блоков

Большинство из описанных здесь операций применимо ко всем типам векторных объектов, поэтому их описание мы свели в один общий раздел. В конце разделе описаны операции, специфичные для отдельных типов объектов, а предназначены они для копирования данных между БД при объектах разных типов и с учетом их взаимного пространственного расположения (см. 2.6.6.10 - 2.6.6.14 ).

2.6.6.1 Показать БД

Операция Показать БД для всех типов данных , и по результату полностью соответствует нажатию кнопки БД атри­бутов на форме редактирования объектов соответствующих типов. То есть, это более прямой путь к редактору записей БД при полигональных, линейных и точечных объектах блока. При вызове команды появляется возможность выбрать интересующий объект, и, если ему соответствует запись БД, сразу вызывается редактор записи (см. 2.6.2.1 ).

2.6.6.2 Просмотреть БД

Операция Просмотреть БДЕ для всех типов данных вызывает форму просмотра и редактирования БД блока, показанную здесь.

Форма позволяет просматривать в виде таблицы содержание БД блока для заданной группы объектов (здесь - P7550). Путь к файлу БД, число записей и число выбранных записей можно видеть в левой верхней части формы. Выбранные записи подсвечены желтым, удаленные записи - светло серым. Выбирать записи в таблице можно мышкой, щелкая по номеру, можно также выбирать по условиям (в том числе и достаточно сложным), либо по ранее выбранным объектам карты (см. ниже).

Следующие две большие кнопки наверху позволяют выполнить некоторые вычис­ления над данными. После их нажатия программа предлагает выбрать или построить выражение на языке ToPas (см. 2.10 ), вычисленные значения которого будут результатом анализа данных БД. Выражение может обработать все либо только выбранные записи.
Кнопка со"списком" позволит получить результаты вычислений в отдель­ной таблице, где их затем можно отсортировать, просмотреть в виде списка и записать в буфер обмена. Кнопка со знаком"сумма" вычислит по ним статистику (см. рисунок слева): сумму значений, среднее, максимальное и минимальное значения, диапазон значений, дисперсию и среднеквадратичное отклонение.
Правее находятся кнопки позволяющие управлять сортировкой. Сортировка настраивается пользователем и может выполняться по многим столбцам. Переключатель Selected rec. only позволяет ограничить показ только выбранными записями. В Fixed columns можно задать число"непрокручиваемых" слайдером колонок слева в списке. Ёто удобно, если Вы, например, хотите, чтобы номера квартала и выдела всегда оставались видимыми.
Внизу размещается целый ряд управляющих кнопок. Кпопка Structure показывает структуру и типы данных таблицы БД блока. Кнопка Display позволяет задать видимые столбцы и формат данных в них. Кнопка Print позволяет напечатать таблицу.
Следующие несколько кнопок позволяют выполнять операции по отбору данных. Кнопка Query позволяет задать простое условие отбора записей в таблице. Кнопка Expression позволяет использовать для отбора выражения языка ToPas произвольной сложности (см. 2.10 ). Кнопка Release освобождает все выбранные записи. Кнопка Sel. VO отображает выборку и этой таблице в выборку объектов карты, соответствующих выбранным записям БД. Кнопка Sel. by VO наоборот, отображает выборку на карте в эту таблицу.
Двойным щелчком по заголовку столбца активизируется операция заполнения значений этого столбца для всех или только для выбранных записей ("галочка" слева внизу в списке выражений). В качестве заполняющего может быть использовано заданное в выражении ToPas фиксированное значение, либо переменное значение, вычисленное на основе других значений текущей записи БД блока и геометрических параметров, то есть значений, относящихся к этому же векторному объекту.
Кнопка Exit закрывает эту форму.
Примечание. В форме просмотра БД блока некоторые строки могут быть показаны бледно (белым на сером фоне). Ёти строки - записи БД блока для удаленных объектов карты. После переупаковки блока (см. 2.6.1.8 ) они исчезнут.

2.6.6.3 Заместить вычисленным


Эта операция, по сути, аналогична операции заполне­ния значений поля БД, описанной толь­ко что в предыду­щем разделе. Это как бы другой способ активизации действий по вычис­ле­нию и заполне­нию поля внутрен­ней БД блока с той разницей, что в показанной форме Вы можете выбрать группу объектов, заполняемое поле и выбрать или сформировать выражение ToPas (см. 2.10 ), возвращающее фиксированное значение, либо значение, вычисленное из значений других полей той же записи БД блока, и геометрических параметров векторного объекта, которому принадлежит эта запись.

2.6.6.4 Присоединить БД

Эта операция позволяет перестроить структуру и наполнение БД блока, объединив в ней часть данных существующей БД блока с данными произвольной внешней БД формата DBF. В результате этой операции выполняется фактический перенос данных из двух исходных DBF-файлов в БД блока нового формата или в произвольный файл формата DBF. Связываются строки двух исходных DBF-файлов по одному или нескольким ключевым полям, ожидаемый тип связывания - 1 : 1.
Форма для присоединения внешней БД к БД блока показана на рисунке. Работа с ней требует пояснений.

Слева всегда показана таблица БД блока для объектов выбранной группы, правая, присоединяемая БД, выбирается кнопкой Вторичная. Результат - по умолчанию БД блока, но может быть и произвольно выбранная БД.
Чтобы задать ключевые поля для присоединения таблицы, надо по очереди выбрать поля в левой и правой таблицах и нажать на клавиатуре клавишу с латинской буквой K . Ключевые поля появляются в списках под таблицами, их может быть несколько. Имена полей могут отличаться.
Для переноса исходных полей левой или правой БД в результирующую БД нужно выполнить двойной щелчок мышкой на поле в верхних таблицах. Удаление полей из результирующей таблицы также выполняется двойным щелчком мышкой по полю. В результирующей таблице отмечено (Px слева и Sx справа), из какой таблицы будут копироваться данные тех или иных полей. Обратите внимание, что ключевые поля присоединения могут и не попасть в результирующую таблицу.
Кнопка Дубли, Дубли в результате и Несвязанные слева и справа позволяют задать имена текстовых файлов протоколов связывания. Так как ожидаемый тип связывания - строго 1 : 1, все отклонения от него будут зафиксированы в результирующих протоколах.
Кнопка OK закрывает эту форму и выполняет построение результирующей базы данных.

2.6.6.5 Обновить БД

Эта операция автоматически заполняет/обновляет все системные поля БД блока (т.е. поля из стандартного набора). Такие операции предусмотрены для полигонов, линий и точек. Они позволяют получить в полях БД значения площади полигона, длину линии, координаты точки или метки полигона, коды группы, коды символа и цвета объекта.
При многих операциях редактирования векторных данных значения этих полей обновляются автоматически, но иногда рассогласования возможны. Эта операция позволяет их устранить. Значения заполняются данными из внутренних структур блока.
Если в блоке БД определена для объектов нескольких групп, пользователю сначала предлагается выбрать группу в выпадающем списке.

2.6.6.6 Создать БД для полигонов / линий / точек

Эта операция предназначена для создания в блоке БД для объектов выбранной группы. При ее вызове в первой форме задается группа объектов, для которой будет создана БД, кроме того в качестве шаблона при создании БД можно выбрать текстовый файл шаблона БД *.crt либо существующую базу данных *.dbf . Нажав Изменить, можно отредактировать формат БД относительно шаблона. Если использовать шаблон не планируется, надо просто нажать Изменить.

Далее появляется форма для настройки формата БД, показанная здесь. Она позволяет добавлять поля в БД, изменять их формат и удалять их. В выпадающем списке Имя поля можно также выбрать одно из служебных имен полей (на рисунке поле LENGTH - длина). Значения этих полей будут автоматически обновляться ГИС при изменении векторных объектов (см. 2.6.6.5 ), их ручное редактирование в TopoL невозможно.

2.6.6.7 Изменить структуру


Эта операция отличается о пре­ды­дущей (см. выше 2.6.6.6 ) тем, что предназначена только для изме­не­ния формата существующей БД блока и исполь­зует другую диа­логовую форму. Здесь показана БД полигонов блока повыдельной кар­ты.

2.6.6.8 Модель БД

Эта операция в отличие от описанной в разделе 2.6.6.4 , не приводит к какому либо фактическому перемещению данных между таблицами, но позволяет построить сложную многоуровневую модель связей баз данных. При ее вызове сначала появляется форма, показывающая существующую модель связей для объектов выбранной группы. Кнопка Обновить позволяет перестроить индексы и, частично, обновить пути к таблицам (см. пояснения ниже). Кнопка Изменить вызывает форму настройки модели, показанную здесь.

Слева показано дерево связанных баз данных. Каждой связи соответствует страничка с закладкой внизу, на которой показано имя связанной в модели таблицы или имя связи (при включенном переключателе Имена связей). Каждая связь имеет собственный номер и может иметь уникальное имя, они показаны в верхней части странички. Номера присваиваются связям по порядку их создания автоматически, изменить их нельзя. Номера вполне годятся для быстрой пробной связи баз данных при подготовке к печати какой-либо карты. Имена задает пользователь и они более надежны, если связь должна быть постоянной и существенной частью ГИС-проекта.
В таблице слева показана Первичная БД блока, Вторичная БД справа выбирается при нажатии на кнопку с "папочкой". Ключи для связывания баз данных задается двойным щелчком по именам полей в таблицах, после чего можно подстроить типы данных и их длины. Для связи они должны быть одинаковыми, хотя в самих таблицах могут отличаться. Индекс для связи создается автоматически.
Кнопка Добавить связь создаст новую страничку связи, где можно будет подключить к БД блока следующую внешнюю таблицу. Назначение кнопки Удалить связь очевидно. Кнопка с"папочкой" правее Вторичной модели позволит добавить еще один уровень иерархии связывания таблиц, то есть создать связь вторичной БД с БД третьего уровня. Добавление такой связи сразу отразится в дереве.
Нажатие Да подтверждает создание модели связывания баз данных. В результате настройки модели в каталоге блока создается файл, совпадающий по имени с БД объектов заданного типа соответствующей группы (здесь - полигонов группы 7550 - выделов), но имеющий расширение MDL (модель). Этот файл имеет текстовый формат, пример такого файла для связи повыдельного слоя полигонов в блоке с таксационной БД показан здесь:
P7550.MDL
INFO=M1
SEC_DBF=02\D\Phl1.DBF
SEC_INDEX=C:\RLH.wt\46\24
PRIM_KEY=nnn:n:9:0
SEC_KEY=nnn:n:9:0
[1]
Для более сложных моделей связей файл будет содержать больше строк. В файле модели видно, что SEC_INDEX и SEC_DBF образуют вместе полный путь к БД Phl1.DBF . Так будет, если стартовый каталог проекта находится между корневым и каталогами блоков. Так рекомендует TopoL Software. В этом случае после перемещения данных на другой диск достаточно будет нажать кнопку Обновить, описанную в начале раздела.
В противном случае в файл записываются полные пути, и после перемещения данных на другой диск потребуется либо исправить пути в файле (ссылку на индекс и сам индексный файл можно просто стереть), либо исправлять связи в форме их настройки.
Связи повыдельной базы данных блока и таксационной БД, показанные здесь в качестве примера, программа TopoL_L восстанавливает автоматически бри открытии совмещенной БД.

2.6.6.9 Удалить БД полностью

Эта операция позволяет полностью удалить БД для объектов: полигонов, линий или точек выбранной группы. Если в блоке БД определена для объектов нескольких групп, пользователю сначала предлагается выбрать группу в выпадающем списке. Если БД имеется только у одной группы, программа только запросит подтверждения удаления. Если для объектов данного типа БД не определена вообще, команда не сделает ничего.

2.6.6.10 Копировать БД полигонов


Эта операция вызывается через меню полигонов при кнопке и позволяет выпол­нить перенос данных БД полигонов между поли­гонами разных бло­ков, но занимающими одно и то же геогра­фическое пространство, то есть пересекающими­ся, на­ходящимися один над другим и т.п. При вызове операции появляется показанная на рисунке форма.
Целевой блок - активный блок TopoL. Для него можно выбрать группу объектов, для которой будет выполняться перенос данных, а также включением Только выбранное ограничить набор участвующих в пересылке данных полигонов.
Исходный блок выбирается. В качестве исходного блока может использоваться любой пространственно пересекающийся с целевым блок, содержащий полигоны с базой данных при них. Для исходного блока также выбирается группа и предусмотрен переключатель Только выбранное, позволяющий ограничить набор участвующих в пересылке данных полигонов.
При нажатии OK выполняется операция пересылки данных. Данные будут пересылаться только для совпадающих по именам полей БД и при условии, что полигоны пространственно накладываются друг на друга. Для случая лишь частичного наложения, и в ситуации, когда одному полигону в целевом блоке соответствуют несколько полигонов в исходном с разными значениями пересылаемого поля БД, правильный результат пересылки гарантировать трудно.
Практический совет. Эта операция успешно может использоваться при получении производных карт более высокого уровня генерализации, например, при создании поквартальных карт из повыдельных, как и показано на рисунке. Для реализации такой генерализации надо в копии исходной карты (см. 2.6.1.2 ) удалить границы выделов (см. 2.6.2.6), создать для них БД требуемого формата (см. 2.6.6.6 ) и выполнить пересылку данных. После этого надо проверить полигоны, где идентификаторы оказались пустыми (нулевыми) и принять по ним соответствующее решение.

2.6.6.11 Копировать БД от точек

Эта операция также вызывается через меню полигонов при кнопке и выпол­няет перенос данных БД от точек к поли­гонам того же самого или другого блока. Перенос будут выполняться только для совпадающих по именам полей БД и от точек, находящихся пространственно внутри полигона. При вызове операции появляется показанная выше форма, то есть, как и при переносе данных между полигонами. Все настраивается аналогично.
При нажатии OK выполняется операция пересылки данных. В ситуации, когда одному полигону в целевом блоке соответствуют несколько точек в исходном с разными значениями пересылаемого поля БД, результат пересылки гарантировать трудно.

2.6.6.12 Копировать БД линий

Эта операция вызывается через меню линий при кнопке и выпол­няет перенос данных БД между линиями разных бло­ков, но занимающими одно и то же геогра­фическое положение, т.е. на­ходящимися друг над другом. Перенос будут выполняться только для совпадающих по именам полей БД. При вызове операции появляется показанная выше форма, то есть, как и при переносе данных между полигонами. Все настраивается аналогично.
При нажатии OK выполняется операция пересылки данных. В ситуации, когда линии накладываются лишь частично, результат пересылки гарантировать трудно.

2.6.6.13 Копировать БД точек

Эта операция вызывается через меню точек при кнопке и выпол­няет перенос данных БД между точками разных бло­ков, но занимающими одно и то же геогра­фическое положение, т.е. совпадающих по координатам. Перенос будут выполняться только для совпадающих по именам полей БД. При вызове операции появляется показанная выше форма, то есть, как и при переносе данных между полигонами. Все настраивается аналогично. При нажатии OK выполняется операция пересылки данных.

2.6.6.14 Копировать БД от полигонов

Эта операция также вызывается через меню точек при кнопке и выпол­няет перенос данных БД от поли­гонов к точкам того же самого или другого блока. Перенос будут выполняться только для совпадающих по именам полей БД и на точки, находящихся пространственно внутри полигона. При вызове операции появляется показанная выше форма, то есть, как и при переносе данных между полигонами. Все настраивается аналогично. При нажатии OK выполняется операция пересылки данных.