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

Константин Ганюшин (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Константин Ганюшин
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 11 12 13 14 15 16 17 18 19 20 21 ... 43 След.
Удаление объекта карты с освобождением ресурсов
 
Здравствуйте!

В зависимости от требуемой задачи есть следующие варианты:
[LIST]
[*]для освобождения ресурсов в памяти, выделенных под объект (HOBJ), необходимо при завершении работы с объектом вызвать функцию mapFreeObject (mapapi.h, пример использования показан в пункте 3.9.16 [URL=https://gistoolkit.com/download/doc/gisdesigner_prog.pdf#page=112]Руководства программиста[/URL]);
[*]для полного удаления объектов, помеченных как удаленные, необходимо выполнить сортировку карты, например, с помощью фукнции MapSortingSitePro (mapapi.h, пример использования можно посмотреть в [URL=https://gisinfo.ru/download_linux/?id=150]примерах разработки приложений в ГИС "Оператор" SE и ГИС "Панорама"[/URL], файл mapacces/tests/test_map_sorting.cpp).
[/LIST] [CODE] // Удалить описание объекта векторной карты из памяти
 // info - идентификатор объекта карты в памяти
 // Для сохранения объекта на карте необходимо
 // до вызова mapFreeObject(...) выполнить функцию
 // mapCommitObject(...)
 // При ошибке возвращает ноль

_MAPIMP void _MAPAPI mapFreeObject(HOBJ info);

 // Сортировка отдельной карты документа
 // mapname - сортируемая карта
 // flags   - Флажки обработки карты :
 //   0 - сортировать все листы,
 //   1 - только несортированные,
 //   2 - сохранять файлы отката,
 //   4 - повысить точность хранения, формат - мкм
 //  16 - повысить точность хранения, формат - см
 //  32 - повысить точность хранения, формат - мм
 //  64 - повысить точность хранения, формат - радианы
 // 128 - формировать мультиконтура для объектов с флагом мультиконтурный
 // handle     - идентификатор окна, которому посылаются сообщения WM_OBJECT и WM_ERROR,
 //              если не задан параметр hEvent
 // hEvent     - адрес функции обратного вызова для уведомления о проценте выполнения,
 //              если параметр не задан, то посылаются сообщения WM_OBJECT и WM_ERROR
 // eventparam - параметр, передаваемый функции обратного вызова
 // outpath    - буфер для записи пути к папке, куда сохранили отсортированную карту,
 //              если задан этот параметр, то исходная карта не обновляется,
 //              папка создается автоматически в программе сортировки
 // size       - длина буфера в байтах
 // format - управление форматом карты :
 //  0 - не менять,
 //  1 - установить формат SITX (на входе может быть SIT или MAP с одним листом),
 //  2 - упаковать карту в формат SITZ\MAPZ, точность - см,
 // -1 - установить формат SIT (на входе может быть SITX или MAP с одним листом),
 // code - управление шифрованием карты :
 //  0 - не менять,
 //  1 - шифровать данные с помощью пароля из параметра password (формат SITX),
 // -1 - снять шифрование данных
 // password - пароль для шифрования данных, когда code = 1, или 0
 // Если карта отсортирована успешно - возвращает 1
 // Если карта уже отсортирована - возвращает 2
 // Если оператор прервал операцию - возвращает -1
 // Если карта не доступна на редактирование - возвращает -2
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI MapSortingWithEventPro(const WCHAR *mapname, long int flags,
                                               HMESSAGE handle, EVENTCALL hEvent, void *eventparam,
                                               WCHAR *outpath, long int size,
                                               long int format, long int code,
                                               const WCHAR *password);

_MAPIMP long int _MAPAPI MapSortingSitePro(HMAP hmap, HSITE hsite, long int flags,
                                          HMESSAGE handle, long int format, long int code,
                                          const WCHAR *password);[/CODE]
GeoJson
 
Здравствуйте!
Для импорта формата GeoJSON можно воспользоваться функцией gmlCreateObjectsFromJSONPro(gmlapi.h):
[CODE] // Cоздание объектов из файла формата geoJSON
// hmap -  идентификатор открытых данных (документа)
// hsite - идентификатор открытой пользовательской карты
// jsonname - имя файла формата GeoJSON
// Код создаваемого объекта ищется в поле code ("code": 115001010,)
// Если код не задан в объекте, то он выбирается из входных параметров
// squareCode - код создаваемых площадных объектов или 0
// pointCode  - код создаваемых точечных объектов или 0
// lineCode   - код создаваемых линейных объектов или 0
// textCode   - код создаваемых подписей или 0
// hwnd - идентификатор окна для приема сообщений или ноль, посылаются сообщения WM_PROGRESSBAR
// charset - кодировка текста (0 - UTF-8 или 1- ANSI)
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI gmlCreateObjectsFromJSONPro(HMAP hmap, HSITE hsite, const WCHAR* jsonname,
                                                   long int squareCode = 0, long int pointCode = 0,
                                                   long int lineCode = 0, long int textCode = 0,
                                                   HMESSAGE hwnd = 0, long int charset = 0);[/CODE]
Проблема с функцией MAPAPI BuildPreviewImageFromAnySxfUn
 
Здравствуйте!

Данная проблема исправлена - обновленную версию ГИС Конструктор планируется передать Вам в ближайшее время.
Функции отображения трёхмерных карт
 

Провели проверку в Ubuntu 20.04 – подложка из карты отрисовалась корректно.
Для работы приложения должно быть достаточно установленных библиотек Qt версии выше 5.4 и драйверов видеокарты.

Для диагностики, пожалуйста, активируйте диагностический лог (mapOpenDiagnostics) после вызова конструктора QDMapView в main.cpp примера и повторите создание модели.
Полученный лог можно прислать на почту [URL=mailto:panorama@gisinfo.ru]panorama@gisinfo.ru[/URL] с ссылкой на сообщение с форума.

Для отображения 3D-модели нужен подготовленный классификатор с установленными 3D-видами для объектов и файл настройки отображения объектов (.p3d).
Карта кадастра из состава инсталляции (/usr/share/gisdesigner/examples/Data/Планы городов/Cadastre) содержит необходимые настройки и может использоваться для демонстрации.

Для отображения всех объектов на данной карте можно при инициализации 3D-модели в её параметрах выставить флаг видимости всех моделей на карте (ViewRange = 1).

Отображение рамки вокруг подписи с помощью структуры IMGDRAW
 

Здравствуйте!

На сайте доступна обновленная версия ГИС Конструктор, в которой добавлена поддержка отображения рамки с прозрачным фоном подписи. Приводим код для демонстрации нанесения данного объекта:
[CODE] HMAP hMap = mapOpenAnyData(WTEXT("/tmp/Noginsk/Noginsk.sit"));
 assert(hMap);

 double x = 6198000;
 double y = 7448000;

 HOBJ hobj = mapCreateSiteObject(hMap, hMap, IDDOUBLE2, 1);
 mapRegisterDrawObject(hobj, 0, LOCAL_TITLE);
 mapAppendPointPlane(hobj, x, y);

 IMGTEXT parm;
 parm.Color = RGB(0, 0, 255);
 parm.BkgndColor = IMGC_TRANSPARENT2; // IMGC_TRANSPARENT2 - рисовать рамку без фона
 parm.Height = PIX2MKM(30);
 parm.Weight = FW_NORMAL;
 parm.Outline = 2;
 parm.Interval = 50;
 parm.Align = FA_RIGHT;
 parm.Service = 0;
 parm.Wide = UNIW_NORMAL;
 parm.Horizontal = 0;
 parm.Italic = 0;
 parm.Underline = 0;
 parm.StrikeOut = 0;
 parm.Type = 0;
 parm.CharSet = RUSSIAN_CHARSET;
 parm.Flag = 0;
 mapAppendDraw(hobj, IMG_TEXT, (char *)&parm);
 mapPutTextUn(hobj, WTEXT("Sign text"), 0);
 mapCommitObject(hobj);
 mapFreeObject(hobj);

 mapCloseData(hMap);[/CODE]

Функции отображения трёхмерных карт
 

Здравствуйте!
На сайте доступна обновленная версия ГИС Конструктор, в состав которой включен пример отображения 3D-модели – map3d.

Проблема с функцией LoadMtwToTiffConverter
 

Здравствуйте!
На сайте доступна обновленная версия ГИС Конструктор с исправлением данного поведения.
Пожалуйста, протестируйте и сообщите нам.

Экспорт объектов из классификатора, Экспорт объектов в общепринятые форматы (SVG, PNG, KML)
 

Здравствуйте!

Для экспорта изображения знака классификатора можно выполнить с помощью следующих действий:
- создать временную карту (пункт 3.8.3 Открытие и создание пользовательских карт [URL=https://gistoolkit.com/download/doc/gisdesigner_prog.pdf]Руководства программиста[/URL]);
- нанести один или несколько знаков на созданную карту(пункт 3.8.16 Редактирование объектов Руководства программиста);
- выполнить экспорт полученной карты в обменный формат.

Для экспорта можно воспользоваться одной из указанных функций:
- SVG: SaveMapToSVG() (пример использования можно посмотреть в составе [URL=https://gisinfo.ru/download/?id=279]sdk14 для Windows[/URL] в файле mapexam/mapexam87.cpp);
- PNG: LoadDocumentImageToPictureFile() (mappicex.h);
- KML: mapSaveMapToKmlEx() (gmlapi.h);
- JSON: gmlGetFeaturiesList() (gmlapi.h) (пример использования можно посмотреть в sdk14, файл mapacces/tests/test_gml.cpp).

Для PNG можно воспользоваться альтернативным способом - нарисовать нужный объект классификатора в память и с помощью QImage выполнить сохранение файл, как, например, в данном [URL=https://www.gisweb.ru/forum/messages/forum7/topic2013/message78929/2013#message78929]примере[/URL] и в Руководстве программиста пункт 3.8.7.
Для запроса метаданных из классификатора можно воспользоваться функциями rscapi.h.
Работа с классификатором описывается в пункте 3.8.20 Руководства программиста.  

Ошибка построения MTW при использовании mapMessageEnable(0)
 

При запуске приложения с включенным выводом сообщений об ошибках на экран (mapMessageEnable(1)) в отдельном потоке произойдет вывод диалога Qt не из главного графического потока.
Данное поведение приведет к прекращению работы приложения, потому что вывод диалоговых окон не из графического потока является некорректным с точки зрения использования библиотек Qt.

На текущий момент возможны следующие варианты изменений в ГИС-приложении:
- отключить вывод сообщений с помощью вызова mapMessageEnable(0);
- установить собственную функцию вывод сообщения об ошибках, не использующую диалоговые окна Qt, с помощью функции mapSetMessageBoxCall() (mapapi.h).
Пример использования собственной функции вывода сообщения об ошибках можно посмотреть в примере mapview из состава инсталляции.

Автоматическое определение работы в потоке и отключения вывода сообщений c помощью диалогов Qt будет рассмотрено в одной из следующих версий ГИС Конструктор.

Изменено: Константин Ганюшин - 12.09.2022 11:41:58 (уточнил пример)
Необходимо изменить mouseWheelEvent компонент QDMapView
 
Здравствуйте!

Реализовать обработку колесика мыши в ГИС-приложении можно с помощью переопределения обработчика wheelEvent() в разрабатываемом приложении.
В следующих версиях ГИС Конструктор сигнал обработки колесика мыши будет добавлен в компонент.
Дополнительно сообщаем, что исходные тексты компонента(/usr/share/gisdesigner/examples/Sdk/qmapcomponent) входят в состав инсталляции и доступны для ознакомления.

Изменено: Константин Ганюшин - 12.09.2022 11:43:50
Страницы: Пред. 1 ... 11 12 13 14 15 16 17 18 19 20 21 ... 43 След.



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

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