Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 Заголовок сообщения: |
|
|
Открыть екселевскую таблицу в Мапинфо и воспользоваться связным запросом |
|
Вернуться к началу |
|
|
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 уже созданно ничего не работает) |
|
Вернуться к началу |
|
|
|