问题

用GeoServer切好的瓦片布署到tomcat等容器中,然后使用Cesium等GIS引擎加载,由于Geoserver瓦片存储结构和常规瓦片目录差异较大,想要正确加载需要做额外的处理,一种方法是重建瓦片数据的目录结构,另一种是在代码层面处理,下面是使用Cesium加载的具体代码

代码

function loadGeoServerTiles(url, crs = '4326', format = 'png') {
  const layer = new Cesium.ImageryLayer(new Cesium.UrlTemplateImageryProvider({
    tilingScheme: new Cesium.GeographicTilingScheme(),
    url: url + `EPSG_${crs}_{z}/{sx}/{mx}_{my}.${format}`,
    customTags: {
      sx: function (imageryProvider, x, y, level) {
        // 1-1,2-2,3-2,4-3,5-3,6-4,7-4,8-5,
        const l = (level / 2 >> 0) + 1;
        const length = (level / 6 >> 0) + 1;
        const reverseY = imageryProvider.tilingScheme.getNumberOfYTilesAtLevel(level) - y - 1;
        return `${('' + (x >> l)).padStart(length, '0')}_${('' + (reverseY >> l)).padStart(length, '0')}`
      },
      mx: function (imageryProvider, x, y, level) {
        const length = 2 + (level / 6 >> 0) * 2;
        return ('' + x).padStart(length, '0')
      },
      my: function (imageryProvider, x, y, level) {
        const reverseY = imageryProvider.tilingScheme.getNumberOfYTilesAtLevel(level) - y - 1;
        const length = 2 + (level / 6 >> 0) * 2;
        return ('' + reverseY).padStart(length, '0')
      }

    },
    urlSchemeZeroPadding: {
      '{z}': '00',
    },
  }))
  return layer;
}
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐