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"]'));