使用 Cesium 在 Geoserver 上无法获取(找不到正确的 url)Tile 层

Posted

技术标签:

【中文标题】使用 Cesium 在 Geoserver 上无法获取(找不到正确的 url)Tile 层【英文标题】:Cant get (can't find proper url) for Tile's layer on Geoserver using Cesium 【发布时间】:2015-12-25 17:39:40 【问题描述】:

首先,我最近在使用 OpenLayers 和 Cesium。

我将我的地理服务器设置在:

localhost:8200/geoserver

在我的地理服务器上,我的工作区名称为:

SrbijaAdmGranice

并以名称分层到该工作区:

SRB_AdministrativneGranice_Level2_3909

问题是什么,当我尝试使用此代码添加 WMS 层 - WebMapServiceImageryProvider 时:

var viewer = new Cesium.Viewer('cesiumContainer');

// Add a WMS imagery layer
var imageryLayers = viewer.imageryLayers;
imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider(
    url : 'http://localhost:8200/geoserver/wms',
    layers : 'SrbijaAdmGranice:SRB_AdministrativneGranice_Level2_3909',
    parameters : 
    transparent : true,
    format : 'image/png'
    
));

我得到了很好的结果 - 图片如下: Result Picture

有什么问题。

问题是,我在我的 Geoserver 中访问了 Tile Layers,并在适当的网格集中找到了 SEED 切片。 当转到 Tile Layers 时,我会得到带有可能网格集的图层。 当我去预览时,我得到这个链接:

http://localhost:8200/geoserver/gwc/demo/SrbijaAdmGranice:SRB_AdministrativneGranice_Level2_3909?gridSet=EPSG:4326&format=image/png

结果如下: Result Picture

问题是,当我想添加 WebMapTileServiceImageryProvider 时,我在控制台中得到了无法获取 Tile 的结果。

这是我使用的代码:

imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
    url : 'http://localhost:8200/geoserver/gwc/service/wms?',
    layer : 'SrbijaAdmGranice:SRB_AdministrativneGranice_Level2_3909',
    style : 'default',
    format : 'image/jpeg',
    tileMatrixSetID : '4326', // is this a GridSet Atribute? 
    maximumLevel: 19,
    credit : new Cesium.Credit('U. S. Geological Survey')
    )
);

我的问题是 - 什么是正确的 URL 值? 以及其他参数。

我尝试了所有可能的组合。

请帮忙。

【问题讨论】:

我找到了解决方案。事实上,不需要任何并发症。我在 openlayers 3 上看到了一些关于平铺地图的示例。整个故事只是在一个参数 tiled : true, gridset = 'proper grid set' in parameters object var imageryLayers = viewer.imageryLayers; imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider( url : 'http://localhost:8200/geoserver/SrbijaAdmGranice/wms', layers : 'SrbijaAdmGranice:SRB_AdministrativneGranice_Level2_3909', parameters : transparent : true, format : 'image/png', tiled : true, gridSet : 'Serbia 3909' )); 您应该将您的评论更改为答案。 @emackey 怎么做? 只需复制并粘贴到答案框中。如果您愿意,您可以在发布后删除评论。 【参考方案1】:

我找到了解决方案。事实上,不需要任何并发症。我在 openlayers 3 上看到了一些关于平铺地图的示例。整个故事只是在一个参数 tiled 中:true, gridset = 'proper grid set' in parameters object

var imageryLayers = viewer.imageryLayers; imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider( url : 'http://localhost:8200/geoserver/SrbijaAdmGranice/wms', layers : 'SrbijaAdmGranice:SRB_AdministrativneGranice_Level2_3909', parameters :  transparent : true, format : 'image/png', tiled : true, gridSet : 'Serbia 3909'  ));

【讨论】:

以上是关于使用 Cesium 在 Geoserver 上无法获取(找不到正确的 url)Tile 层的主要内容,如果未能解决你的问题,请参考以下文章

cesium 结合 geoserver 实现地图属性查询(附源码下载)

cesium结合geoserver实现地图空间查询(附源码下载)

cesium结合geoserver利用WFS服务实现图层编辑(附源码下载)

Cesium通过加载geoserver发布的数据进行渲染水面(Primitive方式)

cesium加载geoserver 发布的wmts服务

vue+cesium+geoserver修改infobox要素属性