GeoServer发布TIF格式文件为地图服务WMS(一)

273 阅读2分钟

近期开始搞智慧农业项目,除了基本的农业传感器对接和软件开发设计外,我们还搞了台大疆农用无人机,在地块完成飞行后,通过大疆平台会将地块重建为二维地图,输出格式为地理数据常用tif格式的文件,初步想法是将tif文件发布为地图服务,作为遥感高清地图使用。

在下大学专业是地理信息与计算机相结合的学科,所以在这方面有所了解,对于处理这些数据也有些经验,大学期间用的ArcGIS软件,但是国外收费软件,想作为自己的地理数据服务器的话不现实,所以找到了这款开源的地理数据服务器软件。

GeoServer简介

GeoServer is an open source server for sharing geospatial data.

划重点:开源! 支持windows和linux操作系统,我服务器用的linux,下面介绍一下在windows的安装和使用。

GeoServer安装

我在linux系统上安装时遇到了java版本和GeoServer版本不兼容的问题,最后使用的是java17.0.6和GeoServer2.22.4完美运行的。

给大家演示的是windows系统下java17.0.7和GeoServer2.23.1版本,官网上下载安装包,按照提示设置端口后就完事了,安装成功后可以在应用程序中看到以下图标,然后点击Start,会出现第二个框框,会看到成功/失败信息。

image.png image.png

GeoServer启动

服务成功启动后,浏览器中输入localhost:port,port是安装时设置的端口,看到以下页面则安装成功,点击“Context Path”对应的“/geoserver”,看到第二个页面则大功告成!用户名:admin,密码:geoserver。

1690441225657.png

image.png

发布地图服务

我用的是大疆构建的tif文件。

新建工作空间

1690439803508.png

新建存储仓库-发布数据源

如果你只有一个tif文件,直接选择1.GeoTIFF,然后选择对应的文件。

如果你有多个tif文件,需要拼接起来,将多个tif文件放在一个文件夹下,选择2.ImageMosaic,然后选择此文件夹即可。

点击发布,最后点击保存就能在图层页面看到你保存的图层了,文件越大处理越慢。 1690440145124.png

1690440236419.png

1690440616871.png

1690440698357.png

图层预览

按照下图指引,最终就能看到我们成功的发布了我们自己的地图服务了!

1690440939344.png

1690441012252.png

前端访问

当我用openlayer去访问自己服务时,出现了跨域报错问题,寻觅一番找到了解决方案:geoserver跨域问题解决方案。 最终看到自己的自定义图层了!后面给大家讲下自定义图层样式的设置。

const ndviLayer = new TileLayer({ source: new TileWMS({ ratio: 1, url: 'http://localhost:8088/geoserver/test/wms', params: { FORMAT: format, VERSION: '1.1.1', STYLES: 'ndvi', LAYERS: 'test:NDVI', exceptions: 'application/vnd.ogc.se_inimage' } }) });

const map = new Map({ target: 'map', layers: [ ndviLayer ], view: new View({ projection: 'EPSG:4326', center: [118.9615777, 35.83509], zoom: 18 }) });

image.png

大功告成!