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',
            });

效果:

相关推荐
AutumnWind042023 分钟前
【Docker Compose 快速入门】
运维·docker·容器
QYRdata1 小时前
2026-2032年图形处理云服务器CAGR预计达18.7%
运维·服务器·服务发现
分布式存储与RustFS1 小时前
图床搬到自己的对象存储:PicGo 加 S3 插件的完整配置
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
GeW1 小时前
制造强国底座:Linux与数据库驱动的新型工业基础设施
linux
月落汀兰2 小时前
建池后类型不可修改!深度拆解 Ceph PG 放置组,副本 / 纠删码池选型,快照与命名空间避坑
运维·ceph
xiaoye-duck2 小时前
《Linux 网络编程》深入理解 IO 多路复用:select 函数详解与 Echo 服务实战
linux·网络
Tairitsu_H2 小时前
[Linux系统] 命令行参数 | 环境变量 | 程序地址空间
linux·环境变量·命令行参数·程序地址空间
自强的小白2 小时前
mybatis-plus 的扩展功能
mybatis·mybatis_plus
雯宝2 小时前
devices_init / buses_init / classes_init / firmware_init / hypervisor_init 函数
linux
技术人生0012 小时前
VMware Workstation 安装 Ubuntu 24.04 LTS 完整教程
运维·服务器·ubuntu