Как удалить/сохранить часть таблицы удовлетворяющую условию
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Как удалить/сохранить часть таблицы удовлетворяющую условию
Добрый день, уважаемые!
Занимаюсь рутинной и подозреваю, дурной работой - из доступных OSM shp для QGIS в полу-ручном, полу- автоматическом режиме (короче как получиться) пытаюсь утащить в MapInfo интересные мне данный в нужной мне раскраске.
Не первый год занимаюсь программированием всяко разно, в принципе задачу как-то осилил, но не покидает устойчивое ощущение, какой-то некрасивой кривизны получившегося решения...
В связи с эти вопрос
Научите пожалуйста правильной технологи:
1) как на Mapbasic с одной большой карты ПРАВИЛЬНО удалить все объекты удовлетворяющие заданному (сложному SQL запросу), чтобы в итоге не осталось ничего лишнего и не было бы никакого мусора.
2) как на Mapbasic с одной большой карты сохранить все объекты удовлетворяющие заданному (сложному SQL запросу) в отдельный набор файлов
Спасибо всем откликнувшимся.
Занимаюсь рутинной и подозреваю, дурной работой - из доступных OSM shp для QGIS в полу-ручном, полу- автоматическом режиме (короче как получиться) пытаюсь утащить в MapInfo интересные мне данный в нужной мне раскраске.
Не первый год занимаюсь программированием всяко разно, в принципе задачу как-то осилил, но не покидает устойчивое ощущение, какой-то некрасивой кривизны получившегося решения...
В связи с эти вопрос
Научите пожалуйста правильной технологи:
1) как на Mapbasic с одной большой карты ПРАВИЛЬНО удалить все объекты удовлетворяющие заданному (сложному SQL запросу), чтобы в итоге не осталось ничего лишнего и не было бы никакого мусора.
2) как на Mapbasic с одной большой карты сохранить все объекты удовлетворяющие заданному (сложному SQL запросу) в отдельный набор файлов
Спасибо всем откликнувшимся.
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
зачем это делать в mapInfo?
Загрузить dump osm в PostGIS и делать запросы в нём, а результат запроса можно сохранить хоть в новую БД
ну и есть overpass api, хотя там есть лимиты
https://habrahabr.ru/post/320562/
Загрузить dump osm в PostGIS и делать запросы в нём, а результат запроса можно сохранить хоть в новую БД
ну и есть overpass api, хотя там есть лимиты
https://habrahabr.ru/post/320562/
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
Спасибо, принято. Обязательно изучу такой подход.
Но, вопрос, в общем-то был о другом. Как в мапинфо работать с таблицами правильно, идеологически правильно.
Я пока до конца не понимаю.
Но, вопрос, в общем-то был о другом. Как в мапинфо работать с таблицами правильно, идеологически правильно.
Я пока до конца не понимаю.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
Я готов вам объяснить "как", но Я пока не понимаю, что именно у вас "не так". Я обычно делают SQL запрос в какой то заранее заданный запрос, например, Q001. И потом чищу выборку SQL оператором "DELETE * FROM Q001"tems-ya писал(а):... Как в мапинфо работать с таблицами правильно, идеологически правильно.
Я пока до конца не понимаю.
Если я правильно понимаю, то вам необходимо инвертировать выборку? И удалить объекты не удовлетворяющие некоторому условию. Так?
И не последний вопрос - сколько таблиц участвуют в выборке и все ли от начала до конца надо выполнить в языке-программе Mapbasic или с использованием команд Mapbasic ВНУТРИ Mapinfo.
Проще всего удалить инверсию, или как то еще ее использовать, - это использовать команду меню "Запрос" - "Обратить выборку".
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
а зачем вообще удалять, почему не записать результат запроса в новую таблицу и дальше использовать её?
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
потому что иногда надо почистить таблицу от некоторого д..ма. И часто это проще делать итерационными приближениями к идеалу. что, конечно, не отменяет необходимости работать с копией таблицы, или хотя бы сделать архив до начала операций.trir писал(а):а зачем вообще удалять, почему не записать результат запроса в новую таблицу и дальше использовать её?
- Игорь Лебедь
- Завсегдатай
- Сообщения: 452
- Зарегистрирован: 24 апр 2010, 19:47
- Репутация: 101
- Откуда: Город в клёнах и акациях
- Контактная информация:
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
И ещё после удаления объектов из таблицы в мапинфо её надо упаковать:
Таблица - изменить - упаковать
Таблица - изменить - упаковать
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
Спасибо всем откликнувшимся.
Немного поясню все вопросы касаются исключительно MapBasic, без привлечения инструментария МИ совсем. Для простоты работаю с одной таблицей.
Мне бы хотелось понять
- как из заданной таблице корректно удалить некоторый select - поскольку после некоторых моих манипуляций с исходной таблицей делаю контрольный
select * from table_name в МИ и я вижу пустые строки в окне, т.е. что-то я не доделываю или делаю неправильно. В то же самое время, если я сохраняю нужный селект в новую таблицу, то наблюдаю только нужные данные - ничего лишнего. Вот этот момент я пока до конца не понимаю. Мне не хотелось бы в процессе работы сохранять копии, переименовывать и т.д. таблицы, хочется удалить все лишнее и сохранить изменение. Но пока так не выходит.
Не хочет компилировать код ниже - ругается на delete. Что я недопонимаю? Подозреваю что что-то очень примитивно простое...
Немного поясню все вопросы касаются исключительно MapBasic, без привлечения инструментария МИ совсем. Для простоты работаю с одной таблицей.
Мне бы хотелось понять
- как из заданной таблице корректно удалить некоторый select - поскольку после некоторых моих манипуляций с исходной таблицей делаю контрольный
select * from table_name в МИ и я вижу пустые строки в окне, т.е. что-то я не доделываю или делаю неправильно. В то же самое время, если я сохраняю нужный селект в новую таблицу, то наблюдаю только нужные данные - ничего лишнего. Вот этот момент я пока до конца не понимаю. Мне не хотелось бы в процессе работы сохранять копии, переименовывать и т.д. таблицы, хочется удалить все лишнее и сохранить изменение. Но пока так не выходит.
как-то так и делаю. Потом ее надо переименовать, старую удалить - в общем кривизна и веселуха еще та...а зачем вообще удалять, почему не записать результат запроса в новую таблицу и дальше использовать её?
Не хочет компилировать код ниже - ругается на delete. Что я недопонимаю? Подозреваю что что-то очень примитивно простое...
Код: Выделить всё
Sub Convert_boundary_polygon2(cur_path as string)
Dim pPen as Pen
Dim cur_table, cur_table_name as string
cur_table = "boundary-polygon"
Close All Interactive
Open TABLE cur_path & cur_table Interactive
'Определяем имя открытой таблицы
cur_table_name = TableInfo(0, TAB_INFO_NAME)
'--------------------------------------------------------
' преобразуем в полилинии
'--------------------------------------------------------
'Update cur_table_name Set Obj = ConvertToPLine(Obj)
'Commit Table cur_table_name
'--------------------------------------------------------
' Оставляем только нужное
'--------------------------------------------------------
select * from cur_table_name where
ADMIN_LVL <> "6" and ADMIN_LVL <> "4"
into t1
delete * from t1
Commit Table cur_table_name Interactive
End Sub
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
Должно быть
Код: Выделить всё
delete from t1
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
Как бы сработало, но в итоге вижу что на картинке (как бы пустые строки). Вопрос что это и как это исправить или победить.
- Вложения
-
- MapInfo.jpg (150.69 КБ) 8895 просмотров
-
- Гуру
- Сообщения: 4057
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
при удалении физического удаления строк из файла не происходит, там просто ставится маркер. Для того, чтобы физически убрать строки, таблицу нужно упаковать. Например, вызвать из Васика пункт упаковки в меню ...tems-ya писал(а):Вопрос что это и как это исправить или победить.
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
Delete не удаляет строки, а лишь помечает их как удаленные. Для окончания цикла удаления необходимо выполнить процедуру упаковки, например, так
'упаковывает таблицу (с возвратом таблицы в карту idWin)
'упаковывает таблицу (с возвратом таблицы в карту idWin)
Код: Выделить всё
sub PackTable(ByVal nameTab As String,byval idWin as integer)
Commit Table nameTab
onerror goto ex
Pack Table nameTab Graphic Data Interactive
Add Map Window idWin Auto Layer nameTab
exit sub
ex:
Map From nameTab
End Sub
- Игорь Лебедь
- Завсегдатай
- Сообщения: 452
- Зарегистрирован: 24 апр 2010, 19:47
- Репутация: 101
- Откуда: Город в клёнах и акациях
- Контактная информация:
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
Спасибо всем, кто помог разобраться! Как всегда самое интересное скрывается в мелких деталях, до которых, порой, так трудно бывает добраться.
Еще раз, всем спасибо.
Еще раз, всем спасибо.
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 17 апр 2009, 21:15
- Репутация: 7
Re: Как удалить/сохранить часть таблицы удовлетворяющую усло
trir, извините, конечно, но некоторые Ваши ответы чудовищны!! dump osm, overpass api, PostGIS, habrahabr.ru это для того чтобы удалить выборку в MapInfo??? Не морочьте людям голову, если не можете дать простой и практичный совет.trir писал(а):зачем это делать в mapInfo?
Загрузить dump osm в PostGIS и делать запросы в нём, а результат запроса можно сохранить хоть в новую БД
ну и есть overpass api, хотя там есть лимиты
https://habrahabr.ru/post/320562/
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 38 гостей