Определить bbox для WMS сервиса
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Определить bbox для WMS сервиса
Здравствуйте уважаемые форумчане!
Стоит такая задача: нужно просто картинкой отобразить один из растровых тейловых слоев и на нем один или несколько векторных объектов(по определенному фильтру слоя).
Использую geoserver, для хранения геоданных и leaflet js на клиенте для их отображения.
Одно из решение "красивых" решений это использовать WMS с несколькими слоями и фильтрами для векторных.
Все круто, но нужно указать bbox, причем мне нужно что бы как раз вписать отфильтрованные геообъекты в размер картинки(и что бы хотя бы какую то "рамку" оставить, что бы не впритык в картинке было, то есть удалить немного), который имеет разный размер(то есть задается и высота и ширина)?
Таким образом входные данные такие:
- размерность картинки
- bounding box геообъектов
На выходе нужно получить необходимый bbox для WMS сервиса.
Вроде бы не так и сложно и все инструменты есть в самом leaflet, но как конкретно определить необходимый bbox, исходя из пропорции картинки и еще "удалить" вписанные геообъекты.
Спасибо за любую помощь
PS: И конечно самый красивый вариант был бы использовать процессинг WPS - то есть на вход посылать слои и фильтры для них и размерность картинки, а он бы мне возвращал уже заданную картинку. Но там надо делать запрос составным и нет описания боле мене подробного по всем его функциям, а так методом тыка ен очень весело, да еще в добавок когда в построителе начинаешь делать составные процессы они заполняются не тем что ты настроил, а какой то пустышкой. Поэтому эксперименты с составными вобще все в ручную через какой нить клиент типа curl или прямо из вэб-приложения. Поэтому про него придется забыть, но если у кого то был опыт его использования в подобном плане, то был бы очень раз помощи.
Стоит такая задача: нужно просто картинкой отобразить один из растровых тейловых слоев и на нем один или несколько векторных объектов(по определенному фильтру слоя).
Использую geoserver, для хранения геоданных и leaflet js на клиенте для их отображения.
Одно из решение "красивых" решений это использовать WMS с несколькими слоями и фильтрами для векторных.
Все круто, но нужно указать bbox, причем мне нужно что бы как раз вписать отфильтрованные геообъекты в размер картинки(и что бы хотя бы какую то "рамку" оставить, что бы не впритык в картинке было, то есть удалить немного), который имеет разный размер(то есть задается и высота и ширина)?
Таким образом входные данные такие:
- размерность картинки
- bounding box геообъектов
На выходе нужно получить необходимый bbox для WMS сервиса.
Вроде бы не так и сложно и все инструменты есть в самом leaflet, но как конкретно определить необходимый bbox, исходя из пропорции картинки и еще "удалить" вписанные геообъекты.
Спасибо за любую помощь
PS: И конечно самый красивый вариант был бы использовать процессинг WPS - то есть на вход посылать слои и фильтры для них и размерность картинки, а он бы мне возвращал уже заданную картинку. Но там надо делать запрос составным и нет описания боле мене подробного по всем его функциям, а так методом тыка ен очень весело, да еще в добавок когда в построителе начинаешь делать составные процессы они заполняются не тем что ты настроил, а какой то пустышкой. Поэтому эксперименты с составными вобще все в ручную через какой нить клиент типа curl или прямо из вэб-приложения. Поэтому про него придется забыть, но если у кого то был опыт его использования в подобном плане, то был бы очень раз помощи.
Последний раз редактировалось kasik 20 мар 2017, 18:23, всего редактировалось 1 раз.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Re: Определить bbox для WMS сервиса
Или это получается нетривиальная задача?
Хотя бы какая последовательность действий должна быть...
Хотя бы какая последовательность действий должна быть...
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Re: Определить bbox для WMS сервиса
Может какие пояснения нужны, может описал сумбурно, сам просто новичок относительно в этой теме. Ну не может быть что никто из знатоков даже сказать нечего?)
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Определить bbox для WMS сервиса
Покажите на картниках, что у вас получилось, и что вы хотите. bbox высчитывается автоматически, а вы пытаетесь чего-то вручную.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Re: Определить bbox для WMS сервиса
Вот пример.
Никакой речи об автоматике не говорится в документации, по крайней мере. И эти параметры считаются обязательными.
Никакой речи об автоматике не говорится в документации, по крайней мере. И эти параметры считаются обязательными.
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Определить bbox для WMS сервиса
Что-то всё равно не понятно в чём затык. Берёте свои объекты, вычисляете для них охватываемый bbox (Util.extend должен помочь) и отправляете его в запрос.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Re: Определить bbox для WMS сервиса
А вы уверены что это будет кореллироваться с размерностью требуемой картинки? Размер мне нужно задавать свой.
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Определить bbox для WMS сервиса
Я вообще не уверен чего вы хотите. И причем тут размер картинки, он от масштаба зависит и dpi желаемого.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Re: Определить bbox для WMS сервиса
Я могу задавать размер картинки и он у меня может варьироваться, соответственно, мой bbox может быть деформирован, то есть или по вертикали сжат/растянут или по горизонтали. То есть мне нужно соблюсти пропорции по заданной размерности картинки, что бы туда уместился заданный bbox.
Например мне верхний пример нужно уже получить для картинки 320х240
и получили растянутую по Х картинку, соответственно, уже не подходит данный bbox, и его нужно как то преобразовать, то есть вписать уже в заданные размеры картинки.
Вот такая как раз задача и стоит: Определить новый bbox из заданного по геообъектам и размерности картинки.
Например мне верхний пример нужно уже получить для картинки 320х240
и получили растянутую по Х картинку, соответственно, уже не подходит данный bbox, и его нужно как то преобразовать, то есть вписать уже в заданные размеры картинки.
Вот такая как раз задача и стоит: Определить новый bbox из заданного по геообъектам и размерности картинки.
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Определить bbox для WMS сервиса
Теперь понятно, тут вам надо углубиться в проекции, чтобы перевести пиксели в метры. На пальцах тут не расскажешь, лучше посмотрите как делает это leaflet.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Определить bbox для WMS сервиса
Если использовать EPSG:3857, то всё довольно просто:
- Определяете охват (bbox) искомой территории (в единицах измерение проекции, то есть в метрах)
- Отношение сторон охвата и выходного изображения должны совпадать (поскольку 3857)
- Передаёте вычисленный bbox, width и height сервису и получаете картинку
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Re: Определить bbox для WMS сервиса
Ну вот хотелось бы как раз примерный алгоритм этих преобразований. Просто в голове много разного сумбура и я не могу это все структурировать. Поэтому и хотелось бы услышать мнение другое.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 27 янв 2017, 17:02
- Репутация: 0
Re: Определить bbox для WMS сервиса
И получается на конкретном примере как получить картинку 320х240 с сохранением пропорций?Denis Rykov писал(а):Если использовать EPSG:3857, то ...
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Определить bbox для WMS сервиса
Нужно отталкиваться от охвата, а не от размера картинки.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Определить bbox для WMS сервиса
Одну сторону картинки задаёшь, а вторую высчитываешь из пропорции.
Высота картинки = Длинна картинки * Высота Ббокс / Ширина Ббокс, вроде так.
Высота картинки = Длинна картинки * Высота Ббокс / Ширина Ббокс, вроде так.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей