- 首先要知道什么是geoserver?
Geoserver(迅速共享空间地理信息的系统软件)1
GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。GeoServer是社区开源项目,可以直接通过社区网站下载,详细请查看本文档末的资源表。
Geos server界面如下:
二、有关于GIS的一些概念
矢量数据:
专业的写法这里不再体现。个人理解矢量数据就是点,线,面形成的文件。最常见的是.shp文件,这种文件就是根据真是地理数据形成的文件数据。作为java程序员而已,无需知道如何制作.shp文件。只需要拿到.shp文件,能发布成图层展示就可以了。下面就是一个.shp文件形成的图层预览。
栅栏数据:
栅栏数据个人理解就是图片格式的数据。最常见的是tif格式的文件。
瓦片/切片:
这个概念,还是有必要体现一下官方的描述的:
瓦片地图金字塔模型是一种多分辨率层次模型,在统一的空间参照下,根据用户需要以不同分辨率进行存储与显示,形成分辨率由粗到细、数据量由小到大的金字塔结构。所表示的地理范围不变,金字塔越往底层所表示的地图信息越详细,比例尺越大。
首先确定地图服务平台提供的缩放级别的数量N,把缩放级别最高、地图比例尺最大的地图图片作为金字塔的底层,即第0层,并对其进行分块,从地图图片的左上角开始,从左至右、从上至下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第0层瓦片矩阵,在第0层地图图片的基础上,按第2x2像素合成一个像素的方法生成第1层地图图片,并对其进行分块,分割成与下一层相同大小的正方形地图瓦片,形成第1层瓦片矩阵,采用同样的方法生成第2层瓦片矩阵…直到第N-1层。
个人理解就是,把栅栏数据的tif图片分成无数个小的图片,每个分辨率都会生成自己的小图片。这些小图片就是切片。这样我们在缩放地图的时候,就可以加载不同的切片,展现不同的精度了。
三、地图下载器
本次使用的是太乐地图下载器
首先,为啥会用到地图下载工具呢?因为地图厂商只提供了项目所需的矢量数据,即.shp文件。.shp文件加载出来的图层就是一些线条和点,总不能让用户只看一些线条吧?所以,需要以电子地图作为底图图层,给用户展示。因此,需要用地图下载器,来下载电子地图。下载下来的数据是栅栏格式的,即图片类型的数据。
选择要展示的区域,然后下载数据:(见下图)
下载完成选择导出 tif文件
就可以得到对应的tif文件,因为数据可能过大,下载器转换tif格式时会自动将转为多个tif文件,下载的所有tif文件组合起来就是完整的地图数据。
四、地图引擎服务
地图引擎,从应用层层来看,就是一套提供了驱动和管理地理数据,实现渲染、查询等功能的一套函数库,所有的应用层软件只需要调用地图引擎提供的功能接口就能较容易的完成其功能。常见的地图引擎有Google Maps API、百度地图API、高德地图API、HereMap等。
离线的地图引擎有超图、ArGIS、geoserver等。之所以选择geoserver,是因为geoserver是开源的地图引擎,其相当于是一个开源版的ArGIS地图引擎。geoserver是用java实现的一个地图引擎服务,运行在tomcat里。
关于地图引擎中提供的几种地图服务,对于java程序员而言,最常用的应该就是wms服务,能给访问并展示栅栏图层和矢量图层,并做一些简单操作就足够了,所以这里不再深入研究各种服务类型的区别,几种服务类型的区别可参考文章:常见地图服务(WMS、WFS、WCS、TMS、WMTS)
五、geoserver发布图层过程–矢量图层发布
下载安装geo server 启动geo server(或者借助tomcat启动也可以)
默认登录账号 admin
默认登录密码 geoserver
- 首先创建一个工作空间,名称是唯一标识 命名需要有意义, uri可以随意填写,也是作为标识,但无实际意义。
由于需要上传shp文件和 tif文件 所以创建两个工作空间 分别存放
2。新建存储仓库
3.如下图 选择好对应的文件 和 名称 以及 存放的工作空间
4.上传成功后 即可看到对应的文件
5.我们需要添加图层:
因为地图时由多个图层叠加显示,因此我们需要添加图层以及图层组来实现
首先发布图层 (下图)
- 然后添加图层组
将上传的图层添加到图层组中, 上传完成后。务必要点击 生成边界
保存后,点击图层预览 就可以看到我们上传的对应的地图信息了。
后续需要哪一个区域 就重复第二步下的 操作。
- 添加完成后,进行图层预览,通过鼠标滚轮 就可以实现地图的缩放与放大,可以看到对应的数据
到此地图上传与预览完成。