搭建可离线的精美矢量切片地图服务

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版本进行矢量切片缓存的时候,切片只能切出部分数据,我不知什么原因,后期可以通过循序请求切片的方式进行切片的缓存。

作者:ATtuing

出处:http://www.cnblogs.com/ATtuing

 

上一篇:java-如何使用jOOQ在PostGIS中的面内选择点?


下一篇:php-Postgis-st_distance