Была поставлена задача: выделить объекты по границам прямоугольника, вписать прямоугольник с объектами в окно карты и экспортировать.
Вписать по ширине окна можно через команды:
map_view = view_manager.active
map_view.set_zoom_and_center(zoom, centroid, LinearUnit.m)
Проблема: как изменить программно высоту окна карты, чтобы вписать прямоугольник по высоте?
Размер окна карты
- Владимир В
- Пользователь
- Сообщения: 26
- Зарегистрирован: 25 мар 2024, 09:54
Re: Размер окна карты
Прямоугольник карты задается свойством MapView.scene_rect
https://axipy.axioma-gis.ru/6.0/referen ... scene_rect
Прямоугольник экрана, соответственно MapView.device_rect
https://axipy.axioma-gis.ru/6.0/referen ... scene_rect
Прямоугольник экрана, соответственно MapView.device_rect
- Владимир В
- Пользователь
- Сообщения: 26
- Зарегистрирован: 25 мар 2024, 09:54
Re: Размер окна карты
MapView.scene_rect и MapView.device_rect - это Getter. Они не задают параметры окна.
Решение найдено следующим образом:
map_view = view_manager.active
zoomx = item.geometry.bounds.xmax - item.geometry.bounds.xmin
zoomy = item.geometry.bounds.ymax - item.geometry.bounds.ymin
coeff = zoomy / zoomx
windowx = 600
windowy = coeff * windowx
map_widget = map_view.widget
map_widget.setFixedSize(windowx, windowy)
map_view.set_zoom_and_center(zoomx, Pnt(item.geometry.centroid().x, item.geometry.centroid().y), LinearUnit.m)
map_parent = map_widget.parent().parent()
map_parent.setFixedSize(windowx, windowy)
Решение найдено следующим образом:
map_view = view_manager.active
zoomx = item.geometry.bounds.xmax - item.geometry.bounds.xmin
zoomy = item.geometry.bounds.ymax - item.geometry.bounds.ymin
coeff = zoomy / zoomx
windowx = 600
windowy = coeff * windowx
map_widget = map_view.widget
map_widget.setFixedSize(windowx, windowy)
map_view.set_zoom_and_center(zoomx, Pnt(item.geometry.centroid().x, item.geometry.centroid().y), LinearUnit.m)
map_parent = map_widget.parent().parent()
map_parent.setFixedSize(windowx, windowy)