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

效果:

相关推荐
瑞克-桑切斯1 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风1 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字3222 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted
雪落漂泊2 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
瑞克-桑切斯2 小时前
docker mail商城
运维·docker·容器
总要学点什么2 小时前
第97篇:三维数据加载-城市建筑白模自定义着色器——让一条光带沿高度扫上去,快慢却由帧率说了算
前端·gis·webgl·cesium·着色器·空间分析·白模
AR-26710-3 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维
bksczm3 小时前
Redis 持久化:RDB 快照与 AOF 日志
数据库·redis·mybatis
不庸.3 小时前
WPScan 实战入门:从 Docker 靶场到弱密码爆破
运维·安全·web安全·docker·容器·安全性测试·wpscan
Decay__5 小时前
SQL Server 数据库全栈运维实战系列 — 合集索引(24 篇)
运维·数据库·sql·mysql·架构