矢量切片(mapbox pbf)自定义服务搭建

本人之前使用的矢量瓦片服务是用geoserver发布而来,详细步骤可以查阅:http://www.kingpika.top:5599/post/58

这种方式有一个问题就是当你的数据库新添了一个表后你必须用geoserver发布一下才能使用它的矢量瓦片,因为业务需要,数据库中可能会动态添加进表,要动态的产生矢量服务,在此找到如下解决方案:

一、服务端搭建:

1.首先从该地址下载服务端代码,https://github.com/LawAlias/postile,这里使用的是sanic框架,需要python3环境。

下载完毕之后cd进文件夹内,运行python3 setup.py build,成功之后运行python3 setup.py install,可能会出现sanic版本错误,按照指示安装指定版本的sanic即可。大问题可能是提示你需要c++的运行环境,点击这里下载安装即可:https://pan.baidu.com/s/1A4bHLYY66H3SCF75-NCbkA提示一下需要4g的硬盘空间噢。

    安装postgresql 2.4及以上版本,安装postgis扩展,并导入需要发布的数据。

    2.环境安装完毕后,修改代码,主要是数据库连接字符:

13212811-dd9029773a3556a9.png

也可以在启动时输入数据库连接参数进行修改,在这就先用改代码的方法,将上述字符改成对应的账户名、密码、ip、端口号、数据库名称。

    3.启动:cd到postile文件夹下,输入:

13212811-d2aa59d73ce3118d.png

其中—cors的意思是允许跨域,否则就会出现跨域问题。

同理输入如下参数可进行相应配置:

13212811-d3802fcc8ce62d34.png

例如你要在服务端和生产环境启动,可再输入—listen 0.0.0.0 —listen-port 3351 —debug False

启动完成之后在前端调用。

二、前端调用

      1.mapbox调用:

        在这重点要把style文件写对:

13212811-f3f800354f80f493.png

    其中interline即为需要调用的图层名称,参数field为返回的数据中包含的字段,多个字段用,隔开,默认返回全部字段。

示例地址:http://www.kingpika.top:3392/mapbox/mapboxstyle.html

2.leaflet加载效果奇差:http://www.kingpika.top:3392/leaflet/vectortiles.html

3.maptalks因为使用了mapbox-gl的原因,加载效果和mapbox差不多:http://www.kingpika.top:3392/maptalks/demo/

4.leaflet-mapboxGL:这里使用了mapboxGL和leaflet结合的方式:http://www.kingpika.top:3392/leaflet-mapboxGL/examples/basic.html

转载于:https://www.jianshu.com/p/b9b3d54612db

猜你喜欢

转载自blog.csdn.net/weixin_34409822/article/details/91206080