【WebGIS初学到入职】(六)用OpenLayers加载GeoServer发布的WMS服务

本文介绍了如何在Ubuntu上配置PostGIS和GeoServer,并通过OpenLayers展示WMS图层。作者提供了新建影像图层和瓦片图层的代码示例,并展示了不同类型的图层加载效果。此外,还提及了原始数据处理,如从OSM获取数据并用QGIS转换。
摘要由CSDN通过智能技术生成

一、前言

我在学习过程中,是租了一台服务器在上面搭建配置相关的服务,然后通过QGIS向PostgreSQL数据库添加数据,然后有向GeoServer中添加图层,之后用OpenLayers加载GeoServer根据WMS规范发布的图层。

大家可以自己在本地搭建GeoServer,然后直接向里面添加图层数据,也可以自己租一台服务器来弄。

可选准备:
【配置PostGIS】Ubuntu20.04+PostgreSQL+pgAdmin4+PostGIS
【配置Geoserver】Ubuntu 20.04+JDK 8+Tomcat 9+Geoserver
大概流程


二、新建WMS图层

//新建影像图层
var wmsLayer = new ol.layer.Image({
  visible: true,
  source: new ol.source.ImageWMS({
  	ratio: 1,
  	url: "http://www.csw.ink:8080/geoserver/webgis/wms",
	params: {
	   'FORMAT': 'image/png',
	   'VERSION': '1.1.0',		//WMS服务版本号
	   'LAYERS': 'webgis:gdut',	//图层的名称
	   'STYLES': '',
	   }
   })
});

或者:

//新建瓦片图层
var wmsLayer = new ol.layer.Tile({
    visible: true,
    source: new ol.source.TileWMS({
        url: "http://www.csw.ink:8080/geoserver/webgis/wms",
        params: {
            'FORMAT': 'image/png',
            'VERSION': '1.1.0',			//WMS服务版本号
            'tiled': true,
            'LAYERS': 'webgis:gdut',	//图层的名称
            'STYLES': '',
          }
    })
});

两者的区别,可以在放大缩小地图时,其加载过程得到动画,或是查看后台请求服务中可以看出端倪:

影像数据:
在这里插入图片描述

瓦片数据:
在这里插入图片描述

三、完整代码

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebGIS平台</title>
    <link rel="stylesheet" href="/css/ol.css">
    <script src="/ol.js"></script>
    <script src="/map.js"></script>
    <script type="text/javascript">
        window.onload = function () {map();}
    </script>
    <style>
    #map{
        position: fixed;
        width: 100%;
        height: 100%;
      }
    </style>
</head>
<body>
    <!-- 这里是Map容器,放地图的 -->
    <div id="map"></div>
</body>
</html>
/*  
*   map.js
*/

var map1;
//===============================调用wms
var wmsLayer = new ol.layer.Image({
  visible: true,
  source: new ol.source.ImageWMS({
  ratio: 1,
  url: "http://www.csw.ink:8080/geoserver/webgis/wms",   //这里填的是我自己服务器的地址
  params: {
   'FORMAT': 'image/png',
   'VERSION': '1.1.0',
   'LAYERS': 'webgis:gdut',
   'STYLES': '',
}
})
});

// var wmsLayer = new ol.layer.Tile({
//     visible: true,
//     source: new ol.source.TileWMS({
//         url: "http://www.csw.ink:8080/geoserver/webgis/wms",
//         params: {
//             'FORMAT': 'image/png',
//             'VERSION': '1.1.0',
//             'tiled': true,
//             'LAYERS': 'webgis:gdut',
//             'STYLES': '',
          
//         }
//     })
// });


function map(){
map1 = new ol.Map({
    target: 'map', //地图容器div的id
    loadTilesWhileInteracting: true,
    layers: [],
    view: new ol.View({
        center: [12622513, 2636878], //地图初始中心点
        zoom: 15,  //地图初始显示级别
        // minZoom: 1,
        maxZoom: 18
    }),
    controls: ol.control.defaults({}).extend([])
});

// 开始加入图层啦!
map1.addLayer(wmsLayer);
};


效果如图:
在这里插入图片描述

四、最后

上面展示的只是最简单的WMS请求格式,还可以设置请求的影像的大小宽度透明度等等,(但是我现在还没去研究),后面搞懂了再更新吧。QAQ
这篇文章还涉及到原始数据的获得,就比如上面那张图,我就是从OSM官网下载的,然后通过QGIS软件,将其从.osm格式转换为.json格式。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值