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

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

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

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

Итак, результаты сегодняшнего трудового дня.
1. Спасибо всем, кого тронула сия проблема.
2. Отключил ВСЕ дополнительные модули. Не помогает :(
3. Почистил полигоны, были кое-где "хвосты" и отдельные "острова". Убрал, думаю, всё. Но проблема не в этом.
4. Выяснилось вот что. Отказался от штриховки. Теперь пробую работать только со сплошной заливкой. Количество полигонов всё тоже - 1024. Произошло следующее. (Замечено на последних по времени создания полигонах, завтра попробую на "ранних").
Делаю заливку соседних полигонов по RGB, цвета заливки изменяются незначительно, в одной гамме, разной насыщенности. На мониторе вполне различимо, на лазерном принтере, имхо, разницы заметно не будет. (Кстати, еще одно направление работ - дрова принтеров)...
Дело дошло до того, что такая гамма тоже НЕ СОХРАНЯЕТСЯ. То есть, дает возможность изменить цвет заливки ну прям ювелирно, но ПОСЛЕ сохранения таблицы цвета опять меняются. Причём, это изменение ВСЕГДА приводит к одной цветовой гамме (в сеансе работы). Если "плавную" гамму не сохранять, и цвет установить по таблице цветов (не по значениям RGB), без такой "плавности" оттенков, то заданные мною цвета сохраняются. Такое впечатление, что MI сама за меня решает "проблему цветов карты" (т.е. устанавливает цвета соседних полигонов контрастными).
"... до чего дошёл прогресс..." Завтра поэкспериментируем на аналогичной машине, на версии MI 10.0, может что и проясним.
Кстати, создал новую таблицу той же структуры. Ограничился созданием 25 четырехугольников. Залил как хотел ("плавная гамма"). Таблица сохраняется нормально, глюк "цветов карты" не наблюдается.
Вот так...
Раньше работал на MI 6.0, 8,0, 9.5. То ли полигонов было меньше, то ли такого глюка в тех версиях не было.
Ещё одно замечание. Количество всех узлов полигонов, имхо, приближается уже не к первой сотне тысяч. Может тоже имеет какое-то значение.
Что ещё. Используется "нестандартный" набор линий - файл mapinfo.pen. (Создан разработчиками нашей ГИС, если можно так сказать). Набор штриховок - стандартный.
Ну вроде как всё порассказал.
Кстати, thegeo, подскажи как построил такую красоту, ведь не ручками рисовал-заливал, а "играл" программно. Если не трудно, научи неучей! :)
И, кстати, заметил на вашем скриншоте: пары полигонов 305-306, 403,405 и другие имеют одинаковое оформление. Может тоже "глюк"? :)
P.S. Очень жаль, что отправить сам файл не могу - админы и безопасность блюдут, разве ж им объяснить, что в учебных целях... Будем и эту проблему решать, но не сегодня...
Всем спасибо!
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

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

Сообщение Slinger » 02 май 2012, 22:01

Если есть возможность - опробуйте проделанные действия (создание полигонов и заливка/штриховка) на версиях младше 8.0 (желательно 7.8, если есть). Сдаётся мне, это приколы нового ядра MI, потому как, когда в своё время ковырял .map файл на побайтовый разбор, никакого ограничения ни на что подобное не нашёл. На днях гляну ещё раз.

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

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

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

Slinger, спасибо.
Увы, нельзя войти в одну воду дважды. Нет уж тех версий. На работе стояли - снесли после получения лицензионной. Дома тоже - уже увы, стоит наиболее актуальная. Где-то в загашниках еще можно найти 8.0 ru , но куда ставить-то? На работе не поставишь, админы тут же просканируют, злые они нас! :) Дома ломать - себе дороже, времени убьется уйма, и так не хватает. Да и старые еще на 64-bit'е не пойдут... :( Да и как тот файл с работы домой переправить - тоже пока незазрешимая проблема. Думал, может кто из уважаемых знатоков встречался с таким "чудом", видать, я первый...
Попробую эту проблему решить на 10-ке.
Спасибо, результатами изысканий прошу поделиться! Может и есть там (в русской версии) такие ограничения, а мы-то и не знаем чего там злые буржуины для нас понапридумывали... :)
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

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

Сообщение Slinger » 02 май 2012, 22:23

У меня максимум в таблице было около 600 региональных объектов, различных заливок при этом было около 400 (то есть грубо говоря по 2 региона было с одинаковой заливкой/штриховской) и никаких проблем не испытывал ни при создании, ни при печати (MI был 8.5). В обчем если будет возможность - вытащите Вашу таблицу с работы в публичный обзор, если не слишком секретно =) Если не получится - сам погоняю на днях, но пока причину вижу только в новом мудрёном ядре MI 10.0 и его старших братьев.

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

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

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

И спасибо Boris'у.
Цитата: Из него можно сделать 2 вывода:
всего в файле может быть не более 256 (1 байт) разных штриховок.
Вот-вот. Мысль! Ведь любая заливка со штриховкой в MI есть суть "ЗАЛИВКА", "кисть", "штриховка", "BRUSH" одним словом. Буду ковырять в этом направлении. Может у меня это число и превышено. Скажем 259 разных стилей "штриховок"... Вот только пока не знаю как посчитать те типы оформления. Может кто подскажет наиболее короткий путь для непрограммистов, для чайников!
Спасибо!
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

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

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

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

Slinger писал(а):У меня максимум в таблице было около 600 региональных объектов, различных заливок при этом было около 400
...
Странно, какое-то противоречие с ограничением в 256 (1 b) штриховок в одной таблице... :( (см. пост Boris'а) Если ничего другого не удумаем, буду решать проблему с "секретностью"! Да и где ж она эта секретность с водосборами-то!!! Как эти гэбисты всех достали!!!
Спасибо, друзья!
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

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

Сообщение Slinger » 02 май 2012, 22:46

всего в файле может быть не более 256 (1 байт) разных штриховок.
Дык, их всего предлагается на выбор 172 штуки, в дефолтном наборе штриховок. Так что здесь это не при чём.

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

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

Сообщение Старый Йети » 02 май 2012, 23:00

Не, я так понял, что всего в любой таблице может быть не более 256 разных стилей оформления полигонов. Полигонов может быть и миллион, а типов их оформления - всего 256. Это мало связано с "дефолтным набором", я так понял.
Цитата:
"Я нашел старое описание формата MAP файла Notes on the MapInfo® Native table format. Новее не видел, но предполагаю, что принципиально ничего не изменилось.
Из него можно сделать 2 вывода:
всего в файле может быть не более 256 (1 байт) разных штриховок. Все остальных типов оформления - по столько же.
блок описания любого типа оформления (ресурса (05)) хранит количество объектов с этим оформлением(?). под это отведено 4 байта, т.е. это счетчик на 2 миллиарда с небольшим. С учетом того, что сам файл не должен быть больше 2 Гб такое число непросто превысить." конец цитаты.
(пост Boris'а от 30.04.2012 23:47)
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

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

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

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

thegeo писал(а):Не мудрствуя, смоделировал ситуацию.
Поясните, что именно вы сделали. Я могу предположить, что вам удалось превысить количество штриховок в 256, как я считал, основываясь на описание формата MAP? Или я вас не правильно понял?

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

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

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

Boris писал(а):
thegeo писал(а):Не мудрствуя, смоделировал ситуацию.
Поясните, что именно вы сделали. Я могу предположить, что вам удалось превысить количество штриховок в 256, как я считал, основываясь на описание формата MAP? Или я вас не правильно понял?
Boris, то был не мой пост. Я тоже, имхо, превысил количество типов оформления. И тоже хочу узнать как это сделал Thegeo и у него всё получилось...
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

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

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

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

я дополню написанное раньше, как я понимаю, блок оформления при гео-объекте ссылается на номер своей штриховки в виде числа в 1 байт. Перечень этих штриховок (символов, шрифтов или линий - любых по 256) храниться в отдельном блоке ресурсов файла MAP. Он (формат) вообще блоковый - все данные лежат в блоках фиксированного размера 0x200 (512) байт . Поэтому речь идет о 256 РАЗЛИЧНЫХ оформлениях, на пример штриховках, т.к. штриховка состоит из номера, цвета фона и цвета штриховки, то комбинаций получается существенно больше 256. Хотя достигнуть такого ограничения мне лично не просто. Ну да я - не японская девушка, кои как известно в отличии от российских мужчин, различают как раз те 24 бита различных цветов, что производят мониторы предыдущего поколения - сейчас в основном 32.

PS
Раз вопрос так всех заинтриговал, то как спадет праздничный "давай скорей, пока все отдыхают", я постараюсь воссоздать описанную ситуацию создав MIF файл на большее число оформлений и програнь его через различные версии мапинфо. Указание на то, что мапифно подбирает цвета, смещая их к общему знаменателю, является очень интересным. Надо проверить.
PPS
Да, конечно узнать оформление конкретного геообъекта, не представляется сложным. Осталось вспомнить какую именно функцию для этого надо использовать, т.к. та, что первой выходит в хелпе по мапбайсику мало подходит. Помниться, что такая возможность реализована в "инструментарии для мапинфо".

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

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

Сообщение thegeo » 02 май 2012, 23:29

Думаю стоит вернуться к начальному описанию проблемы:
- есть много областей (>1000)
- оформление: фоновая заливка + штриховка
- не сохраняется (изменяется) оформление областей при некоторых операциях с таблицей
Вот эта ситуация и моделировалось. И ничего выходящего за рамки штатных требований MI.
Прикладываю программу.
Вложения
RC.rar
(3.43 КБ) 382 скачивания

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

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

Сообщение Slinger » 02 май 2012, 23:37

Осталось вспомнить какую именно функцию для этого надо использовать

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

ObjectInfo (obj,3)
Для региональных объектов вернёт "Brush(....)" аналогичный описанию в MIF-файле.

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

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

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

Slinger писал(а):
Осталось вспомнить какую именно функцию для этого надо использовать

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

ObjectInfo (obj,3)
Для региональных объектов вернёт "Brush(....)" аналогичный описанию в MIF-файле.
Да. Точно. А я StyleAttr( style, attribute ) нашел и все пытался вспомнить, как ее можно использовать.
Я бы только для верности ее в текст превратил - добавил функцию Str$(). Было дело, что оператор сравнения в SQL запросе "ронял" мапинфо на сравнении результатов этой функции с заданным шаблоном.

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

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

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

Уважаемые вы мои, thegeo, Slinger, Boris
Здрасте.
вот получил на работе файл Rg.rar. Ну, естессно, поработал с ним.
Вот мои наблюдения:
1. Штриховки используются только до B9, ну, может до D9. А дальше штриховки НЕ используются.
Этими "простыми" и грубами штриховками не заморачиваюсь. Есть куда более интересные (например, H17, B21, F21 и т.д.) (должно было быть вложение1.jpg)
Это первое.
thegeo писал(а):Не мудрствуя, смоделировал ситуацию. При всех манипуляциях с таблицей никаких изменений не нашел. Может быть, я не понял суть проблемы?
Всего объектов – 2500.
2. Объектов, действительно, 2500. НО! Количество типов заливок, сколько бы вы думали? Правильно - 255!!!
Проверено через Excel.
Как сделал.
В копию таблицы RG, созданную через RegColorRnd добавил колонку: BRUSH_1 (Символьное 255). (должно было быть вложение2.jpg ) Обновил колонку через функцию (спасибо, научили :) ) Str$(ObjectInfo (obj,3)) Получил значения в колонке типа Brush (4, 65535, 10514640. Дальше,экспортировал в txt файл. Открыл в Excel, Отсортировал по новой колонке BRUSH_1. Добавил "колонку смены значений" ( =ЕСЛИ(C4=C3;0;1) ). Ну а дальше - Сумма всех значений в колонке. Итог - 255. (должно было быть вложение3.jpg)
Пока подтверждается, увы :)
И еще УВЫ, вложения добавить не смог. Админы зверствуют :( Придется поверить на слово.
Thegeo, не могли бы прислать исходники вашей прожки. Для обучения меня дремучего основам MB. Буду весьма признателен.
Всем спасибо за ваше внимание.
Бум думать.
_____________________________________________
старый и дремучий, но всё же искренне ваш - Йети

Ответить

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

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

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