微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Openlayers 6 会导致错误的比例?

如何解决为什么 Openlayers 6 会导致错误的比例?

我们编写了一个基于 openlayers 的地理门户,并发现我们的比例设置存在问题。

我们的地理门户中显示的比例似乎是错误的。当我们在地理门户中连接一个最大比例为 1:5000 的 wms 时,我们可以将这个 wms 显示到 1:6500。

在 QGIS 中,WMS 在 1:5000 之前正确显示,然后消失。

我们已经检查了用于计算显示比例的 QGIS 源代码,并在我们的地理门户中进行了调整。

我们使用 Openlayers 6.1.1 和 utm32-projection。

有人遇到过类似的问题或对此有什么建议吗?

[编辑]

对于地图,我们使用基于人类可读比例的自定义分辨率,使用以下函数转换:

scaletoResolution = function( 
    scale,map_units,dpi
) {

    scale = scale || 0;
    map_units = map_units || 1;
    dpi = dpi || 1;

    var inch_per_meter = 1/0.0254;

    return scale / map_units / inch_per_meter / dpi;

};

dpi 取决于设备。

[编辑 2]

问题是 TileGridResolutions-Source 的OriginTileWms。 (见Answer from Mike

在我们的地理门户中,我们有一个可编辑的比例选择,具有预定义的比例(例如 1:5000、1:10000 ...)。 此外,用户可以为地图的自定义视图输入自己的比例。 (例如 1:5321)。 这适用于 Openlayers ImageWms、XYZ 和 WMTS。

对于 TileWms Openlayers,在输入自定义比例时选择最接近的(预定义的)TileWms 分辨率。 (这是合乎逻辑的)

例如

predefined scale    custom scale

...
1:20000

1:10000

                    1:8345  -->  1:10000 (openlayers choice)
                    1:5321  -->  1:5000 (openlayers choice)

1:5000

1:2500
...

当我从 TileWMS 切换到 ImageWMs(单块)时,Openlayers 请求自定义比例。 我希望 OpenLayers 请求 TileWms 的自定义比例(就像 QGIS 一样)。

这可能吗? (例如,每次用户输入或选择比例时设置 TileGrid 的分辨率?)

解决方法

使用默认的瓷砖网格,您将拥有最初基于投影范围和缩放比例的任意分辨率的缩放级别 2 的因数。显示的图块将来自最接近视图分辨率的缩放级别,因此根据服务器比例 limit 相对于图块分辨率的位置,可见数据的实际显示截止可能发生在 {{1 }} 和 limit*sqrt2enter image description here

定义具有与服务器限制相关的已知分辨率的显式图块网格,与图层的 OpenLayers limit/sqrt2maxResolution 选项结合使用,可以更精确地控制截止点.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?