gis - 在 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/
解决方案
解决方案
问题在于边界不是产生偏移的完美正方形。
我使用 PostGIS 创建了一个新的边界并使用它来解决我的问题
SELECT ST_ASTEXT(ST_Expand(ST_SetSRID( ST_Point(560000, 6200000), 25832), 370000));
推荐阅读
- c# - IdentityServer 4 Entity Framework ConfigurationDbContext Client.AllowedScopes 和其他非客户端表属性为 Null
- email - 作为收件人,是否可以检测电子邮件是通过 Gmail 的“计划发送”还是“发送”发送的?
- tabs - 如何在没有 APP 的情况下在 Shopify 中制作产品描述选项卡?
- nosql - 在一个 NoSQL 表中保存不同类型的数据是一种很好的模式吗?
- python - 如何使回调函数可用于 Python 中的导入模块?
- c# - 更好地理解 Kaitai Struct 的 32 位转换器
- kubernetes - 重新标记 Prometheus 操作员默认警报
- django - 如何将 django/react 应用程序部署到具有不同目录结构的 heroku
- c - C:如何使用 strncat 连接两个 c 风格的以空字符结尾的字符数组之间的数字?
- python - 时间序列分解