This tutorial shows how to render seismic tiles and getting picking from different servers. You need to implement your own geotoolkit/seismic/data/RemoteReaderDataProvider using geotoolkit/seismic/data/IServerSideRenderingProvider interface. This interface contains two methods: pickSample() for picking from server and getTileURL() for getting tiles from server. For demonstration you need to run server from folder server: npm install, npm start.
import { Plot } from "@int/geotoolkit/plot/Plot.ts";
import { Events } from "@int/geotoolkit/controls/tools/CrossHair.ts";
import { SeismicWidget } from "@int/geotoolkit/seismic/widgets/SeismicWidget.ts";
import { RenderingSide } from "@int/geotoolkit/seismic/pipeline/RenderingSide.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 { RemoteSeismicDataSource } from "@int/geotoolkit/seismic/data/RemoteSeismicDataSource.ts";
import "/src/code/Seismic/Readers/RemoteSeismicRendering/nodeServerDataProvider.ts";
function createReader(callback, onfailure) {
const host = "http://localhost:3002/";
const data = new RemoteSeismicDataSource({
"host": host,
"imagehost": "http://localhost:3003/",
"pickinghost": "http://localhost:3004/",
"file": "density.segy",
"version": "node"
});
data.open(
() => {
data.select({}, (reader) => {
callback(reader);
});
},
(err) => {
onfailure(err);
}
);
}
function createPipeline(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("RedWhiteBlack")
},
"renderingside": RenderingSide.Server
});
return pipeline;
}
function createScene(canvas, errorObj) {
const widget = new SeismicWidget({
"pickingevent": Events.onPointerUp,
"colorbar": {
"axis": {
"tickgenerator": {
"edge": {
"tickvisible": false,
"labelvisible": false
}
}
}
},
"layouttype": "inside",
"statusbar": {
"visible": true
},
"table": {
"size": 100,
"visible": false
}
});
createReader((reader) => {
const pipeline = createPipeline(reader);
widget.setPipeline(pipeline);
const headerFields = pipeline.getReader().getTraceHeaderFields();
let headerInfo;
for (let i = 0; i < headerFields.length; i++) {
const header = headerFields[i];
if (header.getName() === "FIELD TR" || header.getName() === "TSSN") {
widget.setTraceHeaderVisible(header, true);
} else if (header.getName() === "TraceNumber") {
widget.setTraceHeaderVisible(header, false);
}
headerInfo = widget.getTraceHeaderAxis(header);
if (headerInfo) {
headerInfo["label"].getTextStyle().setColor("#6b6b6b");
}
}
}, (err) => {
errorObj.show = true;
errorObj.text = err.message;
});
return new Plot({
"canvaselement": canvas,
"root": widget
});
}
export { createScene };
createScene(document.querySelector('[ref="plot"]'), this.error);
Cannot connect to the server! Run node server.js!
Close