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

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

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

Сообщение kasik » 20 мар 2017, 11:44

Здравствуйте уважаемые форумчане!

Стоит такая задача: нужно просто картинкой отобразить один из растровых тейловых слоев и на нем один или несколько векторных объектов(по определенному фильтру слоя).
Использую geoserver, для хранения геоданных и leaflet js на клиенте для их отображения.

Одно из решение "красивых" решений это использовать WMS с несколькими слоями и фильтрами для векторных.

Все круто, но нужно указать bbox, причем мне нужно что бы как раз вписать отфильтрованные геообъекты в размер картинки(и что бы хотя бы какую то "рамку" оставить, что бы не впритык в картинке было, то есть удалить немного), который имеет разный размер(то есть задается и высота и ширина)?
Таким образом входные данные такие:
- размерность картинки
- bounding box геообъектов
На выходе нужно получить необходимый bbox для WMS сервиса.
Вроде бы не так и сложно и все инструменты есть в самом leaflet, но как конкретно определить необходимый bbox, исходя из пропорции картинки и еще "удалить" вписанные геообъекты.

Спасибо за любую помощь

PS: И конечно самый красивый вариант был бы использовать процессинг WPS - то есть на вход посылать слои и фильтры для них и размерность картинки, а он бы мне возвращал уже заданную картинку. Но там надо делать запрос составным и нет описания боле мене подробного по всем его функциям, а так методом тыка ен очень весело, да еще в добавок когда в построителе начинаешь делать составные процессы они заполняются не тем что ты настроил, а какой то пустышкой. Поэтому эксперименты с составными вобще все в ручную через какой нить клиент типа curl или прямо из вэб-приложения. Поэтому про него придется забыть, но если у кого то был опыт его использования в подобном плане, то был бы очень раз помощи.
Последний раз редактировалось kasik 20 мар 2017, 18:23, всего редактировалось 1 раз.

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

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

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

Или это получается нетривиальная задача?

Хотя бы какая последовательность действий должна быть...

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

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

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

Может какие пояснения нужны, может описал сумбурно, сам просто новичок относительно в этой теме. Ну не может быть что никто из знатоков даже сказать нечего?)

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

Сообщение freeExec » 22 мар 2017, 11:20

Покажите на картниках, что у вас получилось, и что вы хотите. bbox высчитывается автоматически, а вы пытаетесь чего-то вручную.

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

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

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

Вот пример.

Никакой речи об автоматике не говорится в документации, по крайней мере. И эти параметры считаются обязательными.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

Сообщение freeExec » 22 мар 2017, 14:04

Что-то всё равно не понятно в чём затык. Берёте свои объекты, вычисляете для них охватываемый bbox (Util.extend должен помочь) и отправляете его в запрос.

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

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

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

А вы уверены что это будет кореллироваться с размерностью требуемой картинки? Размер мне нужно задавать свой.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

Сообщение freeExec » 22 мар 2017, 15:30

Я вообще не уверен чего вы хотите. И причем тут размер картинки, он от масштаба зависит и dpi желаемого.

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

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

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

Я могу задавать размер картинки и он у меня может варьироваться, соответственно, мой bbox может быть деформирован, то есть или по вертикали сжат/растянут или по горизонтали. То есть мне нужно соблюсти пропорции по заданной размерности картинки, что бы туда уместился заданный bbox.

Например мне верхний пример нужно уже получить для картинки 320х240

и получили растянутую по Х картинку, соответственно, уже не подходит данный bbox, и его нужно как то преобразовать, то есть вписать уже в заданные размеры картинки.

Вот такая как раз задача и стоит: Определить новый bbox из заданного по геообъектам и размерности картинки.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

Сообщение freeExec » 22 мар 2017, 16:16

Теперь понятно, тут вам надо углубиться в проекции, чтобы перевести пиксели в метры. На пальцах тут не расскажешь, лучше посмотрите как делает это leaflet.

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

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

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

Если использовать EPSG:3857, то всё довольно просто:
  • Определяете охват (bbox) искомой территории (в единицах измерение проекции, то есть в метрах)
  • Отношение сторон охвата и выходного изображения должны совпадать (поскольку 3857)
  • Передаёте вычисленный bbox, width и height сервису и получаете картинку
Пример квадратного изображения (можете проверить, что ширина bbox-а относится к его высоте как 1:1): пример.
Spatial is now, more than ever, just another column- The Geometry Column.

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

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

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

Ну вот хотелось бы как раз примерный алгоритм этих преобразований. Просто в голове много разного сумбура и я не могу это все структурировать. Поэтому и хотелось бы услышать мнение другое.

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

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

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

Denis Rykov писал(а):Если использовать EPSG:3857, то ...
И получается на конкретном примере как получить картинку 320х240 с сохранением пропорций?

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

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

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

Нужно отталкиваться от охвата, а не от размера картинки.
Spatial is now, more than ever, just another column- The Geometry Column.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

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

Одну сторону картинки задаёшь, а вторую высчитываешь из пропорции.
Высота картинки = Длинна картинки * Высота Ббокс / Ширина Ббокс, вроде так.

Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя