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

Александр Савелов (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 10 11 12 13 14 15 16 17 18 19 20 ... 69 След.
Программное изменение точки привязки объекта
 
Здравствуйте!

Для изменения положения подписи Вы можете воспользоваться одним из следующих вариантов:
- изменить выравнивание подписи с помощью функции mapPutTextHorizontalAlign() и mapPutTextVerticalAlign() (mapapi.h):[CODE] // Установить способ выравнивания текста по горизонтали
 // (FA_LEFT,FA_RIGHT,FA_CENTER)
 // info    - идентификатор объекта карты в памяти
 // subject - номер подобъекта (-1 - установить всем)
 // По умолчанию имеет значение FA_LEFT
 // При успешном выполнении возвращает установленное значение
_MAPIMP long int _MAPAPI mapPutTextHorizontalAlign(HOBJ info, long int align, long int subject);

 // Установить способ выравнивания текста по вертикали
 // (FA_BOTTOM,FA_TOP,FA_BASELINE,FA_MIDDLE)
 // info    - идентификатор объекта карты в памяти
 // subject - номер подобъекта (-1 - установить всем)
 // По умолчанию имеет значение FA_BASELINE
 // При успешном выполнении возвращает установленное значение
_MAPIMP long int _MAPAPI mapPutTextVerticalAlign(HOBJ info, long int align, long int subject);[/CODE]- добавить в объект подобъект, состоящий из одной точки, с помощью функции mapCreateSubject() (mapapi.h). С помощью изменения координат данной точки в дальнейшем будет изменяться положение подписи. Для добавления подписи в новый подобъект необходимо в функции mapPutText в аргументе subject указать номер нового подобъекта.
[CODE] // Создать дескриптор подобъекта в записи метрики
// В конец записи добавляется дескриптор подобъекта с нулевым числом точек
// Если предыдущий подобъект не содержит ни одной точки, то новый подобъект не
// будет создан
// info    - идентификатор объекта карты в памяти
// Возвращает номер созданного подобъекта (с 1)
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapCreateSubject(HOBJ info);[/CODE]
Карта и матрица имеют разные параметры проекции, Ошика конвертирования
 
Добрый день!

Спасибо за предоставленные данные - по результатам анализа хотели уточнить следующие моменты:
- в процессе добавления переданной матрицы высот к карте у нас не возникает запрос преобразования - не могли бы Вы уточнить, это уже преобразованная матрица или исходная?
- в переданной карте координаты хранятся в дискретах - это устаревший формат хранения координат: если есть возможность, рекомендуем выполнить экспорт карты в формат TXF с сохранением координат в метрах и после этого выполнить импорт. Данную процедуру можно выполнить в программе ГИС-вьюер, доступной для скачивания на нашем сайте ([URL=https://gisinfo.ru/download/download.htm#5)]https://gisinfo.ru/download/download.htm#5)[/URL].
Функции отображения трёхмерных карт
 
Добрый день!

Доработка текущего функционала для поддержки отображения 3D-модели Земли возможна. Планируем первым шагом подготовить пример, демонстрирующий отображение 3D-модели без учета кривизны - если Вас устроит данный вариант, то мы выполним реализацию отображения модели Земли.
Карта и матрица имеют разные параметры проекции, Ошика конвертирования
 
Добрый день!

Для исключения ошибок перекодировки при преобразовании WCHAR-строки в строку char рекомендуется использовать функцию UnicodeToString() (mapsyst.h).
В данном случае код будет выглядеть следующим образом:[CODE]char mtwFileNameString[MAX_PATH_LONG]; mtwFileNameString[0] = 0;
UnicodeToString(mtwFileName.utf16(), mtwFileNameString, sizeof(mtwFileNameString));[/CODE]
Редактирование графа дорог
 
Добрый день!

Редактирование узлов и ребер графа дорог производится с помощью стандартных функций редактирования объектов карты.
Описание объектов графа дорог приведено в разделе "2. Особенности цифрового описания графа дорог" документа "Прикладные задачи. Граф дорог" ([URL=https://gistoolkit.com/download/doc/graphofroad.pdf]https://gistoolkit.com/download/doc/graphofroad.pdf[/URL]).
Не работает функция SetDestName() у компонента QDMapConvertor
 
1. В данном случае SxfToMapMessageHandler - это глобальная функция, соответствующая типу MSGHANDLER (mapsyst.h):[CODE]// Обработчик сообщений
typedef long int (*MSGHANDLER)(long int hwnd, long int code, long int p1, long int p2, long int typemsg);
[/CODE]Вы можете разместить ее в удобном для Вас месте и передавать указатель на нее в параметр handle функции ImportFromAnySxfPro.

2. В данном примере SxfToMapDialog - это указатель на глобальный экземпляр диалога. В блоках кода обработки сообщений WM_OBJECT и WM_ERROR вызываются функции диалога для обработки данных сообщений (например, в диалоге может обновляться состояние прогресс-бара).
Конвертирование SXF в SITX, Странное поведение функции ImportFromAnySxfPro
 
Добрый день!

Проблема может быть вызвана некорректной перекодировкой в WCHAR:
[QUOTE] //Конвертируем QString в WCHAR--------------------------------
       WCHAR mapname[MAX_PATH_LONG]; mapname[0] = 0;          
       const char * newsitx;
       newsitx = sNewSITX.toLocal8Bit();
       StringToUnicode(newsitx,mapname,sizeof(mapname));
       //-----------------------------------------------------------[/QUOTE]
Для исключения возможных ошибок, связанных с перекодировкой, можно использовать функцию WcsCopy() (mapsyst.h):[CODE]// Копирует UNICODE строку в UNICODE строку
// Если буфер меньше строки, то строка обрезается
// src      - адрес входной строки UTF-16
// dest     - адрес буфера для размещения выходной строки UTF-16
// destsize - размер выходной строки в БАЙТАХ
INLINEFUNC WCHAR* WcsCopy(WCHAR *dest, const WCHAR *src, int destsize)[/CODE]В данном случае код будет выглядеть следующим образом:[CODE]WCHAR mapname[MAX_PATH_LONG]; mapname[0] = 0;
WcsCopy(mapname, sNewSITX.utf16(), sizeof(mapname));[/CODE]
Не работает функция SetDestName() у компонента QDMapConvertor
 
Добрый день!

1. Ошибку исправим, изменения войдут в следующую версию ГИС Конструктор - спасибо.
2. При необходимости передавать программно большое число параметров импорта можно использовать функцию ImportFromAnySxfPro() (vecexapi.h):
[CODE] // Загрузить (импортировать) карту из файла SXF, TXF или DIR с
// использованием Select с преобразованием топокарты к зоне документа
// Файлы SXF и TXF могут хранить координаты в метрах, радианах или градусах
// hmap    - идентификатор открытой карты (рекомендуется указывать
//           для определения текущей зоны топокарты) или 0;
// sxfname - имя загружаемого файла типа SXF, TXF или DIR;
// rscname - имя файла классификатора, с которым загружается карта,
//           имя классификатора можно запросить из SXF (TXF) функцией GetRscNameFromSxf
//           или из карты; для файла DIR может быть 0;
// mapname - имя создаваемой карты (обычно совпадает с именем SXF (TXF))
//           или ноль или указатель на пустую строку (буфер размером MAX_PATH
//           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);
_VECIMP long int _VECAPI ImportFromAnySxfProM(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);
_VECIMP long int _VECAPI ImportFromAnySxfPro(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);[/CODE]Для динамического получения информации о процессе импорта и обновления интерфейсных элементов (например, прогресс-бар значением процентов) предусмотрена функция обратного вызова. В следующем исходном коде приведен пример ее использования:[CODE]long int SxfToMapMessageHandler(long int hwnd, long int code, WPARAM wParam, LPARAM lParam,
                               long int typemsg)
{  
 if (!SxfToMapDialog)
   return 0;

 QCoreApplication::processEvents();

 if (SxfToMapDialog)
 {
   switch (code)
   {
     case WM_OBJECT:
       return SxfToMapDialog->OnObjectMessage(wParam, lParam);
       break;

     case WM_ERROR:
       return SxfToMapDialog->OnErrorMessage();
       break;

     default:
       break;
   }
 }

 return 0;
}

// ...
int isImported = ImportFromAnySxfPro((HMAP)0, InputPath, RscPath, OutputMapPath,
                                      sizeof(OutputMapPath), SxfToMapMessageHandler, (HSELECT)0,
                                      useRscFromSxf, createSitxWhenImportingDir, 0, 0);[/CODE]
Пример mapobj, функция MapWidget::CreateObjects
 
Здравствуйте!

В тестовом примере mapobj из состава инсталляции ГИС Конструктор приводится пример создания объекта с заранее заданным кодом (71223000) из конкретного классификатора Topo100t.rsc:[CODE] StrCat(rscName, "Topo100t.rsc", MAX_PATH_LONG);
 // ...
 mapRegisterObject(hobj, 71223000, LOCAL_SQUARE);
[/CODE]В результате при создании объекта описание берется из классификатора. Более подробно создание и редактирование объектов описано в пунктах 3.8.16-3.8.18 документа "Руководство программиста" ([URL=https://gistoolkit.com/download/doc/gisdesigner_prog.pdf]https://gistoolkit.com/download/doc/gisdesigner_prog.pdf[/URL]).
IML SEMANTIC
 
Здравствуйте!

Программирование условных знаков объектов на основе интерфейса IMLAPI описано в разделах 3.8.24 и 3.8.25 документа "Руководство программиста" ([URL=https://gistoolkit.com/download/doc/gisdesigner_prog.pdf]https://gistoolkit.com/download/doc/gisdesigner_prog.pdf[/URL]).
Примеры реализации библиотек iml расположены в составе инсталляции ГИС Конструктор в каталоге /usr/share/gisdesigner/examples/Sdk/
Страницы: Пред. 1 ... 10 11 12 13 14 15 16 17 18 19 20 ... 69 След.



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

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