Здравствуйте.
Есть множество полигонов разных цветов, необходимо перенести в атрибутику информацию о раскраске в виде значений RGB? При помощи MapInfo 10 либо ArcInfo 9.
p.s. Задача полигоны tab экспортировать в shp, т.к раскраска в shp не передается нужно информацию о раскраске сохранить в атрибутике в виде значений RGB.
Информация о раскраске в атрибутику в виде значений RGB
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 22 фев 2012, 11:04
- Репутация: 0
- Пётр Дубоделов
- Завсегдатай
- Сообщения: 271
- Зарегистрирован: 21 апр 2009, 13:58
- Репутация: 12
- Откуда: Бурашево
- Контактная информация:
Re: Информация о раскраске в атрибутику в виде значений RGB
Из справочника по командам mapbasic11:
выдаёт значение типа штриховки для полигонов вида Brush (12, 16770192, 16777215). Если заливка сплошная - искомое значение 16770192 - является целочисленным цветом mapinfo, который программа получает так:
PS:
чтобы выделить только второй аргумент из Brush(a,b,c) использовал такое выражение форматирования:
при синтаксисеФункция ObjectInfo( )
Назначение
Возвращает стиль линии, штриха и другие величины, описывающие графический объект, а
также его тип. Эту функцию можно вызывать в окне MapBasic в среде MapInfo Professional.
Синтаксис
ObjectInfo( object, attribute )
object – это выражение для объекта.
attribute – целое, задающее тип возвращаемой информации.
Код: Выделить всё
ObjectInfo( obj, 3)
остаётся придумать калькулятор для обратного преобразования в RGB. на glab2007 такой имеется отдельной программкой, которая предполагает считать через GUI по одному числу за раз. Тут скорее нужна составная функция, чтоб не выходя из Mapinfo пересчитывать через "обновление колонки".( red * 65536) + ( green * 256) + blue
PS:
чтобы выделить только второй аргумент из Brush(a,b,c) использовал такое выражение форматирования:
Код: Выделить всё
Mid$(Str$(ObjectInfo(obj, 3)), (Instr(9, Str$(ObjectInfo(obj, 3)), " ")+1), ((Instr(12, Str$(ObjectInfo(obj, 3)), ","))-(Instr(9, Str$(ObjectInfo(obj, 3)), " "))-1))
"Если карта не соответствует местности, доверяй местности."
-
- Участник
- Сообщения: 62
- Зарегистрирован: 14 фев 2012, 16:07
- Репутация: 13
Re: Информация о раскраске в атрибутику в виде значений RGB
Думаю можно все же немного проще достать цвет, StyleAttr в помощь нам
Тогда все действие в общем виде сведется к:
Ну тут уж либо в MB оформить, либо самой MI можно создать 4 колонки и поочередно заполнить по сему алгоритму. PROFIT ! 
Тогда все действие в общем виде сведется к:
Код: Выделить всё
Dim r,g,b,color As Integer
Color = StyleAttr(ObjectInfo(table.obj, 3),2)
r = color \ 65536
g = (color - (r * 65536)) \ 256
b = (color - (r * 65536) - (g * 256))

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