Соединение таблиц

0 голосов
спросил 31 Окт, 08 от Vladimir2 (1,180 баллов) в категории Программные продукты Esri
Есть полигональный шейп-файл, атрибуты хранят уникальные номера участков. Есть отдельная таблица .dbf, которая содержит описание этих объектов. Но каждому объекту шейп-файла соответствует несколько строк в таблице .dbf.
 
Как привязать или присоединить данные таблицы .dbf к объектам шейп-файла, чтобы через объекты карты иметь доступ к информации из всех строк таблицы .dbf, соответсвующих определенному объекту?
 
Есть предположение, что это можно организовать на уровне базы геоданных.

10 Ответы

0 голосов
ответил 01 Ноя, 08 от AndreyL (5,420 баллов)
Никак - неоднократно обсуждалось - каждой строке слоя может соответствовать только одна строка связанной таблицы, иначе нарушается смысл атрибутивной таблицы (в обратную сторону запросто). На уровне базы данных можно создать запрос, удовлетворяющий условию уникальности внешнего ключа. Уточните задачу.
0 голосов
ответил 01 Ноя, 08 от Grigoriy (127,020 баллов)
Что значит никак?
В ArcMap к слою можно присоеденить любую таблицу, которую понимает ArcMap по общему полю. В том числе и dbf.
Соеденяются они как один ко многим.
http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Relating_tables

Если данные в базе геоданных и у Вас есть ArcEditor, то можно создать класс отношений.
http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Benefits_of_relationship_classes

При использовании инструмента "Идентифицировать" в окно идентификатора возвращаются все связанные записи по запрашиваемому объекту.
0 голосов
ответил 01 Ноя, 08 от AndreyL (5,420 баллов)
Так то да, но все, что Вы сможете сделать, это посмотреть значения полей в идентификаторе. Использовать эти значения для обозначения символов нельзя, сделать выборку (выделить по атрибуту) нельзя, задать определяющий запрос нельзя, даже если выделить объекты, то соответствующие им записи не выделяются в связанной таблице (наоборот тоже не получается). Тогда вопрос: что конкретно означает фраза «чтобы через объекты карты иметь доступ к информации из всех строк таблицы .dbf, соответствующих определенному объекту» - это я и просил уточнить.
0 голосов
ответил 01 Ноя, 08 от Vladimir2 (1,180 баллов)
«чтобы через объекты карты иметь доступ к информации из всех строк таблицы .dbf, соответствующих определённому объекту» означает как просмотр всей информации, соответствующей объекту, так и создание выборок, построение отчётов, диаграмм и т.д.
0 голосов
ответил 01 Ноя, 08 от AndreyL (5,420 баллов)
Да, но «создание выборок, построение отчётов, диаграмм и т.д.» не задача ГИС, это скорее для реляционных СУБД. В АркГИС, правда, тоже некоторые средства имеются. Более конкретно задачу обрисуйте, тогда, может, и ответы появятся.
0 голосов
ответил 01 Ноя, 08 от Grigoriy (127,020 баллов)
Про идентификацию я уже упоминал.

Просмотреть и выбрать записи в соединенной таблице Вы сможете штатными инструментами:
1. выделяете объекты в слое или таблице
2. Открываете таблицу
3. Нажимате кнопку "Опции"(Option)->"Связанные таблицы"(Related tables) и выбираете нужное соеденение.
В связанной таблице выделяются все связанные записи.
Соответсвенно для выбранных записей можете строить отчеты и диаграммы, как и при работе с обычной таблицей.

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

0 голосов
ответил 01 Ноя, 08 от Vladimir2 (1,180 баллов)
Уточняю ситуацию.

Есть карта лесных участков в полигональном шейп-файле. Каждый участок имеет уникальный порядковый номер. Необходимо к объектам присоединить описательную информацию о лесах из отдельной таблицы. Таблица выглядит примерно так:
 
Номер участка       Порода      Доля породы     Возраст      Высота    ...
1                              Сосна         6                          100              25
1                              Ель             4                          120              22
2                              Береза       10                         60               28
...
50                            Ель             4                           160              23
50                            Сосна         3                           160              23
50                            Береза       2                           160              23
50                            Осина         1                           160              23

По этим характеристикам лесных участков будут производиться выборки объектов карты, оформление и др. типичные задачи ГИС.

0 голосов
ответил 01 Ноя, 08 от geologic (39,860 баллов)
У вассс идеологическая невозможность ;) ГИС-объект ОДИН, и к нему можно только одну строчку прикрепить, ну, для однозначности символики. Какой анализ вы планируете? Если сразу весь состав леса анализировать, например, круговую диаграмму, то вам нужно развернуть ваши 4 строки в 4 столбика, например, 4-мя джойнами. Если задачи частичные, например, раскрасить по доле ели, или доле хвойных, то возможны и частичные решения. Например, если захотите сразу две породы как-то изобразить - можете сделать два слоя полигонов, к каждому приджойнить нужные данные и наложить друг на друга с прозрачностью.

В любом случае данные проще обобщить в базе данных заранее неким запросом, подготовить максимально прямо под раскраску, а потом уже в ГИС совать лишь финальную табличку для джойна 1 к 1.     
0 голосов
ответил 01 Ноя, 08 от AndreyL (5,420 баллов)
Если только выделить участки (например те, у которых доля сосны > 10) и построить по ним диаграмму (одну) или отчет (один), то Григорий объяснил, как это делается.
А если нужно оформление (типа для каждого участка круговую диаграмму с долей пород) то Алексей (geologic) прав - лучше сначала что нибудь, типа перекрестного запроса сделать
0 голосов
ответил 03 Ноя, 08 от Vladimir2 (1,180 баллов)
Большое всем спасибо за помощь!

Последовал совету geologiс. Сначала разбил свою табличку по породам, т.е. каждая dbf содержит информацию по всем объектам но только по одной породе. Затем последовательно присоединил все имеющиеся таблицы. Результат вроде устраивает.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...