ImageryLayerView2D.1e6adc86.js 14 KB

1
  1. import{_ as a,$ as o,a0 as v,a1 as D,m as _,s as P,cJ as f,a as b,d4 as A,cA as T,t as E,dh as I,k as z,R as g,cG as R,U,cS as M,g as $,cV as O,a7 as V,di as N,dg as S,ct as q}from"./index.6c049565.js";import{y as j,d as J}from"./RasterVFDisplayObject.3d55c126.js";import{y as L,u as G}from"./LayerView.7c2db9bf.js";import{o as H}from"./BaseGraphicContainer.8f76c915.js";import{n as W}from"./HighlightGraphicContainer.6b3263c8.js";import{A as K}from"./pixelUtils.f4eba4af.js";import{a as Q}from"./BitmapContainer.941a277e.js";import{i as X}from"./utils.eb2c3fd5.js";import{i as Y}from"./Bitmap.5c9e2d15.js";import{v as Z}from"./ExportStrategy.4fe2a8bd.js";import{J as ee}from"./rasterProjectionHelper.3c27ded5.js";import{x as te,d as ie}from"./dataUtils.97a7b38c.js";import{o as re,d as se}from"./WGLContainer.bbd0fcb8.js";import{I as k}from"./Utils.e8554a0e.js";import{s as ae}from"./popupUtils.33b7306b.js";import{i as oe}from"./RefreshableLayerView.5868f703.js";import"./VertexArrayObject.729879be.js";import"./Texture.8e8dfb11.js";import"./enums.2d9e6f64.js";import"./VertexElementDescriptor.1fdca6da.js";import"./ExpandedCIM.64535143.js";import"./BidiEngine.d8bba3fc.js";import"./enums.0295eb81.js";import"./MaterialKey.bbaab8f1.js";import"./Rect.95b0fd2e.js";import"./quantizationUtils.4f3ed95a.js";import"./GeometryUtils.4f19e772.js";import"./floatRGBA.c5518572.js";import"./normalizeUtilsSync.f896b328.js";import"./projectionSupport.2b4a8796.js";import"./json.879c9adc.js";import"./FeatureContainer.8e5dd053.js";import"./TileContainer.282da507.js";import"./visualVariablesUtils.4b17aac7.js";import"./visualVariablesUtils.88ca310b.js";import"./Matcher.d9c9cebd.js";import"./tileUtils.a1e62810.js";import"./TileClipper.7297efa2.js";import"./Geometry.d049a63c.js";import"./GeometryUtils.51c4032a.js";import"./earcut.afc1d357.js";import"./devEnvironmentUtils.d8d0484c.js";import"./schemaUtils.7eee5b9f.js";import"./createSymbolSchema.30665f63.js";import"./util.d5f4af7b.js";import"./ComputedAttributeStorage.dc79b701.js";import"./centroid.0c969b82.js";import"./vec3f32.1121a836.js";import"./ProgramTemplate.83fdf5b6.js";import"./StyleDefinition.d56936e4.js";import"./config.82550349.js";let h=class extends D{constructor(){super(...arguments),this.attached=!1,this.container=new X,this.updateRequested=!1,this.type="imagery",this._bitmapView=new Q}destroy(){this.attached&&(this.detach(),this.attached=!1),this.updateRequested=!1}get updating(){return!this.attached||this.isUpdating()}update(e){this.strategy.update(e).catch(t=>{_(t)||P.getLogger(this.declaredClass).error(t)})}hitTest(e){return new f({attributes:{},geometry:e.clone(),layer:this.layer})}attach(){this.container.addChild(this._bitmapView);const e=this.layer.version>=10,t=this.layer.version>=10.1?this.layer.imageMaxHeight:2048,i=this.layer.version>=10.1?this.layer.imageMaxWidth:2048;this.strategy=new Z({container:this._bitmapView,imageNormalizationSupported:e,imageMaxHeight:t,imageMaxWidth:i,fetchSource:this._fetchImage.bind(this),requestUpdate:()=>this.requestUpdate()})}detach(){this.strategy.destroy(),this._bitmapView.removeAllChildren(),this.container.removeAllChildren(),this.updateRequested=!1}redraw(){this.strategy.updateExports(async e=>{var r;if(e.source instanceof HTMLImageElement)return;const t=await this.layer.applyRenderer({extent:e.source.extent,pixelBlock:(r=e.source.originalPixelBlock)!=null?r:e.source.pixelBlock}),i=e.source;i.filter=s=>this.layer.pixelFilter?this.layer.applyFilter(s):{...t,extent:i.extent}}).catch(e=>{_(e)||P.getLogger(this.declaredClass).error(e)})}requestUpdate(){this.updateRequested||(this.updateRequested=!0,this.view.requestUpdate())}isUpdating(){return this.strategy.updating||this.updateRequested}getPixelData(){if(this.updating)return null;const e=this.strategy.bitmaps;if(e.length===1&&e[0].source)return{extent:e[0].source.extent,pixelBlock:e[0].source.originalPixelBlock};if(e.length>1){const t=this.view.extent,i=e.map(s=>s.source).filter(s=>s.extent&&s.extent.intersects(t)).map(s=>({extent:s.extent,pixelBlock:s.originalPixelBlock})),r=K(i,t);return b(r)?{extent:r.extent,pixelBlock:r.pixelBlock}:null}return null}_fetchImage(e,t,i,r){return(r=r||{}).timeExtent=this.timeExtent,r.requestAsImageElement=!0,this.layer.fetchImage(e,t,i,r).then(s=>s.imageOrCanvasElement?s.imageOrCanvasElement:this.layer.applyRenderer(s.pixelData,{signal:r.signal}).then(n=>{const l=new Y(n.pixelBlock,n.extent.clone(),s.pixelData.pixelBlock);return l.filter=u=>this.layer.applyFilter(u),l}))}};a([o()],h.prototype,"attached",void 0),a([o()],h.prototype,"container",void 0),a([o()],h.prototype,"layer",void 0),a([o()],h.prototype,"strategy",void 0),a([o()],h.prototype,"timeExtent",void 0),a([o()],h.prototype,"view",void 0),a([o()],h.prototype,"updateRequested",void 0),a([o()],h.prototype,"updating",null),a([o()],h.prototype,"type",void 0),h=a([v("esri.views.2d.layers.imagery.ImageryView2D")],h);const ne=h;class le extends re{constructor(){super(...arguments),this.symbolTypes=["triangle"]}get requiresDedicatedFBO(){return!1}prepareRenderPasses(t){const i=t.registerRenderPass({name:"imagery (vf)",brushes:[se],target:()=>this.children,drawPhase:k.MAP});return[...super.prepareRenderPasses(t),i]}doRender(t){this.visible&&t.drawPhase===k.MAP&&this.symbolTypes.forEach(i=>{t.renderPass=i,super.doRender(t)})}}let y=class extends D{constructor(e){super(e),this.update=A((t,i)=>this._update(t,i).catch(r=>{_(r)||P.getLogger(this.declaredClass).error(r)}))}get updating(){return!!this._loading}redraw(e){if(!this.container.children.length)return;const t=this.container.children[0];t.symbolizerParameters=e,t.invalidateVAO(),this.container.symbolTypes=e.style==="wind_speed"?["scalar","triangle"]:e.style==="simple_scalar"?["scalar"]:["triangle"],this.container.requestRender()}async _update(e,t,i){if(!e.stationary)return;const{extent:r,spatialReference:s}=e.state,n=new T({xmin:r.xmin,ymin:r.ymin,xmax:r.xmax,ymax:r.ymax,spatialReference:s}),[l,u]=e.state.size;this._loading=this.fetchPixels(n,l,u,i);const d=await this._loading;this._addToDisplay(d,t,e.state),this._loading=null}_addToDisplay(e,t,i){if(E(e.pixelBlock))return this.container.children.forEach(l=>l.destroy()),void this.container.removeAllChildren();const{extent:r,pixelBlock:s}=e,n=new j(s);n.offset=[0,0],n.symbolizerParameters=t,n.rawPixelData=e,n.invalidateVAO(),n.x=r.xmin,n.y=r.ymax,n.pixelRatio=i.pixelRatio,n.rotation=i.rotation,n.resolution=i.resolution,n.width=s.width*t.symbolTileSize,n.height=s.height*t.symbolTileSize,this.container.children.forEach(l=>l.destroy()),this.container.removeAllChildren(),this.container.symbolTypes=t.style==="wind_speed"?["scalar","triangle"]:t.style==="simple_scalar"?["scalar"]:["triangle"],this.container.addChild(n)}};a([o()],y.prototype,"fetchPixels",void 0),a([o()],y.prototype,"container",void 0),a([o()],y.prototype,"_loading",void 0),a([o()],y.prototype,"updating",null),y=a([v("esri.views.2d.layers.imagery.ImageryVFStrategy")],y);const he=y;let p=class extends I{constructor(){super(...arguments),this.attached=!1,this.container=new le,this.type="imageryVF",this._dataParameters={exportParametersVersion:0,bbox:"",symbolTileSize:0,time:""},this._fetchpixels=async(e,t,i,r)=>{const s=await this._projectFullExtentPromise,{symbolTileSize:n}=this.layer.renderer,{extent:l,width:u,height:d}=te(e,t,i,n,s);if(b(s)&&!s.intersects(e))return{extent:l,pixelBlock:null};const c={bbox:`${l.xmin}, ${l.ymin}, ${l.xmax}, ${l.ymax}`,exportParametersVersion:this.layer.exportImageServiceParameters.version,symbolTileSize:n,time:JSON.stringify(this.timeExtent||"")};if(this._canReuseVectorFieldData(c)){const m=this.getPixelData();if(b(m)&&`${m.extent.xmin}, ${m.extent.ymin}, ${m.extent.xmax}, ${m.extent.ymax}`===c.bbox)return m}const{pixelData:w}=await this.layer.fetchImage(l,u,d,{timeExtent:this.timeExtent,requestAsImageElement:!1,signal:r});return this._dataParameters=c,E(w.pixelBlock)?{extent:l,pixelBlock:null}:{extent:l,pixelBlock:this.layer.rasterInfo.dataType==="vector-uv"?z(ie(w.pixelBlock,"vector-uv")):w.pixelBlock}}}get updating(){return!this.attached||this._strategy.updating}attach(){this._projectFullExtentPromise=this._getProjectedFullExtent(this.view.spatialReference),this._strategy=new he({container:this.container,fetchPixels:this._fetchpixels}),this.handles.add(g(()=>this.layer.renderer,e=>this._updateSymbolizerParams(e),R),"vector-field-view-update")}detach(){this._strategy.destroy(),this.container.children.forEach(e=>e.destroy()),this.container.removeAllChildren(),this.handles.remove("vector-field-view-update"),this._strategy=this.container=this._projectFullExtentPromise=null}getPixelData(){if(this.updating||!this.container.children.length)return null;const{extent:e,pixelBlock:t}=this.container.children[0].rawPixelData;return{extent:e,pixelBlock:t}}hitTest(e){return new f({attributes:{},geometry:e.clone(),layer:this.layer})}update(e){this._strategy.update(e,this._symbolizerParams)}redraw(){this._updateSymbolizerParams(this.layer.renderer),this._strategy.redraw(this._symbolizerParams)}_canReuseVectorFieldData(e){const t=this._dataParameters.exportParametersVersion===e.exportParametersVersion,i=this._dataParameters.time===e.time,r=this._dataParameters.symbolTileSize===e.symbolTileSize,s=this._dataParameters.bbox===e.bbox;return t&&i&&r&&s}async _getProjectedFullExtent(e){try{return await ee(this.layer.fullExtent,e)}catch{try{const i=(await U(this.layer.url,{query:{option:"footprints",outSR:e.wkid||JSON.stringify(e.toJSON()),f:"json"}})).data.featureCollection.layers[0].layerDefinition.extent;return i?T.fromJSON(i):null}catch{return null}}}_updateSymbolizerParams(e){e.type==="vector-field"&&(this._symbolizerParams=this.layer.symbolizer.generateWebGLParameters({pixelBlock:null}))}};a([o()],p.prototype,"attached",void 0),a([o()],p.prototype,"container",void 0),a([o()],p.prototype,"layer",void 0),a([o()],p.prototype,"timeExtent",void 0),a([o()],p.prototype,"type",void 0),a([o()],p.prototype,"view",void 0),a([o()],p.prototype,"updating",null),p=a([v("esri.views.2d.layers.imagery.VectorFieldView2D")],p);const pe=p,de=e=>{let t=class extends e{constructor(){super(...arguments),this.view=null}async fetchPopupFeatures(i,r){const{layer:s}=this;if(!i)throw new $("imagerylayerview:fetchPopupFeatures","Nothing to fetch without area",{layer:s});const{popupEnabled:n}=s,l=ae(s,r);if(!n||E(l))throw new $("imagerylayerview:fetchPopupFeatures","Missing required popupTemplate or popupEnabled",{popupEnabled:n,popupTemplate:l});const u=await l.getRequiredFields(),d=new O;d.timeExtent=this.timeExtent,d.geometry=i,d.outFields=u,d.outSpatialReference=i.spatialReference;const c=this.view.resolution,w=this.view.type==="2d"?new V(c,c,this.view.spatialReference):new V(.5*c,.5*c,this.view.spatialReference),{returnTopmostRaster:m,showNoDataRecords:B}=l.layerOptions||{returnTopmostRaster:!0,showNoDataRecords:!1},C={returnDomainValues:!0,returnTopmostRaster:m,pixelSize:w,showNoDataRecords:B,signal:b(r)?r.signal:null};return s.queryVisibleRasters(d,C).then(F=>F)}canResume(){var i;return!!super.canResume()&&!((i=this.timeExtent)!=null&&i.isEmpty)}};return a([o()],t.prototype,"layer",void 0),a([o()],t.prototype,"suspended",void 0),a([o(M)],t.prototype,"timeExtent",void 0),a([o()],t.prototype,"view",void 0),t=a([v("esri.views.layers.ImageryLayerView")],t),t};let x=class extends de(oe(L(G))){constructor(){super(...arguments),this._exportImageVersion=-1,this._highlightGraphics=new N,this.subview=null}get pixelData(){return this.updating?null:"getPixelData"in this.subview?this.subview.getPixelData():null}async hitTest(e,t){return this.subview?[{type:"graphic",graphic:this.subview.hitTest(e),layer:this.layer,mapPoint:e}]:null}update(e){var t;(t=this.subview)==null||t.update(e)}attach(){this.layer.increaseRasterJobHandlerUsage(),this._setSubView(),this.view&&(this._highlightView=new H({view:this.view,graphics:this._highlightGraphics,requestUpdateCallback:()=>this.requestUpdate(),container:new W(this.view.featuresTilingScheme)}),this.container.addChild(this._highlightView.container)),this.handles.add([g(()=>{var e;return(e=this.layer.blendMode)!=null?e:"normal"},e=>this.subview.container.blendMode=e,R),g(()=>{var e;return(e=this.layer.effect)!=null?e:null},e=>this.subview.container.effect=e,R),g(()=>this.layer.exportImageServiceParameters.version,e=>{e&&this._exportImageVersion!==e&&(this._exportImageVersion=e,this.requestUpdate())},S),g(()=>this.timeExtent,e=>{this.subview.timeExtent=e,"redraw"in this.subview?this.requestUpdate():this.subview.redrawOrRefetch()},S),this.layer.on("redraw",()=>{"redraw"in this.subview?this.subview.redraw():this.subview.redrawOrRefetch()}),g(()=>this.layer.renderer,()=>this._setSubView())],"imagerylayerview-update")}detach(){var e,t;this.layer.decreaseRasterJobHandlerUsage(),this.container.removeAllChildren(),this._detachSubview(this.subview),(e=this.subview)==null||e.destroy(),this.handles.remove("imagerylayerview-update"),this.subview=null,(t=this._highlightView)==null||t.destroy(),this._exportImageVersion=-1}moveStart(){}viewChange(){}moveEnd(){this.requestUpdate()}highlight(e,t){if(!((Array.isArray(e)?e[0]:q.isCollection(e)?e.getItemAt(0):e)instanceof f))return{remove:()=>{}};let i=[];return Array.isArray(e)||q.isCollection(e)?i=e.map(r=>r.clone()):e instanceof f&&(i=[e.clone()]),this._highlightGraphics.addMany(i),{remove:()=>{this._highlightGraphics.removeMany(i)}}}async doRefresh(){this.requestUpdate()}isUpdating(){return!this.subview||this.subview.updating}_setSubView(){var i,r;if(!this.view)return;const e=(i=this.layer.renderer)==null?void 0:i.type;let t="imagery";if(e==="vector-field"?t="imageryVF":e==="flow"&&(t="flow"),this.subview){const{type:s}=this.subview;if(s===t)return this._attachSubview(this.subview),void(s==="flow"?this.subview.redrawOrRefetch():s==="imagery"&&this.layer.format==="lerc"?this.subview.redraw():this.requestUpdate());this._detachSubview(this.subview),(r=this.subview)==null||r.destroy()}this.subview=t==="imagery"?new ne({layer:this.layer,view:this.view,timeExtent:this.timeExtent}):t==="imageryVF"?new pe({layer:this.layer,view:this.view,timeExtent:this.timeExtent}):new J({layer:this.layer,layerView:this}),this._attachSubview(this.subview),this.requestUpdate()}_attachSubview(e){e&&!e.attached&&(e.attach(),e.attached=!0,this.container.addChildAt(e.container,0),e.container.blendMode=this.layer.blendMode,e.container.effect=this.layer.effect)}_detachSubview(e){e!=null&&e.attached&&(this.container.removeChild(e.container),e.detach(),e.attached=!1)}};a([o()],x.prototype,"pixelData",null),a([o()],x.prototype,"subview",void 0),x=a([v("esri.views.2d.layers.ImageryLayerView2D")],x);const ht=x;export{ht as default};