Подключение внешней таблицы

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
urb@n
Интересующийся
Сообщения: 20
Зарегистрирован: 24 сен 2008, 16:06
Репутация: 0

Подключение внешней таблицы

Сообщение urb@n » 24 сен 2008, 16:14

Подскажите плз как выйти из витуации:

есть слой полигонов (100 записей в таблице, т.е. полигонов) + есть внешняя таблица с атрибутами (2700 записей). в обеих таблицах есть текстовое поле для связывания их между собой. в итоге должна получится таблица, где этим 100 полигонам будут соответствовать эти все 2700 записей.
у меня получается что при выполнении join выбираются 100 записей из таблицы атрибутов и все, остальные кудато-деваются, причем в настройках связывания все нормально

спасибо за ответы

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Подключение внешней таблицы

Сообщение Максим Дубинин » 25 сен 2008, 02:32

все правильно происходит

Как может в одной таблице 1 геометрии соответствовать несколько записей? это отношение один-ко-многим, операция join это отношение один-к-одному
пристегивайтесь, турбулентность прямо по курсу

AndreyL
Завсегдатай
Сообщения: 483
Зарегистрирован: 17 авг 2006, 14:04
Репутация: 0
Откуда: Новосибирск

Re: Подключение внешней таблицы

Сообщение AndreyL » 25 сен 2008, 06:41

sim писал(а):все правильно происходит

Как может в одной таблице 1 геометрии соответствовать несколько записей? это отношение один-ко-многим, операция join это отношение один-к-одному
В целом да, но возможно отношение много-к-одному (именно так: слева атрибутивная таблица, справа связанная), ведь внешний ключ атрибутивной таблицы не обязан быть первичным.
А вообще-то только что тут обсудили
http://www.dataplus.ru/forum/forum_posts.asp?TID=6669

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Подключение внешней таблицы

Сообщение Максим Дубинин » 25 сен 2008, 07:23

да, но это уже будет link, а не join, верно? какое-то время решал задачу как таблице с 100 записями (10 не уникальных ID по которым осуществляется связывание + куча других разнообразных атрибутов) сопоставить 10 полигонов (10 уникальных ID), ничего проще чем цикл из 10 итераций join, пересохранить, удалить только что присоединенные, опять соединить с 90 оставшимися и т.д. придумать не смог.

А по ссылке, в качестве рецепта, насколько я понял речь идет о превращении неуникального ключа в уникальный, так ведь?
пристегивайтесь, турбулентность прямо по курсу

AndreyL
Завсегдатай
Сообщения: 483
Зарегистрирован: 17 авг 2006, 14:04
Репутация: 0
Откуда: Новосибирск

Re: Подключение внешней таблицы

Сообщение AndreyL » 25 сен 2008, 07:34

sim писал(а):А по ссылке, в качестве рецепта, насколько я понял речь идет о превращении неуникального ключа в уникальный, так ведь?
Именно так, поскольку, по смыслу задачи, именно это и нужно было. Только-что возникла иная мысль - а если этот запрос кидать на присоединенную таблицу в качестве определяющего? Не на слой, а на саму таблицу.
sim писал(а):какое-то время решал задачу как таблице с 100 записями (10 не уникальных ID по которым осуществляется связывание + куча других разнообразных атрибутов) сопоставить 10 полигонов (10 уникальных ID), ничего проще чем цикл из 10 итераций join, пересохранить, удалить только что присоединенные, опять соединить с 90 оставшимися и т.д. придумать не смог.
Не совсем понял Вашу задачу. Таблица со 100 записями не атрибутивная (не является таблицей слоя)? Тогда зачем к ней цеплять полигоны? Или нужно зацепить только атрибуты полигонов? Тогда проще в Аксесс.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Подключение внешней таблицы

Сообщение Максим Дубинин » 25 сен 2008, 07:50

да не, задача такая же как у автора темы, много атрибутики и мало полигонов, результат - дублирующиеся полигоны с разной атрибутикой, я просто хотел показать таким образом, что разовым join это не решается, как в процес и link'ом

кстати тоже пришло в голову, что должно изящно решаться в PostGIS/PostreSQL
пристегивайтесь, турбулентность прямо по курсу

AndreyL
Завсегдатай
Сообщения: 483
Зарегистрирован: 17 авг 2006, 14:04
Репутация: 0
Откуда: Новосибирск

Re: Подключение внешней таблицы

Сообщение AndreyL » 25 сен 2008, 08:42

А у меня в Аксессе получилось.
Для начала копируем исходный слой – в базе появилось две таблицы. Если в качестве ключевого поля используется поле OBJECTID, то его нужно продублировать (новые OBJECTID будут другие) Делаем запрос, объединяя таблицу атрибутов исходного слоя с присоединенной таблицей по ключевому полю, запрос организуем как запрос на создание таблицы и сохраняем под именем сделанной копии. В только что созданной таблице удаляем поле OBJECTID, сохраняем, вставляем поле OBJECTID как счетчик, сохраняем.
Делаем запрос, объединяя новую таблицу с исходной таблицей атрибутов по нашему ключевому полю, а исходную таблицу атрибутов с таблицей _SHAPE_Index по OBJECTID. Берем OBJECTID из новой таблицы, все остальное из _SHAPE_Index, сохраняем в таблицу под именем _SHAPE_Index.
Добавляем новый слой в АркМАП

AndreyL
Завсегдатай
Сообщения: 483
Зарегистрирован: 17 авг 2006, 14:04
Репутация: 0
Откуда: Новосибирск

Re: Подключение внешней таблицы

Сообщение AndreyL » 25 сен 2008, 08:45

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

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя