【问题标题】:OpenLayers scale: What is the unit size?OpenLayers scale:单位大小是多少?
【发布时间】:2012-12-10 22:25:57
【问题描述】:

我有一张使用 gdal2tiles.py 栅格化的平面游戏世界地图(显然是-p 栅格,因为它没有地理位置信息)。将其显示为 TMS 层就可以了。

我还有要叠加的矢量数据。通过反复试验,我发现了一个几乎可以工作的配置:

var scales = [0.692, 1.384, 2.768, 5.536, 11.072];
var options = {
    controls: [],
    maxExtent: mapBounds,
    scales: scales,
    units: 'm'
};

但我想知道为什么这些值如此奇怪,以及它们是否真的正确。所以基本上问题是:OpenLayers 地图的实际比例是多少?从 0,0 到 1,0 的线串有多长,到 0,1 有多长?单位是什么?显然它不是米,文档也没有在任何地方解释它。

以防万一,我的矢量数据存储在 PostGIS 数据库中。它是生成的,而不是来自任何真实世界的来源。

【问题讨论】:

  • 你给 postgis 表做了什么?
  • 根据 API 文档和源代码,地图没有 scales:array 选项。因此,正如 Cavila 所建议的那样,可能比例和分辨率已切换。

标签: gis openlayers postgis


【解决方案1】:

比例是地面单位和屏幕单位之间的差异。 您可以通过比例控件或调用来查看当前地图比例分母

var map = (OpenLayers.Map);
map.getScale();

如果您的矢量数据在 Postgis 数据库中并存储为几何列,那么它应该具有正确的 srid 编号。您的矢量数据必须与您的地图 srid 代码匹配或转换为相同的 srid。 在完成渲染后检查您的地图投影,调用如下:

var map = (OpenLayers.Map);
map.getProjection();

您的矢量数据 srid 必须与上面报告的值匹配。

您不会将这些比例值与分辨率混淆吗?

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 2016-04-17
    • 2011-09-14
    • 2011-05-27
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多