首页 > 解决方案 > 在 OpenLayers 中的 EPSG:25832 中显示矢量切片

问题描述

背景

我一直在玩矢量瓦片(第一次),我一直被困在一个关于数据投影的问题上。Vector Tiles 与背景图不完全对齐(投影问题?)。与背景地图进行比较时,矢量切片数据的大小似乎正确,但位置稍有偏差。

在此处输入图像描述

设置

服务器

我已经通过PostGIS创建了我自己的简单 MVT 端点,而不是返回EPSG:3857我正在使用EPSG:25832我自己的边界框的数据(因为我在客户端上显示的数据已经在EPSG:25832.

WITH
bounds(geometry) AS (SELECT ST_TileEnvelope(@Z, @X, @Y, ST_MakeEnvelope(120000, 5900000, 1000000, 6500000, 25832))),
geometry AS (...),
mvtgeom AS (SELECT ST_AsMVTGeom(ST_Transform(geom, 25832), bounds.geometry, 4096, 256, true) FROM geometry, bounds)
SELECT ST_AsMVT(mvtgeom.*) FROM mvtgeom

客户

我创建了一个简单的客户端来演示这个问题(请注意,矢量切片图层指向本地主机)。

通过 VueLayer 的 Openlayer 客户端 - https://jsfiddle.net/z4a65d9L/

标签: gisopenlayerspostgisvector-tilesvuelayers

解决方案


解决方案

问题在于边界不是产生偏移的完美正方形。

我使用 PostGIS 创建了一个新的边界并使用它来解决我的问题

SELECT ST_ASTEXT(ST_Expand(ST_SetSRID( ST_Point(560000, 6200000), 25832), 370000));


推荐阅读