Определить bbox для WMS сервиса

Не знаете, где задать вопрос? Задавайте здесь.
kasik
Интересующийся
Сообщения: 17
Зарегистрирован: 27 янв 2017, 17:02
Репутация: 0

Re: Определить bbox для WMS сервиса

Сообщение kasik » 22 мар 2017, 17:41

Получается значит вписать этот охват в текущую картинку, как то трансформируя его или прибавляя "уши" по бокам или сверху/снизу. Но как сделать? Нужно соответствие размера картинки и размера охвата.

kasik
Интересующийся
Сообщения: 17
Зарегистрирован: 27 янв 2017, 17:02
Репутация: 0

Re: Определить bbox для WMS сервиса

Сообщение kasik » 22 мар 2017, 17:43

freeExec писал(а):Одну сторону картинки задаёшь, а вторую высчитываешь из пропорции.
Высота картинки = Длинна картинки * Высота Ббокс / Ширина Ббокс, вроде так.
Но нужно наоброт, взяв охват и вписать в текущие размеры с определенными трансформации bbox, ведь необязательно текущий охват будет соответствовать размером картинки.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3308
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 489
Ваше звание: Author
Контактная информация:

Re: Определить bbox для WMS сервиса

Сообщение Denis Rykov » 22 мар 2017, 17:52

Если размер выходного изображения жёстко задан и не соответствует пропорциям охвата, то измените охват, чтобы они соответствовали. Я не понимаю, в чём проблема то? Предположим, что размер изображения задан - 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 - результат.
Spatial is now, more than ever, just another column- The Geometry Column.

kasik
Интересующийся
Сообщения: 17
Зарегистрирован: 27 янв 2017, 17:02
Репутация: 0

Re: Определить bbox для WMS сервиса

Сообщение kasik » 27 мар 2017, 12:15

Denis Rykov писал(а): Я не понимаю, в чём проблема то?
Все Круто, сделал! Пришлось немного попотеть для решения параметрического неравенства, Но вроде справился. Большое спасибо

Ответить

Вернуться в «Я новичок!»