Варианты отображения растров PostGIS в OpenLayers


12

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

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

Я видел много ссылок на GeoServer, но я не уверен, если это необходимо для этого проекта (я не совсем уверен, когда следует использовать GeoServer или нет).

Ответы:


13

Растры - это изображения , поэтому лучшим форматом будет формат изображения (png / jpg / etc). Geojson - хороший формат для векторов . Скажем, вы никогда не увидите, чтобы ваш профиль на Facebook был перенесен как чистый JSON. Конечно, возвращение URL-адреса изображения как json очень сильно отличается :)

Что касается обсуждения в формате jpeg против png против любого другого формата изображения, существует множество различных мнений по этому поводу . Что это сводится к тому , что некоторые форматы изображений без потерь в то время как другие являются потерями . Ваше решение зависит от того, что вы собираетесь делать с данными. Для анализа вы, вероятно, можете не терпеть убытки, но для показа вещей в Интернете вы могли бы.

Может ли PostGIS 2.0 генерировать изображения? Конечно. Посмотрите на раздел Raster output.

Это хорошая идея? Это действительно очень зависит от того, что вы делаете. Иногда генерация изображений может занимать действительно очень много времени, и вы хотите кэшировать их, чтобы не платить за их создание каждый раз, когда вы запрашиваете их через веб-среду. Единственное «кэширование», которое вы можете сделать на стороне PostGIS, - это сохранить результаты в другой таблице, а затем запросить таблицу, когда вам это нужно. Geoserver имеет всю инфраструктуру ( GeoWebCache ) для этого.

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


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

Да, вы можете загрузить его напрямую в openlayers из st_aspng, но это потребует дополнительной работы. Затем вы должны отслеживать bbox и указывать его при загрузке. Dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.html Поверьте мне, это длинный путь. Вам лучше позволить геосерверу или mapserver сделать это. Они возвращают вам WMS / WMTS, и вы используете две строки кода, чтобы добавить его в openlayers.
Раги Язер Бурхум

4

Mapserver имеет поддержку PostGIS растров и направления для базовой настройки приведены здесь (пункт 9.9).

В вашем случае вы должны настроить Mapserver для работы в качестве сервера WMS, чтобы он возвращал растры Postgis в виде обычных слоев WMS. Тогда почти тривиально добавить слои на карту OpenLayers с помощью объекта слоя WMS .

Такое решение, вероятно, является вашим лучшим вариантом, поскольку все оно основано на программном обеспечении OpenSource, это проверенный стек и не требует обширного промежуточного программного обеспечения. Все, что нужно mapserver - это веб-сервер (apache, который вы, вероятно, уже используете для php, в порядке), который может запускать сценарии cgi. Если производительность не является критической проблемой, тогда вы можете избежать использования кэша (плитки) и просто использовать mapserver для рендеринга слоев на лету каждый раз.

Если вы хотите кэшировать плитки, чтобы минимизировать нагрузку на сервер и сократить время отклика, рассмотрите возможность использования mapcache или tilecache . Mapcache - это младший проект Mapserver, но он должен превзойти все остальные кэши, поскольку он работает как модуль apache.

Для пользователей Ubuntu самый простой и легкий способ установить зависимости Mapserver - добавить Ubuntu GIS PPA в вашу систему.


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

Спасибо @unicoletti. Могу ли я использовать Mapserver, если я хочу создавать растры на основе запроса пользователей? Например, если я позволю пользователям указывать какую-либо область (в пределах определенной границы), это позволит мне сделать пространственный запрос этой области?
DJQ

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

1
@RagiYaserBurhum Я сравниваю mapcache с другими кешами. Статические плитки не являются строго кешем.
unicoletti

0

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

Вот ссылка на удивительный PDF , Geoserver на стероидах. Это проведет вас через различные форматы, их плюсы и минусы и некоторые основные настройки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.