www.map-info.ru :: Просмотр темы - Присвоение коду в таблице соответствующего описания!
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Пн Сен 28, 2009 8:59 am    Заголовок сообщения: Присвоение коду в таблице соответствующего описания! Добавить ответ со ссылкой на данный текст

Доброго времени суток,

Столкнулся с такой проблемой - необходимо в таблице содержащей идентификатор присоединить дополнительный столбец с расшифровкой этого самого идентификатора. Есть файл EXEL с этим классификатором. Вопрос как ускорить процесс и сделать его наиболее автоматизированным???
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Пн Сен 28, 2009 9:15 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

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



Зарегистрирован: 28.11.2008
Сообщения: 122

СообщениеДобавлено: Пн Сен 28, 2009 11:42 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Открыть екселевскую таблицу в Мапинфо и воспользоваться связным запросом
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Пн Сен 28, 2009 12:43 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Alex_Y писал(а):
Открыть екселевскую таблицу в Мапинфо и воспользоваться связным запросом


Разве удастся сделать это автоматом для всех таблиц проекта????
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Пн Сен 28, 2009 12:55 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Сколько таблиц-то? Если <100 то проще сделать руками
Если больше, то нужно писать на мапбэйсике обработку
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Пн Сен 28, 2009 1:36 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

В принципе можно сделать скрипт для добавления поля, запроса, обновления в виде файла рабочего набора. Это проще чем на мапбэйсике, особенно если нужно выполнить разовую обработку или если названия таблиц не изменяются.
Что-то типа:

!Workspace
!Version 800
!Charset WindowsCyrillic
Open Table "справочник"

Open Table "таблица1" as табл
Добавляем поле описание_табл к табл(не помню как делается)
Select * from табл,справочник where табл.ид=справочник.ид into tmp
Update tmp set описание_табл=описание_справочник
Close Table табл

Последний абзац копируем столько раз, сколько нужно обновить таблиц, и вместо таблица1 прописываем название конкретной таблицы
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Пн Сен 28, 2009 3:28 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Названия у таблиц в разных наборах одинаковое. Получается что надо создать в каждой исходной таблицы с объектами карты новый столбец и записать в каждую его строку описательную инфу (типа "Стадион", "Утолщенная горизонталь", "Контур растительности" и т.д.) в соответствии с кодом объекта. Вижу два пути:

1. Написать утилиту в мапбазике создающей дополнительный столбец и в которой вручную прописать, что если ячейка a1 содержит код x, то в ячейку а2 вписать текст x'. (Долго и муторно ибо значений over 9000).

2. Написать утилиту в мапбазике создающей дополнительный столбец и сравнивающей открытую предварительно в mapInfo таблицу классификатора в EXCEL и автоматом подставляет соответствующие коду значения.

Я прав? Или может не полностью прав?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Пн Сен 28, 2009 4:06 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

вариант 2 будет проще и быстрее

кстати для варианта с рабочим набором:

добавляем поле к таблице:

Alter Table табл
Add поле_описания Char(255)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Вт Сен 29, 2009 7:01 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

spawner писал(а):
вариант 2 будет проще и быстрее

кстати для варианта с рабочим набором:

добавляем поле к таблице:

Alter Table табл
Add поле_описания Char(255)



Большое спасибо, насколько я понял команда Alter предназначена для указания таблицы в которой будет создаваться новое поле? Или же эта команда указывает таблицу для которой будут выполняться все следующие команды?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Вт Сен 29, 2009 11:31 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Попробовал решить проблему средствами SQL:

ADD COLUMN VEGPOLРастительность_полl (Name)
FROM Table_klass2
SET TO B
WHERE Class_id = A

Где VEGPOLРастительность_полl - имя таблицы с объектами, которая будет обновляться. А Name имя колонки с расшифровкой. Table_klass2 таблица содержащая все коды идентификаторов (колонка А) и соответствующие им расшифровки (колонка B).

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

Попробовл по другому:

INSERT INTO VEGPOLРастительность_полl(Name)
SELECT B FROM Table_klass2
WHERE Class_id = A

Послкольку поля name в таблице нет то сразу выскакивает ошибка. Интересно почему...вроде Insert должен сам добавлять строки. А если даже и создать поле и указать его выдается сообщение что команда WHERE не распознана и колонка B из таблицы Table_Klass2 подставляется со всеми своими значениями в конец таблицы.

В чем может быть проблема?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Вт Сен 29, 2009 4:58 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

XELLGIS писал(а):
spawner писал(а):
вариант 2 будет проще и быстрее

кстати для варианта с рабочим набором:

добавляем поле к таблице:

Alter Table табл
Add поле_описания Char(255)



Большое спасибо, насколько я понял команда Alter предназначена для указания таблицы в которой будет создаваться новое поле? Или же эта команда указывает таблицу для которой будут выполняться все следующие команды?


При постинге символы табуляции пропали. Эти 2 строки - одна команда. Можно записать в строку:

Alter Table табл Add поле_описания Char(255)

P.S. МапИнфо глючно работает с временными таблицами. Насколько я помню объединить результаты SQL запроса с другой таблицей уже не получается - нужна сохраненная таблица.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Ср Сен 30, 2009 9:37 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

spawner писал(а):


Alter Table табл Add поле_описания Char(255)

P.S. МапИнфо глючно работает с временными таблицами. Насколько я помню объединить результаты SQL запроса с другой таблицей уже не получается - нужна сохраненная таблица.


Так дело то как раз в том что нужно обновить существующую таблицу с объектами. Покряхтев с SQL написал вот что:

Alter Table VEGPOLРастительность_полl ( add Name Char(150) )
ADD COLUMN VEGPOLРастительность_полl (Name)
FROM Table_klass2
SET TO B
WHERE Class_id = A

Где VEGPOLРастительность_полl - имя таблицы с объектами, которая будет обновляться. А Name имя колонки с расшифровкой. Table_klass2 таблица содержащая все коды идентификаторов (колонка А) и соответствующие им расшифровки (колонка B).


Все отлично работает только пришлось 48 раз скопипастить кусочек кода и внести изменения в названиях таблиц для каждого слоя. Единственная неприятность в том что если поле NAME уже созданно ничего не работает)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru