GeoServer发布服务+跨域及401问题+Cesium调用WMS/WFS服务

目录

GeoServer发布服务

Cesium请求服务

解决跨域问题

 401报错问题


GeoServer发布服务

1.打开开始菜单,找到安装的GeoServer文件夹,点击Start GeoServer开启GeoServer,出现下图说明启动成功。

 2.点击开始菜单中GeoServer Web Admin Page,或浏览器手动输入localhost:自己设置的端口号/geoserver/web,登录自己的账号。

3. 新建一个工作区。工作区->>添加新的工作区->>填写工作区名称和命名空间(随便填)->>保存,也可以设置成默认工作区。

4. 添加新的数据。数据存储->>添加新的数据存储,本文将要发布一个shp数据,因此选择 Directory of spatial files (shapefiles) 或者Shapefile,一个是文件夹,一个是文件。

5. 选择刚刚新建的工作区,并给数据取一个名称,点击浏览...选择shp文件目录,字符集选择UTF-8,保存。(注意:网上说的解决中文乱码问题字符集选择GBK或GB2312,我试验了都不行)

6. 发布服务。发布->>从数据中计算->>Compute from native bounds->>保存。

7. 图层预览Layer Preview可以查看发布的服务,点击OpenLayers,下图是我发布的数据,WMS服务。

 8.GeoServer的地图服务支持很多格式,为便于后续Cesium获取要素属性数据,这里选择WFS服务的GeoJSON,可以在地址栏看到想要请求WFS服务的url。

Cesium请求服务

1. WFS服务

export function wfsServiceApi(viewer) {
  return http({
    methods: "GET",
    url: "http://localhost:8090/geoserver/Cesium/ows",
    params: {
      service: "WFS",
      version: "1.0.0",
      request: "GetFeature",
      typeName: "Cesium:Export_Output", //图层名称
      outputFormat: "application/json",
    },
  })
    .then((res) => {
      const data = res.data;
      const sourcePromise = Cesium.GeoJsonDataSource.load(data);
      sourcePromise.then(function (dataSource) {
        viewer.dataSources.add(dataSource);
      });
    })
    .catch((error) => {
      console.log("请求失败,失败信息:" + error);
    });
}

2. WMS服务 

let wmsImageryProvider = new Cesium.WebMapServiceImageryProvider({
    url: "http://localhost:8090/geoserver/wms",
    layers: "Cesium:Export_Output",
    parameters: {
        service: "WMS",
        format: "image/png",
        transparent: true,
    },
});
viewer.imageryLayers.addImageryProvider(wmsImageryProvider);

解决跨域问题

Cesium按上述步骤请求服务会出现跨域问题,一开始我安装的是2.20.3版本,启动时报错failed to bind to 0.0.0.0/0.0.0.0:8080,但GeoServer Web Admin Page可以打开并且发布成功,按照网上注释web.xml或下载jar包都不能解决跨域问题,并且GeoServer网页报错503。

卸载后重新安装2.13.0版本,启动正常不报错,找到安装目录GeoServer 2.13.0\webapps\geoserver\WEB-INF下的web.xml文件,打开后搜索CORS,将搜索到的两处代码解开注释,重启GeoServer,跨域问题解决。

 401报错问题

解决完跨域问题后,cesium还是加载不出发布的地图服务,打开控制台发现401报错,将链接复制到浏览器发现需要登录。

 

 点击Security的Authentication,删除Filter Chains中名为gwc的过滤器,保存。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值