возможно ли отображение только выбранной области полигона рисования изображения из слоя статического растрового изображения в открытом слое 6

#gis #openlayers #raster #openlayers-6 #angular-openlayers

Вопрос:

  • Я использую библиотеку открытых слоев 6 для отображения карт и событий.
  • Моя базовая карта-это карта улиц
  • Тогда мое приложение должно отображать растр изображения
    • нарисуйте многоугольник, затем
    • в пределах полигона (какое бы изображение ни было, нижняя часть полигона, которая должна отображать другую область растра, должна быть невидимой)
  • Я пытался
 const imageProjection = new Projection({
        code: 'orto-image',
        units: 'pixels',
        extent: buffer(extent, 512)
      });

const imgSource = new Static({
        url: this.imgURL,
        projection: imageProjection,
        imageExtent: extent,
        imageSize: [this.imageData.width, this.imageData.height],
        imageLoadFunction : (image) => {
          image.getImage().src = this.imgURL;
          if (image.resolution === undefined) {
            image.resolution = (image.extent[3] - image.extent[1]) / image.image_.height;
          }
          image.state = 2; // ImageState.LOADED;
          image.unlistenImage_();
          image.changed();
        }
      });
const imageLayer = new ImageLayer({
          source: imgSource
        });
imageLayer.set('name', `testing`);
imageLayer.set('type', 'IMAGE');
this.currentMap().addLayer(imageLayer);
 
  • Над изображением, добавленным на карту.
  • затем нарисуйте многоугольник на растровом изображении(на базовой карте)
 const polygonFeature = new Feature(
        new Polygon([arrayData])/* .transform('EPSG:4326', 'EPSG:3857') */);
      const source = new VectorSource({
        style: new Style({
          fill: new Fill({
            color: 'black'
          })
        })
      });
      source.addFeature(polygonFeature);
      const layer = new VectorLayer({
        source,
      });
      layer.set('name', 'polygonLayer');
this.currentMap().addLayer(layer);
 

Комментарии:

1. Да, тот же метод, что и в openlayers.org/en/latest/examples/layer-clipping-vector.html будет работать со слоем изображения и с нарисованным векторным объектом codesandbox.io/s/reprojection-image-forked-73t9k?file=/main.js

2. @Майк, большое тебе спасибо..