Страница 2 из 2
Re: Определить bbox для WMS сервиса
Добавлено: 22 мар 2017, 17:41
kasik
Получается значит вписать этот охват в текущую картинку, как то трансформируя его или прибавляя "уши" по бокам или сверху/снизу. Но как сделать? Нужно соответствие размера картинки и размера охвата.
Re: Определить bbox для WMS сервиса
Добавлено: 22 мар 2017, 17:43
kasik
freeExec писал(а):Одну сторону картинки задаёшь, а вторую высчитываешь из пропорции.
Высота картинки = Длинна картинки * Высота Ббокс / Ширина Ббокс, вроде так.
Но нужно наоброт, взяв охват и вписать в текущие размеры с определенными трансформации bbox, ведь необязательно текущий охват будет соответствовать размером картинки.
Re: Определить bbox для WMS сервиса
Добавлено: 22 мар 2017, 17:52
Denis Rykov
Если размер выходного изображения жёстко задан и не соответствует пропорциям охвата, то измените охват, чтобы они соответствовали. Я не понимаю, в чём проблема то? Предположим, что размер изображения задан - 320x240, а стороны охвата относятся как 1:1. Получается, чтобы вписать данный охват в указанные границы - его нужно привести к таким же пропорциям. Охват будем увеличивать, чтобы не потерялись нужные объекты.
Код: Выделить всё
# a - ширина bbox
# b - высота bbox
# q - отношение ширины изображения к высоте (320:240)
# dx - приращение bbox-а по ширине
# dy - приращение bbox-а по высоте
(a+dx)/(d+dy) = q
Задавая различные приращения, например, dx - вычисляем значение dy, если получили dy < 0 (охват уменьшился), значит увеличиваем dx, до тех пор, пока dy не станет > 0. Определив приращения охвата, формируем его итоговое значение. Тут можно поступить по-разному: либо просто добавить приращения к соответствующим координатам, либо сделать так, чтобы центр охвата попал в центр изображения. Всё. Вот пример того как вписать
квадратный охват в границы 320x240 -
результат.
Re: Определить bbox для WMS сервиса
Добавлено: 27 мар 2017, 12:15
kasik
Denis Rykov писал(а): Я не понимаю, в чём проблема то?
Все Круто, сделал! Пришлось немного попотеть для решения параметрического неравенства, Но вроде справился. Большое спасибо