如何更改OpenLayers特征矢量多边形EPSG

时间:2019-05-22 13:42:25

标签: javascript openlayers epsg

情况:

  1. 我有一个非常大的图像(+ 2Gb .tiff),这是由于使用了zoomify使得在OpenLayers中更易于管理和使用。
  2. 我在上一张图像上创建了一系列多边形。每个多边形平均有8个点。大约有3000个多边形。
  3. 想法是通过OpenLayers重用多边形和地图。
  4. 感谢OpenLayers以及在Stackoverflow上找到的各种指南和问题,我的观点很不错。我同时看到了地图和多边形。

问题:

我认为多边形与地图的相位不同,因为EPSG代码存在问题。实际上,与中心相比,右侧的多边形似乎“向右滑动”,而左侧的多边形似乎“向左滑动”

我尝试了什么:

我都试图改变投影 还有geometry.transform()……但是我对OpenLayers的一点熟悉并没有帮助。 我也直接从StackOverflow找到并尝试了许多解决方案,但是即使我发现许多存在类似问题的解决方案,建议的解决方案似乎也不适合。

已添加了带有参数的多边形,可将其全部左右移动或更改其大小。

代码:

var imgWidth = 33165;
var imgHeight = 33165;
var url = 'picUrl/';
var crossOrigin = 'anonymous';
var imgCenter = [imgWidth / 2, - imgHeight / 2];

var proj = new ol.proj.Projection({
  code: 'ZOOMIFY',
  units: 'pixels',
  extent: [0, 0, imgWidth, imgHeight]
});

var source = new ol.source.Zoomify({
  url: url,
  size: [imgWidth, imgHeight],
  crossOrigin: crossOrigin
});

地图:

var map = new ol.Map({
  layers: [
    new ol.layer.Tile({
      source: source
    }),
    layerFeatures
    ],
  target: 'map',
  view: new ol.View({
    projection: proj,
    center: imgCenter,
    zoom: 1,
    extent: [0, -imgHeight, imgWidth, 0]
  })
});

多边形

var multi = 0.867; //to modify the size
var minx = 100; //to adjust the left boundary
var miny = -230; //to adjust the right boundary

var featurePoly0001 = new ol.Feature({
         geometry: new ol.geom.Polygon([
[
 [17470*multi - minx, -5240*multi - miny ],
 [17668*multi - minx, -5224*multi - miny ],
 [17676*multi - minx, -5302*multi - miny ],
 [17474*multi - minx, -5306*multi - miny ]
]
])
})     
sourceFeatures = new ol.source.Vector(),
layerFeatures = new ol.layer.Vector({
    source: sourceFeatures
});

最后将多边形添加到地图中:

sourceFeatures.addFeature(featurePoly0001);

预期结果

看到在OpenLayers中默认使用的EPSG是3857,并且多边形直接绘制在图像上,然后我想象它与EPSG兼容:4326我想找到一种使多边形适合图像的方法。 矢量变换方法,直接应用于坐标的数学公式或更多方法,都将受到赞赏。

0 个答案:

没有答案