概述:
本文将介绍如何基于java+postgis进行矢量切片的制作;
矢量切片介绍:
1.矢量切片是一种利用协议缓冲技术的紧凑的二进制格式用来传递信息。当渲染地图时矢量切片使用一系列存储的内部数据进行制图。被组织到矢量切片的图层(比如道路、水、区域),每一层都有包含集合图形和可变属性的独立要素(例如姓名、类型等等)。通俗的说,就是将矢量数据以建立金子塔的方式,然后在前段根据显示需要按需请求不同的矢量瓦片数据进行Web绘图。
2.常见格式
GeoJson、TopoJson,pbf,mvt等
Postgis矢量切片
postgis是基于PostgreSql的空间扩展。提供了很多的空间分析和操作函数,9.6以上postgresql+2.4postgis,提供了两个矢量切片的空间函数:ST_AsMVT,ST_AsMVTGeom(mapbox格式);
ST_AsMVT:返回一个MapBox矢量瓦片的一组行(返回Byte数组);
bytea ST_AsMVT(anyelement set row);(任意元素集合行,数据来源表)
bytea ST_AsMVT(anyelement row, text name);
bytea ST_AsMVT(anyelement row, text name, integer extent);
bytea ST_AsMVT(anyelement row, text name, integer extent, text geom_name);
row:一个几何列的行数据
name:图层名称
extent:按照规范定义的平铺坐标空间中的平铺范围。默认4096
geom_name:指定行数据列里面的空间字段名称,默认是找到的第一个空间字段
ST_AsMVTGeom:将几何图形转换成MAPBOX矢量瓦片的坐标空间。
geometry ST_AsMVTGeom(geometry geom, box2d bounds, integer extent=4096, integer buffer=256, boolean clip_geom=true);
geom:指定需要变换的几何字段
bounds:不带缓冲区的几何边界
extent:按照规范定义的平铺坐标空间中的平铺范围。默认4096
buffer:平铺坐标空间中任意修剪几何图形的缓冲区距离,默认256
clip_geom:用于控制几何图形是否被裁剪活编码,默认true
测试sql:
SELECT ST_AsMVT(q, ‘test’, 4096, ‘geom’) FROM (SELECT 1 AS c1,
ST_AsMVTGeom(ST_Geo