开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片
项目成果展示(所有项目文件都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵)。
01:中国地图:http://test.sharegis.cn/mapbox/html/3china.html
02:德国-德累斯顿市:http://test.sharegis.cn/mapbox/html/6germany.html
1.PostGIS简介
PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。我们项目中主要使用它来保存原始矢量数据。
2.Geoserver简介
GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。我们在GeoServer的基础上添加vector Tiles插件进行矢量切片。
3.数据准备
数据一:中国基础地理数据,格式为wgs84的shp数据:https://pan.baidu.com/s/16hN5znypnHR-Qw-BAejOoA
数据二:德国-德累斯顿市详细数据,格式为wgs84的shp数据:https://pan.baidu.com/s/1iiN4pntpNwN0W-T-831uJQ
这套数据来源于openstreetmap的数据,openstreetmap免费提供全球的空间数据,但是存在一点问题就是只能一块一块下载,拼接比较麻烦,我这套数据来自于geofabrik上共享的处理过后地理数据,感兴趣的大家可以看一下。
4.数据导入PostGIS中
本示例讲一下将中国基础shp文件批量导入PostGIS数据库。
1.打开安装目录下打开postGIS导入程序。
2.连接数据库,
3.加载shp数据,导入文件路径不可以含有中文,并且导入的时候注意SRID值的设定,SRID对应地理坐标系的代码,我们使用的数据是WGS84坐标系对应的SRID值是4326,这个一定要注意,出错的话可能导致数据偏移等问题。
5.Geoserver发布
1.打开Geoserver web站点,新建一个工作区如下,
2.新建数据源,将PostGIS数据接入。
3.输入数据库连接参数
4.点击发布图层。并输入参考坐标系以及边框,一般情况点蓝色链接便可自动生成。
5.继续发布其他图层,
6.将各个图层合起来生成一个图层组。并设置切片缓存格式。
勾选application/x-protobuf;type=mapbox-vector矢量切片格式,切片为.dbf格式的文件,压缩率更好。适合网络传输。选择默认切片格式EPSG:900913,因为Mapbox只支持WGS84 Web 墨卡托投影投影,这里注意一下。
7.矢量切片的预览
8.为了加快地图访问速度,我们可以对矢量切片进行缓存。
可以选择切片等级以及切片的线程数。到此整个矢量切片的过程完成了。可在切片文件夹中查看成果文件。
6.遇到的疑惑
1.我没找到GeoServer矢量切片中对图层组中单个图层在某一级别下控制不对其进行切片的功能,因为很多图层在低等级下是不需要进行显示的,我们一刀切必定会带来数据的冗余。
2.我使用GeoServer2.13.0版本进行矢量切片缓存的时候,切片只能切出部分数据,我不知什么原因,后期可以通过循序请求切片的方式进行切片的缓存。
7.总结
这一篇主要讲了一下数据的存储,以及矢量切片的生成,下一篇我会讲一下我们本套教程的核心Mapbox的使用。
待续。。。。。。。。。。。。。。。。。。。。。
作者:ATtuing
出处:http://www.cnblogs.com/ATtuing
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。