以 XYZ 格式提供 GeoServer 切片

Mar*_*uer 6 tiles geoserver openlayers-3

我在我的服务器上使用 GeoServer 和种子切片。平铺已成功创建,但我不知道目录结构遵循哪种模式...(即.../EPSG_4326_05/0_0/00_06.png)我想在 OpenLayers 应用程序中使用平铺,并且我想使用OSM 源使用 XYZ 模式,该模式通常用作图块服务的 URL 模式。有没有办法告诉地理服务器它应该创建具有 XYZ 结构的图块?

Bra*_*ndt 7

酷,一小时前我也有同样的问题。总结如下。

笔记:

OP 所称的XYZ格式是 Google 地图流行的格式,其中全局/底图是服务器端分割的,并以{z}/{x}/{y}在内部表示缩放、纬度和经度的格式作为图块使用 [1]。实际上,提供这种“格式”的服务的名称是Tile Map Service (TMS)[2],并且GeoServer确实提供了这种服务[3]。 XYZ只是 OpenLayers 中用于访问服务器的类的名称TMS[4]。

话虽这么说,以下是在 GeoServer 和 OpenLayers 之间运行 TMS 服务的方法:

  • 检查您的 GeoServer 的缓存默认值是否启用了 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)。

然后,您只需从 OpenLayer 调用这些TileMap之一:

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)
Run Code Online (Sandbox Code Playgroud)

希望有帮助。干杯。


参考文献:

  1. Google/TMS 格式:https://www.maptiler.com/google-maps-coordinates-tile-bounds-projection/
  2. TMS 规范: https: //wiki.osgeo.org/wiki/Tile_Map_Service_Specification
  3. Leaflet 中的 TMS:https://leafletjs.com/examples/wms/wms.html#tms-in-leaflet
  4. TMS/XYZ OpenLayers:https://openlayers.org/en/latest/apidoc/module-ol_source_XYZ-XYZ.html


Ano*_*azo 5

这可能已经太晚了,这是我的地理服务器层的 XYZ URL:

http://localhost/gwc/service/tms/1.0.0/gis:service@EPSG%3A900913@png/{z}/{x}/{-y}.png
Run Code Online (Sandbox Code Playgroud)

当您通过 URL 请求时,Geoserver 将自动缓存切片。


Ian*_*ton 0

GeoServer(实际上是GeoWebCache)可以提供许多可以服务器切片的端点。

这些都没有使用所谓的 XYZ 系统(因为这不是标准),但OpenLayers有一个 Tiled Layer,可以使用TileImage 源处理 TMS 和 WMTS 服务器。