UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 6.17 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import e from"../../core/Error.js";import{open as r}from"../../core/workers.js";import t from"./PixelBlock.js";class i{constructor(){this._workerThread=null,this._destroyed=!1}async initialize(){const e=await r("RasterWorker");this._destroyed?e.close():this._workerThread=e}destroy(){this._destroyed=!0,this._workerThread&&(this._workerThread.close(),this._workerThread=null)}async convertVectorFieldData(e,r){a(this._workerThread);const i=e.pixelBlock.getTransferableObject().pixelBlock,s=await this._workerThread.invoke("convertVectorFieldData",{pixelBlock:i,type:e.dataType},r);return s?new t(s):null}async convertPixelBlockToFeatures(e,r){a(this._workerThread);const t=await this._workerThread.invoke("convertPixelBlockToFeatures",{pixelBlock:e.pixelBlock.toJSON(),extent:e.extent.toJSON(),fieldNames:e.fieldNames,skipFactor:e.skipFactor,pixelIdOffset:e.pixelIdOffset,imageRowSize:e.imageRowSize},r),i=e.extent.spatialReference?.toJSON();return t.forEach(e=>e.geometry.spatialReference=i),t}computeStatisticsHistograms(e,r){a(this._workerThread);const{transferList:t,pixelBlock:i}=e.pixelBlock.getTransferableObject();return r?.transferPixelsToWorker&&(r={...r,transferList:t}),this._workerThread.invoke("computeStatisticsHistograms",{...e,pixelBlock:i},r)}async transformPixels(e,r){a(this._workerThread);const{transferList:i,pixelBlock:s}=e.pixelBlock.getTransferableObject();r?.transferPixelsToWorker&&(r={...r,transferList:i});const o=await this._workerThread.invoke("transformPixels",{...e,pixelBlock:s},r);return t.fromJSON(o)}async compositeBands(e,r){a(this._workerThread);const i=e.pixelBlocks.map(e=>e?.getTransferableObject()),s={pixelBlocks:i.map(e=>e?.pixelBlock)};if(r?.transferPixelsToWorker){const e=i.flatMap(e=>e?.transferList).filter(e=>null!=e);r={...r,transferList:e}}const o=await this._workerThread.invoke("compositeBands",s,r);return o?t.fromJSON(o):null}async decode(e,r){a(this._workerThread);const i=await this._workerThread.invoke("decode",e,{...r,transferList:[e.data]});return i?new t(i):null}async symbolize(e,r){a(this._workerThread);const i=e.pixelBlock?.getTransferableObject().pixelBlock,s={extent:e.extent?.toJSON(),pixelBlock:i,simpleStretchParams:e.simpleStretchParams,bandIds:e.bandIds},o=await this._workerThread.invoke("symbolize",s,r);return o?new t(o):null}async highlightPixels(e,r){a(this._workerThread);const t={pixelBlock:e.pixelBlock?.toJSON(),renderedPixelBlock:e.renderedPixelBlock?.toJSON(),highlightOptions:e.highlightOptions},i=await this._workerThread.invoke("highlightPixels",t,r);e.renderedPixelBlock.pixels=i.pixels,e.renderedPixelBlock.mask=i.mask,e.renderedPixelBlock.maskIsAlpha=i.maskIsAlpha}async updateSymbolizer(e,r){a(this._workerThread);const t=e?.rendererJSON?.histograms;await Promise.all(this._workerThread.broadcast("updateSymbolizer",{symbolizerJSON:e.toJSON(),histograms:t},r))}async updateRasterFunction(e,r){a(this._workerThread),await Promise.all(this._workerThread.broadcast("updateRasterFunction",{rasterFunctionJSON:e.toJSON()},r))}async process(e,r){a(this._workerThread);const i=await this._workerThread.invoke("process",{extent:e.extent?.toJSON(),primaryPixelSizes:e.primaryPixelSizes?.map(e=>null!=e?e.toJSON():null),primaryPixelBlocks:e.primaryPixelBlocks.map(e=>e?.getTransferableObject().pixelBlock),primaryRasterIds:e.primaryRasterIds,parameters:e.parameters},r);return i?new t(i):null}async stretch(e,r){if(a(this._workerThread),!e?.pixelBlock)return null;const i={srcPixelBlock:e.pixelBlock.getTransferableObject().pixelBlock,stretchParams:e.stretchParams},s=await this._workerThread.invoke("stretch",i,r);return s?new t(s):null}async split(e,r){if(a(this._workerThread),!e?.pixelBlock)return null;const i={srcPixelBlock:e.pixelBlock.getTransferableObject().pixelBlock,tileSize:e.tileSize,maximumPyramidLevel:e.maximumPyramidLevel,useBilinear:e.useBilinear},s=await this._workerThread.invoke("split",i,r);return s&&s.forEach((e,r)=>{s.set(r,e?t.fromJSON(e):null)}),s}async clipTile(e,r){if(a(this._workerThread),!e?.pixelBlock)return null;const i=e.pixelBlock.getTransferableObject().pixelBlock,s={...e,pixelBlock:i},o=await this._workerThread.invoke("clipTile",s,r);return o?t.fromJSON(o):null}async estimateStatisticsHistograms(e,r){if(a(this._workerThread),!e?.pixelBlock)return null;const t={srcPixelBlock:e.pixelBlock.getTransferableObject().pixelBlock};return await this._workerThread.invoke("estimateStatisticsHistograms",t,r)}async mosaicAndTransform(e,r){if(a(this._workerThread),!e?.srcPixelBlocks?.length)return{pixelBlock:null};const i=e.srcPixelBlocks.map(e=>e?.getTransferableObject()),s={...e,srcPixelBlocks:i.map(e=>e?.pixelBlock)};if(r?.transferPixelsToWorker){const e=i.flatMap(e=>e?.transferList).filter(e=>null!=e);r={...r,transferList:e}}const o=await this._workerThread.invoke("mosaicAndTransform",s,r);return{pixelBlock:o.pixelBlock?new t(o.pixelBlock):null,localNorthDirections:o.localNorthDirections}}async createFlowMesh(e,r){a(this._workerThread);const t={buffer:e.flowData.data.buffer,maskBuffer:e.flowData.mask.buffer,width:e.flowData.width,height:e.flowData.height},{meshType:i,simulationSettings:s,startInfo:o}=e,l=await this._workerThread.invoke("createFlowMesh",{meshType:i,flowData:t,simulationSettings:s,startInfo:o},{...r,transferList:[t.buffer,t.maskBuffer]});return{vertexData:new Float32Array(l.vertexBuffer),indexData:new Uint32Array(l.indexBuffer),pathData:new Float32Array(l.pathBuffer)}}getProjectionOffsetGrid(e,r){a(this._workerThread);const t=null!=e.datumTransformation?e.datumTransformation.steps.map(e=>({wkid:e.wkid,wkt:e.wkt,isInverse:e.isInverse})):null,i=null!=e.rasterTransform?e.rasterTransform.toJSON():null,s={projectedExtent:e.projectedExtent.toJSON(),srcBufferExtent:e.srcBufferExtent.toJSON(),pixelSize:e.pixelSize,hasWrapAround:e.hasWrapAround,spacing:e.spacing,datumTransformationSteps:t,rasterTransform:i,isAdaptive:e.isAdaptive,includeGCSGrid:e.includeGCSGrid};return this._workerThread.invoke("getProjectionOffsetGrid",s,r)}}function a(r){if(null==r)throw new e("raster-jobhandler:no-connection","no available worker connection")}export{i as default};