Параметри відображення растров PostGIS у OpenLayers


12

Це питання схоже на попереднє запитання про відображення векторних даних на веб-карті. Я хочу мати базовий веб-інтерфейс, який використовує OpenLayers і може відображати растрові дані, які зараз перебувають у PostGIS, використовуючи базову карту, таку як Google. Я встановив PostGIS2.0 з растровою бібліотекою і бачу з документації, що є кілька варіантів виведення даних, таких як JPEG, GeoTIFF та PNG. Чи є їх рекомендований формат для використання?

Для відображення векторних даних я в даний час використовую JavaScript для надсилання координат з браузера користувача на мій сервер, а потім виконання запиту за допомогою PHP / SQL на PostGIS. Потім результати повертаються як GeoJSON, які можуть бути накладені на базовій карті. Мені було цікаво, чи можна застосувати подібний підхід із використанням растрових, але я не знаю, який растровий формат найкращий, чи є якісь інші обмеження, які я повинен розглянути.

Я бачив багато посилань на GeoServer, але не впевнений, чи потрібно це для цього проекту (я не зовсім впевнений, коли GeoServer слід використовувати чи ні).

Відповіді:


13

Растри - це зображення , тому найкращим форматом буде формат зображення (png / jpg / тощо). Geojson - це хороший формат для векторів . Ви ніколи не побачите, скажімо, фотографію вашого профілю у Facebook, щоб перевезти назад як чистий json. Звичайно, повернення URL-адреси до зображення як json дуже сильно відрізняється :)

Що стосується jpeg vs png проти будь-якої іншої дискусії щодо формату зображення, то існує багато різних думок з цього приводу . Це зводиться до того, що деякі формати зображень без втрат, а інші - втратні . Ваше рішення залежить від того, що ви збираєтеся робити з даними. Для аналізу ви, мабуть, не терпите втрати, але для показу речей в Інтернеті ви б хотіли.

Чи може PostGIS 2.0 генерувати зображення? Звичайно. Подивіться на розділ виведення растра.

Це гарна ідея? Це дуже насправді дуже залежить від того, що ти робиш. Іноді генерування зображень може зайняти дійсно дійсно дуже багато часу, і ви хочете кешувати їх, щоб не платити ціну їх генерації щоразу, коли ви запитуєте їх через веб-середовище. Єдине "кешування", яке ви можете зробити на стороні PostGIS - це зберегти результати в іншій таблиці, а потім запитувати таблицю замість того, коли вам це потрібно. Geoserver має цілу інфраструктуру ( GeoWebCache ) для цього.

Вам потрібен GeoServer, напевно, ні - але це набагато полегшує життя, коли у вас є це посереднє програмне забезпечення, яке викриває всі ваші дані за допомогою веб-сервісів OGC , робить кешування , стилізацію векторів і растрових ще багато інших речей .


Я розумію, як генерувати зображення за допомогою PostGIS - те, що я намагаюся зрозуміти, це найкращий спосіб завантаження його у Openlayers. Наприклад, якщо я використовую ST_AsPNG () - мені все одно потрібно буде визначити верхні та нижні координати, де це зображення розміщене. Я думав, що може бути акуратним способом повернення автономного зображення, яке я можу безпосередньо завантажувати у відкриті шари (окрім використання геосервера).
djq

Так, ви можете завантажувати його безпосередньо в openlayers з st_aspng, але це вимагатиме додаткової роботи. Тоді вам доведеться відслідковувати bbox і конкретизувати його, коли ви завантажуєте його dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.html Повірте, це довгий шлях. Вам краще дозволити це зробити геосервер або сервер картографій. Вони повертають вам WMS / WMTS, і ви використовуєте два рядки коду, щоб додати його до відкритих верств.
Рагі Ясер Бурхум

4

Mapserver має підтримку растрових файлів після вказівки та тут наведено вказівки щодо базової настройки (пункт 9.9).

У вашому випадку ви б встановили Mapserver працювати як WMS-сервер, щоб він повертав растри Postgis як звичайні шари WMS. Тоді майже тривіально додавати шари у вашу карту OpenLayers за допомогою об’єкта шару WMS .

Таке рішення є, мабуть, найкращим варіантом, оскільки все засноване на програмному забезпеченні OpenSource, це перевірений стек і не потребує великого середнього програмного забезпечення. Всі потреби в сервері mapper - це веб-сервер (апач, який ви, ймовірно, вже використовуєте для php - це нормально), який може запускати cgi-скрипти. Якщо продуктивність не є критичною проблемою, то ви можете уникнути використання кеша (плитки) і просто мати, щоб сервер mapper кожен раз виводив шари на льоту.

Якщо ви хочете кешувати плитки, щоб мінімізувати завантаження сервера та покращити час відгуку, розгляньте використання mapcache або tilecache . Mapcache - це проект молодшої сестри Mapserver, але він повинен перевершити всі інші кеші, оскільки він працює як модуль apache.

Для користувачів Ubuntu найпростіший простий спосіб встановити залежності Mapserver - додати Ubuntu GIS PPA до вашої системи.


Mapserver, безумовно, чудова альтернатива від GeoServer (я використовую це для деяких інших проектів). Як правило, я вибираю геосервер для своїх клієнтів, оскільки він має простий у користуванні інтерфейс. Тим не менш, я хотів би зазначити, що кеші керування плитки обслуговують статичний вміст, і будь-яке рішення, засноване на nginx (або будь-якому іншому сервері, що не блокує), було б набагато швидшим, ніж будь-яке рішення apache - або в режимі ізоляції на основі процесу, або в потоковому режимі.
Рагі Ясер Бурхум

Дякую @unicoletti. Чи можу я використовувати Mapserver, якщо хочу генерувати растри на основі запитів користувачів? Наприклад, якщо я дозволю користувачам вказати будь-яку область (у межах певної межі), це дозволить мені зробити просторовий запит цієї області?
djq

@celenius Mapserver і GeoServer дозволять вам це зробити.
Рагі Ясер Бурхум

1
@RagiYaserBurhum я порівнюю картографічний кеш з іншими кешами. Статична плитка не є строго кажучи кешем.
unicoletti

0

Все залежить. Розмір зображення, кешування, доступні бібліотеки (наприклад, деякі фірмові драйвери jp2k).

Ось посилання на дивовижний PDF- файл, геосервер на стероїди. Це допоможе вам отримати різні формати, їх плюси і мінуси та деякі основні настройки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.