Сохранение окна карты в файл изображения

Ошибки при работе с ГИС Аксиома
Ответить
Аватара пользователя
bgnik
Сообщения: 60
Зарегистрирован: 25 окт 2021, 08:40

Сохранение окна карты в файл изображения

Сообщение bgnik » 09 авг 2024, 06:52

При сохранении карты в файл изображения с помощью метода "to_image" не учитывается толщина линейных объектов и размер точечных (любые отображаются одинаковыми). При создании файла изображения с помощью команды меню "Экспорт окна в растр" все выполняется корректно.
Аватара пользователя
Александр
Сообщения: 495
Зарегистрирован: 18 апр 2019, 11:21

Re: Сохранение окна карты в файл изображения

Сообщение Александр » 09 авг 2024, 18:48

Я проверил экспорт точечных объектов разных размеров.
Проблем не заметил.
img.png
img.png (1.97 КБ) 2752 просмотра
Исходный файл:
test.zip
(927 байт) 215 скачиваний

Code: Select all

mv = axipy.view_manager.active
image = mv.map.to_image(mv.device_rect.width, mv.device_rect.height, mv.coordsystem, mv.scene_rect)
image.save(r'c:\tmp\img.png')
Аватара пользователя
bgnik
Сообщения: 60
Зарегистрирован: 25 окт 2021, 08:40

Re: Сохранение окна карты в файл изображения

Сообщение bgnik » 12 авг 2024, 09:01

Да, Александр, Вы правы. Действительно, проблему я сформулировал неверно.
Однако, мою проблему это не решает. Если я беру размер выходного растра не в координатах окна, а значительно больше, то результат меняется. С теми же размерами, но через меню "Экспорт окна в растр" я получаю такую же картинку, как на экране. PDF также нормальный. И в отчет для печать вставляется корректно. Что-то здесь не по моим мозгам...
Файлы с картинками и пояснением отправлю по почте, они слишком громоздкие.
Аватара пользователя
Александр
Сообщения: 495
Зарегистрирован: 18 апр 2019, 11:21

Re: Сохранение окна карты в файл изображения

Сообщение Александр » 12 авг 2024, 19:21

На данный момент метод Map.to_image() позволяет экспортировать карту с текущим разрешением экрана и нет возможности задавать разрешение для экспорта. Толщина линий и размеры символов зависят от этого разрешения.
Параметры width и height определяют размеры окна. Если вы увеличиваете размер окна, не меняя размеры ограничивающего прямоугольника карты, это приводит к изменению масштаба, так как разрешение остается неизменным.

Возможность задать разрешение есть у функции Map.draw()

Code: Select all

import axipy
import PySide2.QtGui as Qg
from PySide2.QtCore import Qt

k = 10 # во сколько раз увеличить картинку в пикселях

mv = axipy.view_manager.active
image = Qg.QImage(int(mv.device_rect.width * k), int(mv.device_rect.height * k), Qg.QImage.Format_ARGB32)
context = axipy.Context(Qg.QPainter(image))
context.coordsystem = mv.coordsystem
context.rect = mv.scene_rect
context.dpi = k * 96
mv.map.draw(context)
image.save(r'c:\tmp\img2.png')
Аватара пользователя
bgnik
Сообщения: 60
Зарегистрирован: 25 окт 2021, 08:40

Re: Сохранение окна карты в файл изображения

Сообщение bgnik » 14 авг 2024, 08:09

Теперь все нормально. Александр, спасибо!
Ответить