На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Oleg Belenkov (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Oleg Belenkov
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 412 След.
Проблемы с памятью при вызове mapGetObjectCount (QtDesigner 15.0.2), Заканчивается оперативная память
 
[QUOTE]Александр Ерохин написал:
Данные на диске занимают байты, эти функции что-то делают с памятью. После закрытия карты, память не освобождается. В прошлых версиях такого не было. Да и какие данные могут превращаться в 30 мб, после простого запроса количества объектов который просто должен вернуть long int?
Там явно неправильная работа с паматью появилась.[/QUOTE]
Данные на диске занимают порядка гигабайта. При отсутствии ограничений на объем карты в памяти она целиком считывается
по мере обращения к каждому листу карты и при наличии достаточного свободного объема.
При закрытии карты данные немедленно освобождаются.
В прошлых версиях были внутренние ограничения на максимальный объем используемой памяти.
Теперь они доступны для управления в MAPAPI.
Размещение карты в памяти ускоряет операции отображения  и поиска данных в многопоточном режиме.
Пользовательский текст подписи знака по семантике, Проблема изменения подписи при помощи семантики
 
Было бы проще, если бы применялась кодировка UTF-16 и функция mapAppendSemanticUn.
Если строка ограничена нулем, то не нужно передавать длину буфера вместо длины значения. Лучше указать значение ноль.
Пользовательские слои (Android)
 
[QUOTE]Александр Ерохин написал:
Здравствуйте. Имеется кроссплатформенное приложение для linux(Ubuntu) и android. По неясным причинам, объекты (из operator.rsc) нанесенные на пользовательские слои в Android версии отображаются в принтерном виде, хотя сама карта отображается в нормальном. На linux весрии такой проблемы нет. В чем может быть дело?[/QUOTE]
Изображения знаков в экранном и принтерном виде одинаковые. В принтерном виде линии и подписи будут изображаться с антиалиасингом и будут красивее.
В экранном виде для скорости такие эффекты не применяются.
Все карты в документе могут отображаться в каком-то одном виде - экранном или принтерном. На любой платформе.
В версиях 12 и ранее при открытии карты в ядре всегда устанавливался экранный вид. В новых версиях - при открытии устанавливается принтерный вид.
Программно можно установить то, что нужно. Применение HPAINT (контекста отображения для многопоточного вызова) никак не влияет на эти правила.
Автоматическое присваивание значения семнантики 11525 (Код КЭУЗ) объектам из классификатора operator.rsc
 
Семантика 11525 - это и есть код КЭУЗ. Он может иметь большую длину в 40 и более символов.
Код объекта в классификаторе не более 11 цифр.
Где-то начало кода КЭУЗ совпадает с кодом объекта, где-то - нет. Это не имеет значения.
Если какая-то информационная система применяет код КЭУЗ - его можно прочитать в объекте из семантики 11525, которая формируется автоматически по совокупности заполненных семантик объекта.
Изменение размера шрифта подписи
 
[QUOTE]Yuri Romanenko написал:
Добрый день,
Использую карту на основе классификатора 100t05gm.rscz. Необходимо в программе изменять размер шрифта подписей горизонталей рельефа. Данный объект имеет ключ "T00921730001".
Можно, пожалуйста, привести пример кода, как это можно сделать?[/QUOTE]
1) Стандартные объекты в стандартных классификаторах топографических имеют размеры из официальных Наставлений и не должны меняться прикладными программами.
Если размер подписи горизонтали задан условно 2 мм в базовом масгтабе карты, то он строго такой и должен быть.
Если карта плохо читается, то возможно неправильно заданы параметры экрана отображения. Для некоторых случаев можно задать процент увеличения изображения впараметрах экрана (обычно порядка 120% - в 1,2 раза).

2) Если подпись задана не из классификатора, а как графический объект, то ее параметры меняются прямо в графических параметрах объекта.
3) Если подпись (или другой знак) из классификатора, а ее нужно изменить, то применяют служебные семантики в диапазоне 31000 - 33000.
Например:

#define SEMIMAGESCALE      31001  // МАСШТАБ ОТОБРАЖЕНИЯ ЗНАКА В ПРОЦЕНТАХ
#define SEMIMAGECOLOR      31002  // ЦВЕТ ОТОБРАЖЕНИЯ ЗНАКА RGB
#define SEMIMAGEHIGHT      31003  // ВЫСОТА ШРИФТА В ММ
#define SEMIMAGEFONT       31004  // НАЗВАНИЕ ШРИФТА

Можно задать семантику 31001 со значением 200 - подпись или знак увеличатся в 2 раза.
Можно задать семантику 31003 со значением 3 - подпись будет высотой 3 мм.


Семантики вне этого диапазона влияют на вид только, если они входят в серию объектов или применяются в составе программируемых знаков. Иначе - у них информационная функция.


4) Можно в классификаторе уточнить свойства масштабирования объектов - пределы увеличени и сжатия при масштабировании карты.
Проблемы с памятью при вызове mapGetObjectCount (QtDesigner 15.0.2), Заканчивается оперативная память
 
Вопрос в том, сколько памяти занимают данные листов на диске?

Если последовательно запрашиваются свойства всех листов, то они открываются и считываются в оперативную память.
Если нет ограничений на объем используемой памяти, то открытые листы остаются в памяти.
Если карту закрыть, то память освободится.
Если установить ограничения на объем используемой памяти, то открытие большего объема данных
будет приводить к закрытию листов, которые были открыты ранее.
Конвертировать SXF в SITX
 
Например, этой функцией:[CODE] // Загрузить (импортировать) карту из файла SXF, TXF или DIR с
// использованием Select с преобразованием топокарты к зоне документа
// Файлы SXF и TXF могут хранить координаты в метрах, радианах или градусах
// hmap    - идентификатор открытой карты (рекомендуется указывать
//           для определения текущей зоны топокарты) или 0;
// sxfname - имя загружаемого файла типа SXF, TXF или DIR;
// rscname - имя файла классификатора, с которым загружается карта,
//           имя классификатора можно запросить из SXF (TXF) функцией GetRscNameFromSxf
//           или из карты; для файла DIR может быть 0;
// mapname - имя создаваемой карты (обычно совпадает с именем SXF (TXF))
//           или ноль или указатель на пустую строку (буфер
//           c нулевым байтом равным нулю) или указатель на папку для размещения
//           карты. Если имя карты не задано или задана только папка, то карта
//           создается с именем SXF (TXF) и расширением ".sit". Если namemap
//           указывает на буфер достаточной длины (size), то в буфер записывается
//           имя созданной карты;
//           Для файла DIR тип общей карты - MPT (проект данных, включающий все
//           открытые карты из DIR) или MAP (многолистовая карта);
// size    - длина буфера, на который указывает переменная namemap, или 0. Обычно длина
//           равна MAX_PATH_LONG (1024);
// handle  - идентификатор окна диалога, которому посылаются уведомительные
//           сообщения (HWND для Windows, CALLBACK-Функция для Linux);
// select  - фильтр загружаемых объектов и слоев, если необходима выборочная
//           обработка данных;
// frscfromsxf - значение флажка "разрешить использование
//               имени классификатора, указанного в файле sxf"
// typesit - тип создаваемых карт в проекте MPT при импорте DIR (1- SIT; -1- SITX)
// password - пароль для создания защищенного хранилища карты (SITX)
// psize    - длина пароля в байтах
// transform - признак необходимости трансформировать загружаемую карту в систему координат hmap
//             (если hmap и transform не равно 0)
// hevent    - адрес функции обратного вызова для записи в протокол ошибок выполнени программы
// eventparam - первый параметр функции обратного вызова
// Для добавления открытой карты в документ необходимо вызвать функцию
// mapAppendData(hmap, namemap). Если mapname содержит имя карты типа MAP и
// она содержит хотя бы один лист, то при импорте данных выполняется создание
// нового листа в карте MAP. В этом случае функция mapAppendData не должна вызываться.
// При ошибке возвращает ноль

_VECIMP long int _VECAPI ImportFromAnySxfProEx(HMAP hmap, const WCHAR * namesxf, const WCHAR * namersc,  WCHAR * namemap, long int size,
                                           HMESSAGE handle, HSELECT select, long int frscfromsxf, long int typesit, const WCHAR * password, long int psize,
                                           long int transform, EVENTLOG hevent, void * eventparam);[/CODE]typesit = -1;
maname - может указывать на имя файла с расширением sitx
Пользовательский текст подписи знака по семантике, Проблема изменения подписи при помощи семантики
 
В ГИС Оператор в Редакторе карты нанес знак с кодом 1314170040011 "Основной пункт базирования".
В диалоге Выбор объекта при создании знака заполнил семантику 5400 Произвольная надпись внутри знака.
Введенный текст стал отображаться, как часть знака по центру второй строкой.
Пересчет координат из пикселей в СК-42, Алгоритм пересчета координат из пикселей в СК-42
 
Зачем его производить? Почему не отображать Градусы, Минуты, Секунды или Условные координаты в метрах в проекции карты?

А) Потому, что так принято - чтоб на экране были какие-то СК-42.
Тогда выбирайте ближайший меридиан и пусть координаты скачут при переходе в другую зону.
Все равно их никто не понимает и не использует.

Б) Это нужно для передачи смежникам при решении общих задач.
Тогда, начальник (командир) принимает решение на организацию управления и взаимодействия со смежными подразделениями
исходя из территории, на которой решается задача (находятся подразделения). В приказе определяет в какой зоне (системе координат)
ведется взаимодействие. Ваша программа вводит указанное значение и выполняет пересчет в указанной системе координат (зоне).
mapSetBright
 
[CODE]mapSetSiteBright(hMap, hMap, bright);
mapSetContrast(hMap, hMap, contrast); [/CODE]
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 412 След.



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности