Подавать плитки GeoServer в формате XYZ
Я использую GeoServer и начальные тайлы на моем сервере. Плитки созданы успешно, но я не знаю, по какому шаблону следует структура каталогов... (т.е. .../EPSG_4326_05/0_0/00_06.png) Я хочу использовать плитки в приложении OpenLayers, и там я хочу использовать Источник OSM, использующий XYZ-шаблон, который обычно используется в качестве шаблона URL для размещения листов. Есть ли способ сообщить геосерверу, что он должен создавать плитки со структурой XYZ?
2 ответа
Круто, у меня был тот же вопрос час назад. Здесь идет резюме.
Замечания:
Что ОП называет
XYZ
Формат - это формат, популяризируемый Google Maps, где глобальная / базовая карта разделяется на стороне сервера и используется в качестве листов в{z}/{x}/{y}
формат, в котором масштаб, широта и долгота представлены внутри [1]. По сути, название службы, предоставляющей такой "формат",Tile Map Service (TMS)
[2], и GeoServer предоставляет такую услугу [3].XYZ
это просто имя класса в OpenLayers, используемого для доступа кTMS
сервер [4].
При этом, вот как вы должны сделать, чтобы служба TMS работала между вашим GeoServer и OpenLayers:
- Проверьте, имеет ли GeoServer ' Caching Defaults GeoWebCache и включена ли служба TMS. В настоящее время я использую GS-2.14.3, и они включены по умолчанию.
С включенными GWC и TMS вы должны увидеть свои растровые слои, перечисленные в http://localhost:8080/gwc/service/tms/1.0.0
(или вообще <geoserver-path>/gmc/service/tms/1.0.0
).
Затем вам просто нужно вызвать один из этих TileMaps из OpenLayer:
var tileURL = "<tilemap-from-gwc-list-above>" + "/{z}/{x}/{-y}.jpg" // or '.png'
var map = new ol.Map(<your params here>);
var bm = new ol.layer.Tile({
source: new ol.source.XYZ({
url: tileURL
})
})
map.addLayer(bm)
Надеюсь, это поможет. Приветствия.
Refs:
- Формат Google/TMS: https://www.maptiler.com/google-maps-coordinates-tile-bounds-projection/
- Спецификация TMS: https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification
- TMS в Leaflet: https://leafletjs.com/examples/wms/wms.html
- TMS / XYZ OpenLayers: https://openlayers.org/en/latest/apidoc/module-ol_source_XYZ-XYZ.html
Это может быть слишком поздно, вот мой XYZ URL для слоя геосервера:
http://localhost/gwc/tms/1.0.0/gis:service@EPSG%3A900913@png/{z}/{x}/{-y}.png
Geoserver будет кэшировать плитки автоматически при запросе через URL.
GeoServer (на самом деле GeoWebCache) может предоставить несколько конечных точек, которые могут сервировать плитки.
Ни один из них не использует так называемую систему XYZ (потому что это не стандарт), но OpenLayers имеет Tiled Layer, который может обрабатывать серверы TMS и WMTS с использованием источника TileImage.