Mybatis读取PostGIS生成矢量瓦片实现大数据量图层的“快显”

java 复制代码
@Select({
            "WITH tile_bbox AS (",
            "  SELECT ST_TileEnvelope(#{z}, #{x}, #{y}) AS bbox_3857",
            ")",
            "SELECT ST_AsMVT(tile, 'layer_name', 4096, 'mvt_geom') AS mvt ",
            "FROM (",
            "  SELECT *,",
            "    ST_AsMVTGeom(",
            "      ST_Transform(geometry, 3857), ",
            "      (SELECT bbox_3857 FROM tile_bbox), ",
            "      4096, 256, true",
            "    ) AS mvt_geom ",
            "  FROM ${dataSourceName}, tile_bbox ",
            "  WHERE geometry && ST_Transform((SELECT bbox_3857 FROM tile_bbox), 4326)",
            ") AS tile"
    })
    VectorTile getMvtTile(
            @Param("z") int z,
            @Param("x") int x,
            @Param("y") int y,
            @Param("dataSourceName") String dataSourceName
    );

SpringBoot连接好PostGIS之后,使用以上的SQL代码查询即可获取,select *表示可以显示所有字段。

java 复制代码
@Data
public class VectorTile {
    byte[] mvt; // Mapbox标注矢量瓦片数据
}

ArcGIS加载矢量瓦片数据对应的style:

javascript 复制代码
  const parcelLayer = new VectorTileLayer({
                style: {
                    "version": 8,
                    "sources": {
                        "osm": {
                            "tiles": ["http://localhost:9999/vectortile/public.疫情/{z}/{x}/{y}.pbf"],
                            "type": "vector"
                        }
                    },
                    "layers": [
  // 发光外层(模糊/扩散效果)
  {
    id: "glow-outline",
    type: "line",
    source: "osm",
    "source-layer": "layer_name",
    paint: {
      "line-color": "#1c1c1c", // 半透明白色或蓝色
      "line-width": 10,                         // 较宽
      "line-blur": 7                           // 模糊边缘(关键!)
    }
  },
  // 主线条
  {
    id: "main-line",
    type: "line",
    source: "osm",
    "source-layer": "layer_name",
    paint: {
      "line-color": "#3388ff",
      "line-width": 1.5
    }
  }
]
                },
                title: 'mvt',
            });

效果:

相关推荐
confiself1 小时前
GO环境配置
linux·运维·centos
爱装代码的小瓶子1 小时前
【c++与Linux基础】文件篇(4)虚拟文件系统VFS
linux·开发语言·c++
可可嘻嘻大老虎6 小时前
nginx无法访问后端服务问题
运维·nginx
JiMoKuangXiangQu7 小时前
ARM64 进程虚拟地址空间布局
linux·arm64 虚拟地址布局
阳光九叶草LXGZXJ7 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
无忧智库7 小时前
某市“十五五“地下综合管廊智能化运维管理平台建设全案解析:从数字孪生到信创适配的深度实践(WORD)
运维·智慧城市
春日见8 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶
珠海西格8 小时前
“主动预防” vs “事后补救”:分布式光伏防逆流技术的代际革命,西格电力给出标准答案
大数据·运维·服务器·分布式·云计算·能源
无垠的广袤8 小时前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:缺陷检测
linux·人工智能·python·opencv·开发板
阿波罗尼亚8 小时前
Kubectl 命令记录
linux·运维·服务器