Основы соединения таблиц
Соединение данных обычно используется для присоединения полей одной таблицы к полям другой на основании значений общего атрибутивного поля. Вы можете выбрать соединение, основанное или на атрибутах, или на предопределенном классе отношений базы геоданных, или на местоположении (называемом также пространственным соединением). Если вы соединяете данные базы геоданных, для которых уже определен класс отношений, вы увидите, что в список будет включено только соединение по классу отношений.
Несколько таблиц или слоев могут быть соединены в одну таблицу или слой, а соединение по классу отношений может быть совмещено с соединением по атрибуту. При удалении присоединенной таблицы, все данные из таблиц, присоединенных после, также удаляются, тогда как данные из ранее присоединенных таблиц остаются. Символы и надписи, основанные на присоединенном столбце, при удалении соединения возвращаются к параметрам, установленным по умолчанию.
Как правило, добавленные столбцы имеют названия типа "ИмяТаблицы.ИмяПоля". Такое условное обозначение позволяет избежать дублирования названий полей, если целевая таблица и соединенная таблица имеют поля с одинаковыми названиями. Если вы не хотите, чтобы отображались подобные полные имена, щелкните в окне таблицы на кнопке Опции и щелкните Показывать псевдонимы полейчтобы включить или выключить эту опцию. Если эта опция включена, окошко для отметок будет отображаться рядом с ней, в меню Опции и перед названиями полей не будет названия таблицы.
Приведем пример соединенной таблицы, где перед названиями полей указано название таблицы:
А вот соединенная таблица, где у полей только их псевдонимы:
Более подробно о соединении и связывании таблиц
Суммирование данных перед соединением
В зависимости от организации ваших данных, возможно, вам придется начать с суммирования данных в таблице, и лишь затем присоединять их к слою. Когда вы суммируете таблицу, ArcMap создает новую таблицу, содержащую статистическую информацию, основанную на исходной таблице. Вы можете вычислять разные статистические параметры, такие как общее число, среднее арифметическое, сумма, минимум и максимум.
Например, предположим, что вы хотите построить карты погоды по штатам, а не по округам, но информация о погоде предоставляется по округам. Вы можете суммировать данные округов, чтобы получить данные по штатам - например, найти среднее значение осадков по округам внутри штата. После этого вы соедините созданную результирующую таблицу с таблицей слоя штатов, чтобы построить карту осадков по штатам.
Редактирование и соединение таблиц
При редактировании нельзя напрямую изменять содержимое присоединенных столбцов. Чтобы редактировать присоединенные данные, вы должны сначала добавить соединенные таблицы или слои в ArcMap. Затем вы можете отдельно редактировать эти данные. Эти изменения появятся и в присоединенных столбцах.
Проверка соединения
Можно выполнить анализ соединения до того, как оно будет создано, используя кнопку Проверить соединение в диалоговом окне Соединение данных. Проверка соединения позволяет оценить любые возможные проблемы, которые могут встретиться при создании соединения. Проверка соединения анализирует два участвующих в нем набора данных, чтобы определить наличие общих проблем с данными. Далее представлен список того, что проверяется в данных:
- Проверка имен полей, начинающихся с некорректного символа.
- Проверка имен полей, которые содержат некорректные символы.
- Проверка имен полей, которые совпадают с зарезервированными словами.
- Проверка MS Access таблиц, не относящихся к таблицам БГД.
Каждая из этих четырех проблем может привести к тому, что в присоединенных полях будут пустые значения, либо к непредсказуемым результатам выборок и подсчёта записей. Проверка соединения исключает символы знаков номера (#), доллара ($) и дефиса (-) для проверки неверных символов, затем анализирует данные покрытия и исключает точки (.) при проверке неверных символов в данных, относящихся к ArcSDE. Если имя какого-нибудь поля начинается с одного из этих символов, вы получите предупреждение.
Проверка соединения проверяет следующие символы:
Недопустимые начальные символы: `~@#$%^&*()-+=|\\,<>?/{}.!'[]:;_0123456789
Символы, которых не должны использоваться: `~@#$%^&*()-+=|\\,<>?/{}.!'[]:;
Проверка соединения также информирует о том, сколько записей будет сопоставлено при создании соединения. Можно вычислить процент записей, которые будут сопоставлены, и определить, нет ли в данных других ошибок, если количество сопоставленных записей отличается от ожидаемого. Это может произойти, если при соединении используются текстовые поля и в той записи, которая должна бы сопоставиться, есть грамматические ошибки, либо к неудачному сопоставлению приводят различия в регистре букв. Если при проверке соединения оказывается, что сопоставленных записей больше, чем записей в источнике данных, появится предупреждение о том, что отношение между этими данными 1:M или M:M и вместо соединения следует использовать связь, либо воспользоваться классом отношений.
Советы по работе с присоединенными таблицами
Данные из присоединенных полей могут быть использованы для присвоения символов и надписывания объектов, построения запросов и многих других операций. Из-за дополнительной работы по осуществлению соединения доступ к присоединенным данным осуществляется медленнее, чем к данным из целевой таблицы.
Для улучшения быстродействия при работе с присоединенными данными можно использовать следующие подсказки:
- Вы можете применять соединение либо с помощью диалогового окна Соединение данных, которое открывается по щелчку правой кнопки мыши на слое в ArcMap, либо с помощью ряда инструментов геообработки. Используйте инструменты геообработки, если вы работаете с очень большими наборами данных и хотите улучшить скорость обработки. Эти инструменты также можно включать в модели и скрипты геообработки, если надо автоматизировать повторяющиеся сложные задачи. Все эти инструменты выполняют обработку соединений немного не так, как диалоговое окно Соединение данных, поэтому их использование может привести к неожиданному поведению этого диалогового окна. Это инструменты геообработки Пространственное соединение (Spatial Join), Добавить соединение (Add Join) и Удалить соединение (Remove Join).
-
Создайте атрибутивные индексы для присоединенных полей. Если вы соединяете только шейп-файлы, файлы dBASE, покрытия или файлы INFO, то индексирование не улучшит быстродействие при отрисовке и работе с окном Таблица (Table). Однако быстродействие улучшится во время редактирования. Во всех других случаях атрибутивные индексы улучшают общее быстродействие.
- Когда вы присоединяете данные из той же базы геоданных, включите опцию Сохранить только сопоставленные записи (Keep only matching records). В некоторых случаях применение этой опции дает разные результаты, но позволяет базе данных обработать соединение. Вы сможете убедиться, что это быстрее для операций, требующих доступ к данным в присоединенных столбцах (отображение, надписывание и т.д.).
При выборе опции по умолчанию Сохранить все записи обработка всегда осуществляется на клиентском компьютере. Быстродействие, как правило, бывает хорошим для операций, не требующих доступа к присоединенным данным (отрисовка с помощью символов по умолчанию). Однако процесс может существенно замедлиться, если требуется доступ к присоединенным данным.
- Соединение между разными базами данных, в котором целевая и присоединяемая таблицы находятся в разных источниках данных, ухудшает быстродействие. Особенно это касается случаев, когда присоединяемая таблица находится в базе геоданных или в соединении OLE DB. Быстродействие существенно улучшается, если присоединяемая таблица находится в файловом источнике данных (например, шейп-файлы, файлы dBASE и покрытия), а целевая таблица содержит поле ObjectID (как большинство источников данных).
- Соединение нескольких таблиц или слоев в отдельный слой может быть ценным для быстродействия. Если все данные находятся на одном и том же сервере ArcSDE и при соединении выбрана опция Сохранить только сопоставленные записи, то это не окажет особого воздействия на быстродействие.
Причины, по которым таблицы могут не соединиться
После выполнения соединения значения в полях присоединенной таблицы могут оказаться пустыми или Null. Этому может быть несколько причин:
- Значения указанных полей для соединения не совпали.
Соединения чувствительны к регистру, следите за этим, если соединяете текстовые поля. Например, значение NEW YORK не соединится с New York. О том, как перевести текстовые значения в нужный регистр, см. раздел Вычисления в полях.
- Название таблицы, класса пространственных объектов или имя поля содержит пробелы либо спецсимволы.
К спецсимволам относятся дефисы (как в x-coord и y-coord); круглые скобки; квадратные скобки и символы типа $, % и #. В общем, избегайте всего, что не является буквенно-цифровым и что каким-либо образом выделено и не начинайте названия полей с цифр и знака подчёркивания. На всякий случай отредактируйте названия полей в текстовых файлах с разделителями, чтобы удалить неподдерживаемые символы до того, как начнёте работать с этими файлами в ArcGIS. Названия классов пространственных объектов, таблиц и полей должны быть не длиннее 64 символов. (На самом деле, вы сможете ввести не более 52 символов в названии класса пространственных объектов персональной базы геоданных, так как система допишет ещё символы до 64х.) Названия шейп-файлов и полей .dbf могут быть не длиннее 10 символов. Для таблиц INFO используйте не более 16 букв или цифр. Более подробно о названиях полей см. в разделе Добавление и удаление полей.
- Имена полей в таблице - зарезервированные слова Microsoft Access.
Примеры таких слов: date, day, month, table, text, user, when, where, year и zone. Полный список таких слов см. в Microsoft support article (KB 286335).
- Таблица хранится в базе данных Microsoft Access, не являющейся персональной базой геоданных.
К таблицам Microsoft Access надо получать доступ в ArcGIS через подключение OLE DB, а не добавлять базу данных непосредственно в ArcMap. Более подробно о том, как добавить подключение OLE DB, см. в Работа с файлами Microsoft Access в ArcGIS.