82 lines
2.5 KiB
JavaScript
82 lines
2.5 KiB
JavaScript
const well_ring = require('./drawers/well-ring')
|
|
const well_head = require('./drawers/well-head')
|
|
const corel_layer = require('./drawers/corel-layer')
|
|
const BBox = require('../libs/bbox')
|
|
const SvgNode = require('./svg-node')
|
|
const svg_nodes = require('./drawers/svg-nodes')
|
|
|
|
function get_bbox(data, min_size = 1000) {
|
|
let bbox = BBox.from_array(data)
|
|
|
|
if (bbox.w() == 0 || bbox.h() == 0) {
|
|
bbox.r += min_size;
|
|
bbox.b += min_size;
|
|
}
|
|
|
|
return bbox;
|
|
}
|
|
|
|
function build_pt_layer(wells, settings, style) {
|
|
function t2r(tons) {
|
|
// tonns/mm2 = tonns/cm2 / 100. S(mm)=Pi*r*r=tons/tons_in_cm2*100. r = sqrt(tons/tons_in_cm2*100 / PI)
|
|
return Math.sqrt(((tons / settings.tons_in_cm2) * 100) / Math.PI);
|
|
}
|
|
|
|
let { ppu } = settings;
|
|
|
|
const wells_layer = corel_layer("wells");
|
|
const rings_layer = corel_layer("rings");
|
|
// Круги
|
|
rings_layer.append(wells.map((x) => well_ring.it(t2r(x.wwit), ppu, style.wit).move(x.lx, x.ly)));
|
|
rings_layer.append(wells.map((x) => well_ring.it(t2r(x.wsit), ppu, style.sit).move(x.lx, x.ly)));
|
|
|
|
// Знак скважины
|
|
wells_layer.append(
|
|
wells.map((x) => well_head[t2r(x.wlpt) > 1.6 ? "prod" : "gray"](ppu, style).move(x.lx, x.ly))
|
|
);
|
|
|
|
// Имя скважины
|
|
wells_layer.append(wells.map((x) => well_head.name(x.name, ppu, style).move(x.lx, x.ly)));
|
|
// Обводненность
|
|
wells_layer.append(wells.map((x) => well_head.wlp(x.wlf, ppu, style).move(x.lx, x.ly)));
|
|
|
|
let svg = svg_nodes.container([rings_layer, wells_layer])
|
|
|
|
return { svg };
|
|
}
|
|
|
|
function build_it_layer(wells, settings, style) {
|
|
function t2r(tons) {
|
|
// tonns/mm2 = tonns/cm2 / 100. S(mm)=Pi*r*r=tons/tons_in_cm2*100. r = sqrt(tons/tons_in_cm2*100 / PI)
|
|
return Math.sqrt(((tons / settings.tons_in_cm2) * 100) / Math.PI);
|
|
}
|
|
|
|
let { ppu } = settings;
|
|
|
|
const wells_layer = corel_layer("wells");
|
|
const rings_layer = corel_layer("rings");
|
|
|
|
// Круги
|
|
rings_layer.append(wells.map((x) => well_ring.it(t2r(x.wwit), ppu, style).move(x.lx, x.ly)));
|
|
|
|
// Знак скважины
|
|
wells_layer.append(
|
|
wells.map((x) => well_head[t2r(x.wwit) > 1.6 ? "inj" : "gray"](ppu, style).move(x.lx, x.ly))
|
|
);
|
|
|
|
// Имя скважины
|
|
wells_layer.append(wells.map((x) => well_head.name(x.name, ppu, style).move(x.lx, x.ly)));
|
|
|
|
let svg = svg_nodes.container([rings_layer, wells_layer])
|
|
|
|
return { svg };
|
|
}
|
|
|
|
module.exports = {
|
|
get_bbox,
|
|
build_pt_layer,
|
|
build_it_layer,
|
|
};
|
|
|
|
module.exports.default = module.exports;
|