AWS S3 SEG-Y Reader

This example contains an implementation of custom AWS S3 SEG-Y Reader. You need to apply AWS S3 credentials and SEG-Y file location inside your S3 bucket to see results.

ACCESS KEY ID

SECRET ACCESS KEY

Region

Bucket

File

Apply

import { Text } from "@int/geotoolkit/scene/shapes/Text.ts";
import { Plot } from "@int/geotoolkit/plot/Plot.ts";
import { SeismicWidget } from "@int/geotoolkit/seismic/widgets/SeismicWidget.ts";
import { SeismicColors } from "@int/geotoolkit/seismic/util/SeismicColors.ts";
import { NormalizationType } from "@int/geotoolkit/seismic/pipeline/NormalizationType.ts";
import { SeismicPipeline } from "@int/geotoolkit/seismic/pipeline/SeismicPipeline.ts";
import { AWSSegyReader } from "/src/code/Seismic/Readers/AWSReader/AWSSegyReader.ts";
const createReader = function(onready, onfailure, creds) {
  const data = new AWSSegyReader({
    "bucket": creds.bucket,
    "key": creds.file,
    "accessKeyId": creds.id,
    "secretAccessKey": creds.key,
    "region": creds.region
  });
  data.loadMetaData((err) => {
    if (err instanceof Error) {
      onfailure(err);
      return;
    }
    data.readDataSetStatistics(() => {
      onready(data);
    });
  });
};
const createPipeline = function(reader) {
  const pipeline = new SeismicPipeline({
    "name": "Seismic",
    "reader": reader,
    "statistics": reader.getStatistics()
  });
  pipeline.setOptions({
    "normalization": {
      "type": NormalizationType.RMS,
      "scale": 0.4
    },
    "plot": {
      "type": {
        "wiggle": false,
        "interpolateddensity": true
      },
      "decimationspacing": 5
    },
    "colors": {
      "colormap": SeismicColors.getDefault().createNamedColorMap("WhiteBlack", 32)
    }
  });
  return pipeline;
};
function createScene(canvas) {
  const widget = new SeismicWidget({
    "colorbar": {
      "axis": {
        "tickgenerator": {
          "edge": {
            "tickvisible": false,
            "labelvisible": false
          }
        }
      }
    },
    "layouttype": "inside",
    "statusbar": {
      "visible": false
    },
    "table": {
      "size": 100,
      "visible": false
    }
  });
  widget.setNoDataStrategy(
    () => new Text({
      "text": "Apply credentials",
      "ax": widget.getModel().getModelLimits().getWidth() / 2,
      "ay": widget.getModel().getModelLimits().getHeight() / 2
    })
  );
  return new Plot({
    "canvaselement": canvas,
    "root": widget
  });
}
function applyCreds(plot, creds) {
  createReader((reader) => {
    const pipeline = createPipeline(reader);
    const widget = plot.getRoot();
    widget.setPipeline(pipeline);
    widget.setScaleOptions({
      "tracescale": 48,
      "samplescale": 2,
      "deviceunit": "in",
      "sampleunit": "ft"
    });
  }, (msg) => {
    alert(msg);
  }, creds);
}
export { applyCreds, createScene };

createScene(document.querySelector('[ref="plot"]'));