Добрый день.
Подскажите, пожалуйста, как найти "сложные" объекты в таблице. Такие, которые имеют одну запись (строку) в таблице, но состоят из нескольких линий, полигонов и т.п.? Причем, каждый найденный объект нужно разъединить и пронумеровать все элементы находящиеся в нем с 1-го до n (кол-во элементов).
Как найти "сложные" объекты в таблице?
-
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
- Игорь Белов
- Гуру
- Репутация: 1493
- Откуда: Казань
Re: Как найти "сложные" объекты в таблице?
В QGIS задача решается в два действия:
- [Multipart to singleparts] (Разбить составную геометрию)
- [Add autoincremental field] (Добавить поле с автоприращением);
задействовать [Group values by] (Поле группирования)
- Освоить MapBasic
- Написать утилиту
The purpose of computing is insight, not numbers
-
- Участник
- Сообщения: 60
- Зарегистрирован: 09 окт 2009, 16:49
- Репутация: 4
Re: Как найти "сложные" объекты в таблице?
Objectinfo(obj, 1) вернёт тип обьекта
Какая цифра что означает - смотрите в документации mapbasic
Ещё можно вручную: присвоить какому нибудь полю идентификатор (например rowid), разъединить все объекты слоя
Объекты с одинаковыми идентификаторами будут бывшими членами коллекций. Ну их и нумеровать
Какая цифра что означает - смотрите в документации mapbasic
Ещё можно вручную: присвоить какому нибудь полю идентификатор (например rowid), разъединить все объекты слоя
Объекты с одинаковыми идентификаторами будут бывшими членами коллекций. Ну их и нумеровать
-
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Как найти "сложные" объекты в таблице?
По этой логике должно подойти ObjectInfo(obj, 21) или Val(Str$(ObjectInfo(obj,21))) > 1 , но нет, не работает ...
Попробовал вариант с OBJ_INFO_NPOLYGONS+1 тоже не выходит ...
Sub Main
Dim count, n As Integer
Dim CurrentTable as string
For n = 1 to NumTables( )
count = count + 1
Select * from CurrentTable where ObjectInfo(obj, 21)
'Select * from CurrentTable where Val(Str$(ObjectInfo(obj,21))) > 1
'Select * from CurrentTable where ObjectInfo(CurrentTable.obj, OBJ_INFO_NPOLYGONS+1)
Next
End Sub
Что-то тут не так чувствую, а что в толк не возьму
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей