Можно ли обновить геометрию...

MapInfo, MapBasic
Ответить
Boris
Гуру
Сообщения: 4086
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 398
Откуда: Париж

Можно ли обновить геометрию...

Сообщение Boris » 14 июн 2018, 21:15

Столкнулся с задачей, когда есть таблица, в которой много разных атрибутов и есть геометрия, к ней присылается/получается таблица с откорректированной геометрией и минимумом данных. Надо заменить геометрию в первой таблице на геометрию из второй.
Ключевое поле в обеих таблицах для связи имеется. Но стандартные функции ведь не дают обновлять колонку "obj" ?
Как в много ходов я знаю:
  • создать запрос на связку двух таблиц по ключевому полю. Таблицу с геометрией указать первой, а выборку указать только колонки из второй таблицы. Тогда в запрос попадет геометрия от 1-ой, а атрибутика от второй;
  • сохранить запрос как постоянную таблицу;
  • запрос закрыть, таблицу открыть
  • выполнить запрос еще раз, переставив местами таблицы в запросе - тогда выделение записей произойдет в обновляемой таблице
  • из запроса удалить все записи
  • ранее созданную таблицу добавить к обновляемой таблице
Но может есть способ по короче? Атрибутивные поля то обновляются за одну команду.

trir
Гуру
Сообщения: 3617
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 605
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Можно ли обновить геометрию...

Сообщение trir » 14 июн 2018, 21:52

1. Создать БД
2. Написать функцию обновления таблицы
3. Выполнить функцию

Boris
Гуру
Сообщения: 4086
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 398
Откуда: Париж

Re: Можно ли обновить геометрию...

Сообщение Boris » 14 июн 2018, 22:17

trir писал(а):
14 июн 2018, 21:52
1. Создать БД
Какую посоветуете, что быстро, не накладно и без проблем соединилась с мапинфо?

trir
Гуру
Сообщения: 3617
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 605
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Можно ли обновить геометрию...

Сообщение trir » 14 июн 2018, 22:40

MS SQL Server, только лучше посмотреть совместимость версий

Аватара пользователя
MI user
Интересующийся
Сообщения: 20
Зарегистрирован: 14 янв 2013, 17:08
Репутация: 8
Контактная информация:

Re: Можно ли обновить геометрию...

Сообщение MI user » 15 июн 2018, 06:21

Boris писал(а):
14 июн 2018, 21:15
Ключевое поле в обеих таблицах для связи имеется. Но стандартные функции ведь не дают обновлять колонку "obj" ?
Есть оператор UPDATE.
Я бы сделал как-то так (очень примерно):

Код: Выделить всё

DIM a as alias
DIM o_good as object
DIM id_good as integer

' Цикл по правильной таблице
  Fetch First From MyTableWithGoodObject
  Do While Not EOT(MyTableWithGoodObject)
	' Получим объект из правильной таблицы
	a = "MyTableWithGoodObject".obj
	o_good = a

	' Получим ID из правильной таблицы
	a = "MyTableWithGoodObject".ID
	id_good = a

	' Заменим геометрию для текущего ID
	UPDATE MyTableWithBadObject
		SET Obj = o_good
		WHERE ID = id_good
	
    Fetch Next From MyTableWithGoodObject
  Loop

Ответить

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

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

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