基于postgis函数计算矢量切片并通过mapbox和arcgis js 3.x加载

一、原理:

1.首先在前端依赖js类库算法将当前的地图范围(extent)和缩放级别(extent)自动计算出列号(x)、行号(y)、级别(z)。会计算出多个瓦片坐标(z,x,y)。

2.将这些瓦片坐标当做实参({z}、{x}、{y})依次循环传入到后台的服务(后台对应着三个形参)

3.将瓦片坐标转换为经纬度,因为只有这样才能依靠经纬度(4326)或平面坐标(3857)范围查询对应数据库的数据。

4.将查询出的数据转换为mvt格式(实际是一个二进制流格式数据)。

SELECT ST_AsMVT(tile,'lines',4096,'geom') tile  FROM(SELECT fs_name,ST_AsMVTGeom(geom,ST_Transform(ST_MakeEnvelope(%s,%s,%s,%s, 4326),3857),4096, 256, true) AS geom FROM  public.pipesectionmpa_4326_3857 ) AS  tile;

5.依次返回给前端,前端将数据绘制到地图上。另外,可以根据match对某个字段值进行分值设色。

基于postgis函数计算矢量切片并通过mapbox和arcgis js 3.x加载_第1张图片

基于postgis函数计算矢量切片并通过mapbox和arcgis js 3.x加载_第2张图片

6.通过arcgis js 3.27加载,有一点需要说明,通过arcgis js加载match这个不好使,目前不知道怎么回事。

基于postgis函数计算矢量切片并通过mapbox和arcgis js 3.x加载_第3张图片

你可能感兴趣的:(postgis)