Проблема с заливкой полигонов в MI

MapInfo, MapBasic
Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 03 май 2012, 09:06

И еще вопрос "вдогонку".
Вот у меня получилась колонка типа Brush (48, 65535, 1283226).
А как провести обратную операцию: изменить штриховку (заливку!) полигона по данным этой колонки. Не используя других языков программирования и даже MB (если возможно). В принципе, такое бы красивое решение меня бы вполне устроило. (уже думаю только о разноцветной сплошной заливке, от использования линейной штриховки, видать, надо отказываться)
Еще раз спасибо.
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 03 май 2012, 09:36

... вдогонку...
А у меня в таблице всего 252 типа оформления... (считал, как расписал выше)
Загадка MI, однако :(
Попробовал на версии 10.0. Эффект тот же самый. Один в один. :(
Попробовал на версии 8.0 ru. (уще откопал в отделе на одной из машинок)
В принципе всё тоже самое. Правда, как-то избирательно меняет. Если на версии 10.5 все последние по времени полигоны на свое усмотрение ставит, то в 8.0 версии. только один из...
И еще. Более ранние по времени создания полигоны оставляет (под условным номером 100 или 200), как заказываю.
Придется группировать полигоны по заливке, а делиться будут только линиями водоразделов.
Если есть мысли на этот счет - пишите. А я начинаю перерабатывать мою существующую таблицу.
Спасибо всем за обсуждение глюка. Увы, мы его не победили :(
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

thegeo
Активный участник
Сообщения: 161
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: Проблема с заливкой полигонов в MI

Сообщение thegeo » 03 май 2012, 13:48

Код для RegColorRnd
Вложения
RegColorRnd.rar
(720 байт) 413 скачиваний

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 03 май 2012, 15:09

thegeo писал(а):Код для RegColorRnd
Спасибо, thegeo. Буду разбираться и вспоминать давно забытое прошлое...
А в MB RND() действительно случайное или всё ж псевдослучайное и, соответственно, циклично повторяется?
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 05 май 2012, 09:20

Здравствуйте, сочувствующие и принявшие реальное участие!
Всех с наступающим Днём Победы!
А теперь по сути. Результат!
Как ни крути, но проблема 256 типов оформления существует!
Действительно: в MI НЕВОЗМОЖНО в одной таблице создать более 256 типов штриховок (заливок) объектов.
Создал новую таблицу и вручную разукрасил полигоны по RGB значениям (создал образец-гамму), что бы потом можно было не подбирать цвета каждый раз, а просто скопировать оформление. Так вот таких заливок может быть не больше 256 в одной таблице. На всю потенциальную гамму, естественно, не хватит, нужно создавать набор "гамма-таблиц".
Учту на будущее.
P.S. Ну это если MI использовать в качестве оформительского инструментария. Может и у кого-то другого такие задачи возникают.
Спасибо всем!
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Проблема с заливкой полигонов в MI

Сообщение Boris » 07 май 2012, 23:01

Ну, все же надо сказать - "256 - это очень немало".
Людей, кто осилит это в одной карте еще поискать надо. С учетом того, что тематическое оформление можно сохранять в WOR и отдельно в виде настроенных шаблонов, такой подход как ручное "раскрашивание" следует отнести к мало используемым. Кроме того в последних версиях мапинфо добавилась возможность построения двойной тематики на одном слое данных - этом случае оформления "верх" и "низ" не затирают друг друга, а комбинируются - получается очень приличное число возможных вариантов.
Да, и как я понимаю ограничение на 256 дожно действовать только на "внутреннюю" заливку - граница, как полилиния, должна давать еще 256 вариантов.

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 08 май 2012, 17:36

Boris писал(а):Ну, все же надо сказать - "256 - это очень немало".
Людей, кто осилит это в одной карте еще поискать надо. С учетом того, что тематическое оформление можно сохранять в WOR и отдельно в виде настроенных шаблонов, такой подход как ручное "раскрашивание" следует отнести к мало используемым. Кроме того в последних версиях мапинфо добавилась возможность построения двойной тематики на одном слое данных - этом случае оформления "верх" и "низ" не затирают друг друга, а комбинируются - получается очень приличное число возможных вариантов.
Да, и как я понимаю ограничение на 256 дожно действовать только на "внутреннюю" заливку - граница, как полилиния, должна давать еще 256 вариантов.
Видимо, я один из тех немногих... :)
Границ в данном случае быть не должно. Они в другом слое (водоразделы). А поскольку MI очень плохо печатает (в bmp- jpg - файл) различные виды штриховок, а сплошная заливка изначально перекрывает нижележащую, вот и приходится навести красоту ручками. Разовая операция. В технологии ГИС (запросы, временные таблицы и т.д.) по-сути не используется. Там предполагаются другие запросы и условия, дополнительную тематику надо ещё и построить. А кому??? Просто "красота" для очень конкретной тематической карты. Настроенные шаблоны - тоже, имхо, здесь не выход. Почемы? 1. Всё количество водосборов не перекроет ни один шаблон. 2. Шаблонами надо ещё уметь пользоваться (см. выше - да, да, в этом ещё тоже проблема... :( ) 3. Таблицу сохранить в общедоступном месте гораздо легче, чем каждый раз при переустановке ОС восстанавливать профиль в MI со всеми настройками. Таблица будет создана 1 раз и навсегда. Шаблоны - вещь очень "виртуальная", сегодня есть, завтра при новых пользователях - уже нет. Тем более, что наши админы сети очень себя не утруждают "какими-то ещё" настройками MI. Вот такие соображения.
Самое простое решение, имхо. Просто столкнулся с данным ограничением. Понял, что его не обойти. В результате - "перерисовал" таблицу.
Спасибо, Boris.
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Проблема с заливкой полигонов в MI

Сообщение Boris » 09 май 2012, 00:47

все таки я бы посмотрел в сторону сшитых таблиц.
если есть под рукой два разных набора по 256 оформленний, то выложите здесь - я посмотрю как они себя ведут, когда объединяются в сшитую таблицу. я раньше был уверен, что сшитые таблицы - это просто текстовый файл со списком таблиц в нее входящих. теперь вижу, что это какое-то более сложное объединение через специальную утилиту. но судя по размеру MAP файла, хранить оформление в этой таблице негде, т.е. ей придется брать его из исходных таблиц.

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 09 май 2012, 22:44

Boris писал(а):все таки я бы посмотрел в сторону сшитых таблиц.
если есть под рукой два разных набора по 256 оформленний,
"Сшитые таблицы" - тоже - "НЕТ". Сиё изначально трудно для наших пользователей уж очень начального уровня
то выложите здесь... изначально "НЕТ"... админы такой возможности не дают, пробывал. Буду изыскивать другие возможности... И как-нибудь изыщу. Может кому и понадобятся мои "водосборы" :)
Спасибо за "научение", Boris
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Проблема с заливкой полигонов в MI

Сообщение Boris » 10 май 2012, 17:07

я не против водосборов, но я говорил про любые таблицы одной структуры, что имеют более 256 различных полигональных оформлений. попробую, что дает RegColorRnd
если ваши пользователи не правят сами таблиц, то о сшитости таблиц они и не узнают. хотя в целом это какой-то очень странный "вывих" в технологиях мапинфо - развития он не получил и стандартно как-то очень заумно создается.

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 11 май 2012, 21:29

Boris писал(а):... сшитости таблиц... хотя в целом это какой-то очень странный "вывих" в технологиях мапинфо - развития он не получил и стандартно как-то очень заумно создается.
Спасибо, Boris, за поддержку. Попробовал сам поработать со "сшитостью"...
1. Таблицы должны быть одной структуры (что, в общем-то, для одних и тех же данных так оно и есть).
2. Сшитые таблицы (пока они сшиты) НЕ РЕДАКТИРУЕТСЯ.
3. Мало того, она не позволяет даже взять информацию (средствами интерфейса MI) со слоя. А вот это уже вообще ни в какие ворота!!! :(
4. Не подходят нам сшитые таблицы, не-под-хо-дят!
Не будем мудрствовать лукаво, просто сделали пару-тройку таблиц-шаблонов с "радужной" заливкой (в т.ч. "водосборы", рельеф - там тоже такие задачи есть, геоморфологию-четвертичку - тоже туда притянем "за уши"), полноценные такие таблицы, со всеми атрибутами, потом, при необходимости, просто будем копировать стиль из этих таблиц. Кое-какое упорядочивание будет - и то ладно! Главное, что на эти "грабли" уже никто не наступит. Очередную инстрУкцию-метОдику распишем, подписи всех пользователей под ней соберём, вот и решим проблему :) :) :)
Таблицу-шаблон, кстати, сделал средствами Worda-Excel'я. Потом просто свяжу атрибуты с цветовой схемой.
А вот что еще интересно. Никогда не обращали внимания, как MI формирует RGB-индекс? А вот опять-таки, не так, как в Windows-Word-Excel. Это я точно выяснил!
В MapInfo: RGB-индекс высчитывается как R*65536+G*256+B
в Microsoftных продуктах так: R+G*256+B*65536,
где R - значение красного, G - зеленого и B - синего соответственно.
И с чем связана такая "уникальность" я пока объяснения не нашёл... Вот вам и ещё "какой-то странный "вывих" в технологиях MapInfo"... Она нас не перестаёт удивлять... :(
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 11 май 2012, 21:58

Ну и еще проблема-вопрос (ко всем гуру) отсюда вытекающая.
Есть ли возможность закрасить полигоны в MI по заданным значениям в колонке таблицы?
Например. В некой колонке ColorPolygon (условно) есть значение: BRUSH(2.1694467) (например).
Вот очень бы хотелось сделать как в Excel: чтобы сами полигоны разукрасились по заданным значениям, ну, допустим, по некой команде (как в Excel - по F9 - пересчёт...) что-то в этом роде.
Структура таблицы будет строго определена, неизменна. Можно даже выполнить отдельную подпрограмму mbx (хотя при наличии исходников применить её к другим таблицам, имхо, не представляется затруднительным). Набор цветовой гаммы тоже строго определен (хотя и здесь может быть ссылка на другую таблицу-шаблон)
ИМХО, так бы было гораздо легче, чем каждый полигон ручками красить по RGB
Есть такое решение, уважаемые гуру?
Интересует сам процесс, думается, при наличии исходников (не очень, правда, замудрённых :) ) смогу и сам "заточить" под себя.
Заранее спасибо за ваше внимание.
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

Re: Проблема с заливкой полигонов в MI

Сообщение Игорь Белов » 11 май 2012, 22:39

Когда-то написал программку изменения стилей площадных объектов по данным из колонок.

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

'==============================================================================
' Program to change styles of Area objects using table data
'==============================================================================
Include "mapbasic.def"

Declare Sub Main

'==============================================================================
' Main procedure
'------------------------------------------------------------------------------
Sub Main
  Dim acol(6), aobj As Alias
  Dim oobj As Object
  Dim fname, tbl As String
  Dim width, pen_pat, color, brush_pat, forecolor, backcolor As Integer
  Dim n As Integer

  fname = ApplicationDirectory$() + "Areas"
  tbl = PathToTableName$(fname)
  acol(1) = tbl + ".Width"
  acol(2) = tbl + ".PenPat"
  acol(3) = tbl + ".Color"
  acol(4) = tbl + ".BrushPat"
  acol(5) = tbl + ".ForeColor"
  acol(6) = tbl + ".BackColor"
  aobj = tbl + ".obj"
  For n = 1 To TableInfo(tbl, TAB_INFO_NROWS)
    Fetch Rec n From tbl
    width = acol(1)
    pen_pat = acol(2)
    color = acol(3)
    brush_pat= acol(4)
    forecolor = acol(5)
    backcolor = acol(6)
    oobj = aobj
    Alter Object oobj
      Info OBJ_INFO_PEN, MakePen(width, pen_pat, color)
    Alter Object oobj
      Info OBJ_INFO_BRUSH, MakeBrush(brush_pat, forecolor, backcolor)
    Update tbl Set obj = oobj Where RowID = n
  Next
  Commit Table tbl
End Sub
'==============================================================================
Таблица должна называться Areas и находиться в той же папке, что и программа.
Имена полей тоже заданы жёстко:
  • Width — толщина контура;
  • PenPat — стиль контура;
  • Color — цвет контура;
  • BrushPat — стиль заливки;
  • ForeColor — цвет заливки;
  • BackColor — цвет фона.
Последний раз редактировалось Игорь Белов 11 май 2012, 22:52, всего редактировалось 3 раза.
The purpose of computing is insight, not numbers

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

Re: Проблема с заливкой полигонов в MI

Сообщение Старый Йети » 11 май 2012, 22:45

ErnieBoyd, спасибо! Не ожидал такого скоро ответа.
Но буду разбираться только завтра на работе. Сейчас чуть-чуть другим голова забита.
Огромное, прям-таки НЕЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Ответить

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

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

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