[QUOTE]Константин Ганюшин написал: Пример mapview служит для демонстрации вывода карты на экран с использованием MAPAPI функций рисования. В используемой версии данный пример линковался только с библиотекой mapacces, которая не зависит от библиотек Qt. Смена комплекта для данной библиотеки не требовалась. Библиотеки ГИС Конструктора, для которых необходима смена комплекта при сборке с разными версиями Qt, инсталлируются в подкаталог соответствующей версии, например, /usr/lib/gisdesigner/qt5.[/QUOTE] Позвольте возразить. Возьмите пример mapview, откройте его в QT Creator (у меня Qt Creator 4.6.2 Основан на Qt 5.11.0 (GCC 6.3.0 20170516, 64 бита)), активируйте "Сборка и Запуск Комплект без имени 4", переключитесь с помощью утилиты на версию QT4. Соберите mapview и запустите, все запустилось и работает. Теперь активируйте "Сборка и Запуск Комплект без имени 5" пересоберите и заустите mapview.. Ошибка... Запускается /home/vxuser/WORK_PROJECT/Work/build-mapview-5-Debug/mapview... Программа неожиданно завершилась. Процесс был завершён принудительно.
[QUOTE]Константин Ганюшин написал: Да, пользователь должен самостоятельно устанавливать необходимый комплект библиотек.[/QUOTE] Позвольте еще вопрос Константин. Устанавливаем комплект баблиотек QT5 с помощью утилиты gis-qtchooser.sh. Возьмем например компонент mapview из поставки и попробуем его скомпилировать под "Комплект 4" и "Комплект 5" в QT Creatore. После компиляции оба варианта запускаются без смены комплекта баблиотек на QT4.
Если я таким же образом пытаюсь сделать со своим ПО то у меня ошибка, что я выкладывал в начале темы и для запуска сборки под "Комплект 4" мне необходимо переключаться на комплект библиотек QT4 c помощью sudo gis-qtchooser.sh gt4. Можете меня направить в правильное русло чтобы понять почему у меня возникает данная проблема. Если что я приложу необходимые файлы.
У меня вопрос вдогон: "Получается что пользователь сам(с помощьюgis-qtchooser.sh ) должен менять использование библиотек QT4/QT5, когда меняет профиль QT? Я думал что достаточно просто в QT Creator сменить профиль с QT4 на QT5 или наоборот"
[QUOTE]Константин Ганюшин написал: /libQt5Core.so.5[/QUOTE] Не могу понять где еще искать. Может еще что предоставить для ознакомления? Везде QT4? Не понимаю откуда QT5 тянется...
[QUOTE]Константин Ганюшин написал: sudo gis-qtchooser -i[/QUOTE] это понятно... я и писал что не находит vxuser@astra:~$ sudo gis-qtchooser -i sudo: gis-qtchooser: command not found
[QUOTE]Константин Ганюшин написал: Здравствуйте. В выводе gdb присутствуют вызовы функций из библиотек Qt5, что может являться причиной данного поведения. Пожалуйста, убедитесь что: - при сборке приложения происходит линковка только с используемой версией библиотек Qt; - выбран комплект библиотек ГИС Конструктор для указанной версии Qt с помощью утилиты gis-qtchooser.
Описание смены комплекта библиотек с помощью утилиты gis-qtchooser приводится в п.3.3 [URL=https://gistoolkit.com/download/doc/gisdesigner_sysprog.pdf]Руководства системного программиста[/URL] . [/QUOTE] Что делать если эта утилита отсутствует?
QT Creator сам же меняет настройки профиля при смене комплекта, не так ли?
Олег, Константин, огромное спасибо за наставление! Все получилось. В сравнении с старой катрографией, которую портировали под ОСРВ примерно в 2000-ом году, сейчас просто сказка, все равно что Победа в сравнении с Теслой)) Спасибо за продукт, движемся дальше.
Здравствуйте. Подскажите пожалуйста почему при сборке проекта под QT5 все отлично работает, а под QT4 приложение при запуске выдает сообщение:
Скрытый текст
Запускается /home/vxuser/WORK_PROJECT/Work/build-MapServer-4-Debug/MapServer... realloc(): invalid pointer Программа неожиданно завершилась. Процесс был завершён принудительно./home/vxuser/WORK_PROJECT/Work/build-MapServer-4-Debug/MapServer аварийно завершился.
Program received signal SIGABRT, Aborted. 0x00007ffff3ff07bb in raise () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) backtrace #0 0x00007ffff3ff07bb in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff3fdb535 in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00007ffff4032508 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #3 0x00007ffff4038c1a in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #4 0x00007ffff403de4a in realloc () from /lib/x86_64-linux-gnu/libc.so.6 #5 0x00007ffff33e5f91 in QListData::realloc_grow(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #6 0x00007ffff33e601f in QListData::append(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #7 0x00007ffff34a5a58 in qRegisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #8 0x00007ffff3368be3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #9 0x00007ffff7fe437a in ?? () from /lib64/ld-linux-x86-64.so.2 #10 0x00007ffff7fe4476 in ?? () from /lib64/ld-linux-x86-64.so.2 #11 0x00007ffff7fd60ca in ?? () from /lib64/ld-linux-x86-64.so.2 #12 0x0000000000000001 in ?? () #13 0x00007fffffffe4a5 in ?? () #14 0x0000000000000000 in ?? ()
Я понимаю что вопрос не совсем по картографии, но такое я встречал и на примере с MAPVIEW. Спасибо.
[QUOTE]Oleg Belenkov написал: Чтобы получить ответ - нужно задать вопрос[/QUOTE] В этом и суть, что ваши ответы не дают картины решения вопроса.
Попробуем еще раз. Я не использую ни QDmap ни QScrollArea и другие Кьютишные элементы. Есть интерфейс написанный на Иксах и в нем есть окно для отображения карты. Остальные объекты окна рисуются поверх карты и на карту не наносятся.
1. Создаю карту *.map из тестовой карты что у вас в примерах (Podolsk.sxf, Topo100t.rsc) с помощью _VECIMP long int _VECAPI ImportFromAnySxf(HMAP hmap, const char * sxfname, const char * rscname, char * mapname, long int size, HMESSAGE handle, HSELECT select).
2. Открываю созданные векторные данные с помощью _MAPIMP HMAP _MAPAPI mapOpenMap(const char *mapname, long int mode = 0).
3. У меня есть окно 1200*900 pix (могу менять зону видимости в км 50, 100, 200, 300... 3000 ) с координатами центра отображения NZ=7 X=6140000 Y=419000 м (для того чтобы отобразить карту Подольска). Также есть: - координаты в метрах левого верхнего угла окна просмотра в местной системе координат; - координаты в метрах центра окна в местной системе координат; - координаты в метрах центра окна в ГК, Каврайского и Меркатора. Необходимо подготовить Image для отображения на экране (как создать Image из данных понятно и как отобразить тоже). Я не понимаю как из открытых векторных данных (что я открыл в Пункте 2) получить карту с нужным мне масштабом, пусть например сейчас это будет для окна с зоной видимости 200 км и размером 1200*900 pix с координатами центра отображения NZ=7 X=6140000 Y=419000 м (проекция ГК и проекция Каврайского с возможностью смены проекций).
[B]Можете ли вы подсказать, что делать пошагово, до того момента как создать I[/B][B]mage?[/B] [B]Например:[/B] [B]1. Рассчитываем знаменатель масштаба, для этого делим то-то на то.[/B] [B]2. Находим сколько метров земной поверхности в одном пикселе изображения, для этого делим 200000 метров на 900 пикс.[/B] [B]Ну и так далее.... [/B][B]Т.е. подготовка картинки карты под мои размеры и масштаб. Не могу выстроить порядок пересчетов чтобы подготовить открытую карту в Пункте 2 к моим параметрам окна. [/B]
[QUOTE]Константин Ганюшин написал: В примере mapview есть используется функции ShiftLeftTopCorner и SetCenter.[/QUOTE] Я не использую scrollArea, только Иксы. Есть окно наземной обстановки 1200*900 пикс. зона видимости в км (50, 100, 200, 300... 3000) и: - координаты в метрах левого верхнего угла области просмотра в местной системе координат; - координаты в метрах центра окна в местной системе координат; - координаты в метрах центра окна в ГК, Меркатора и Каврайского.
Больше ни чего нет.
В ваших примерах поставки нет системы координат в окне, вы просто рисуете карту не привязывая ее к системе координат.
И как тут сообразить что во что пересчитать с учетом зоны видимости чтобы карту правильно подготовить для Image.