@geoscene/core 4.34.8 → 4.34.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/analysis/ViewshedVideo.js +5 -0
  2. package/analysis/viewshedVideo/ViewshedAnalysisView3DVideo.js +5 -0
  3. package/analysis/viewshedVideo/ViewshedComputedDataVideo.js +5 -0
  4. package/analysis/viewshedVideo/ViewshedSubVisualizationVideo.js +5 -0
  5. package/analysis/viewshedVideo/ViewshedVisualizationVideo.js +5 -0
  6. package/analysis/viewshedVideo/render/ViewshedTechniqueVideo.js +5 -0
  7. package/analysis/viewshedVideo/render/ViewshedVideo.glsl.js +243 -0
  8. package/analysis/viewshedVideo/render/ViewshedVideo.js +5 -0
  9. package/assets/geoscene/core/workers/chunks/0f4e9846d074864b39c2.js +1 -1
  10. package/assets/geoscene/core/workers/chunks/38b9ec5f73f2467262dc.js +1 -1
  11. package/assets/geoscene/core/workers/chunks/50e1c63d0b6196dd365e.js +1 -1
  12. package/assets/geoscene/core/workers/chunks/bc3df7ef6d001bb8192e.js +1 -1
  13. package/assets/geoscene/core/workers/chunks/db8d4a12a67a62ec3704.js +1 -1
  14. package/assets/geoscene/core/workers/chunks/dfbf2e17058aa876f96a.js +1 -1
  15. package/bundle/lib/fflate.js +12 -0
  16. package/interfaces.d.ts +15 -0
  17. package/layers/MapImageTileLayer.js +355 -0
  18. package/layers/mixins/SceneService.js +1 -1
  19. package/layers/mixins/SublayersOwner.js +1 -1
  20. package/layers/mixins/operationalLayers.js +1 -1
  21. package/layers/support/LercWorker.js +1 -5
  22. package/layers/support/layersCreator.js +1 -1
  23. package/layers/support/lazyLayerLoader.js +1 -1
  24. package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
  25. package/layers/support/rasterFormats/ImageCanvasDecoder.js +1 -1
  26. package/layers/support/rasterFormats/RasterCodec.js +1 -1
  27. package/layers/voxel/drill/VoxelContinuousDrill.js +5 -0
  28. package/layers/voxel/drill/VoxelDiscreteDrill.js +5 -0
  29. package/layers/voxel/drill/common.js +5 -0
  30. package/package.json +1 -1
  31. package/portal/support/portalLayers.js +1 -1
  32. package/rest/query/executeQueryFGB.js +1 -0
  33. package/rest/query/operations/flatgeobufGeojson.js +3 -0
  34. package/rest/query/operations/flatgeobufGeojson.min.js +15 -0
  35. package/rest/query/operations/query.js +1 -1
  36. package/rest/query.d.ts +1 -0
  37. package/rest/query.js +1 -1
  38. package/views/3d/analysis/analysisViewModuleImportUtils.js +1 -1
  39. package/views/3d/layers/I3SMeshView3D.js +1 -1
  40. package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
  41. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  42. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  43. package/views/3d/layers/ViewshedLayerView3D.js +1 -1
  44. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  45. package/views/3d/layers/i3s/I3SNodeLoader.js +1 -1
  46. package/views/3d/layers/support/LayerViewAnalysisViewManager.js +1 -1
  47. package/views/draw/expert/AttackArrowDrawer.js +5 -0
  48. package/views/draw/expert/AttackTailedArrowDrawer.js +5 -0
  49. package/views/draw/expert/BaseDrawer.js +5 -0
  50. package/views/draw/expert/Constant.js +5 -0
  51. package/views/draw/expert/CurveDrawer.js +5 -0
  52. package/views/draw/expert/CurveFlagDrawer.js +5 -0
  53. package/views/draw/expert/CurvedArrowDrawer.js +5 -0
  54. package/views/draw/expert/EllipseDrawer.js +5 -0
  55. package/views/draw/expert/ExpertDraw.js +5 -0
  56. package/views/draw/expert/GatheringPlaceDrawer.js +5 -0
  57. package/views/draw/expert/LuneDrawer.js +5 -0
  58. package/views/draw/expert/PincerArrowDrawer.js +5 -0
  59. package/views/draw/expert/SectorDrawer.js +5 -0
  60. package/views/draw/expert/SquadCombatDrawer.js +5 -0
  61. package/views/draw/expert/StraightArrowDrawer.js +5 -0
  62. package/views/draw/expert/TailedSquadCombatDrawer.js +5 -0
  63. package/views/draw/expert/plot/Constants.js +5 -0
  64. package/views/draw/expert/plot/PlotTypes.js +5 -0
  65. package/views/draw/expert/plot/plots/Arc.js +41 -0
  66. package/views/draw/expert/plot/plots/AssaultDirection.js +15 -0
  67. package/views/draw/expert/plot/plots/AttackArrow.js +5 -0
  68. package/views/draw/expert/plot/plots/Circle.js +5 -0
  69. package/views/draw/expert/plot/plots/ClosedCurve.js +5 -0
  70. package/views/draw/expert/plot/plots/Curve.js +5 -0
  71. package/views/draw/expert/plot/plots/CurveFlag.js +5 -0
  72. package/views/draw/expert/plot/plots/CurvedArrow.js +5 -0
  73. package/views/draw/expert/plot/plots/DoubleArrow.js +5 -0
  74. package/views/draw/expert/plot/plots/Ellipse.js +5 -0
  75. package/views/draw/expert/plot/plots/FineArrow.js +5 -0
  76. package/views/draw/expert/plot/plots/FreehandLine.js +19 -0
  77. package/views/draw/expert/plot/plots/FreehandPolygon.js +19 -0
  78. package/views/draw/expert/plot/plots/GatheringPlace.js +5 -0
  79. package/views/draw/expert/plot/plots/Lune.js +5 -0
  80. package/views/draw/expert/plot/plots/Marker.js +16 -0
  81. package/views/draw/expert/plot/plots/Plot.js +5 -0
  82. package/views/draw/expert/plot/plots/Polygon.js +18 -0
  83. package/views/draw/expert/plot/plots/Polyline.js +19 -0
  84. package/views/draw/expert/plot/plots/Rectangle.js +28 -0
  85. package/views/draw/expert/plot/plots/Sector.js +5 -0
  86. package/views/draw/expert/plot/plots/SquadCombat.js +5 -0
  87. package/views/draw/expert/plot/plots/StraightArrow.js +5 -0
  88. package/views/draw/expert/plot/plots/TailedAttackArrow.js +5 -0
  89. package/views/draw/expert/plot/plots/TailedSquadCombat.js +5 -0
  90. package/views/draw/expert/plot/utils/plot_util.js +5 -0
  91. package/views/layers/support/MapServiceLayerViewHelper.js +1 -1
  92. package/widgets/Features/FeaturesViewModel.js +1 -1
  93. package/widgets/LayerList/LayerListItem.js +1 -1
  94. package/widgets/Legend/LegendViewModel.js +1 -1
  95. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.33/geoscene/copyright.txt for details.
4
+ */
5
+ import{__decorate as e}from"tslib";import{featureReferenceEquals as r}from"../analysis/featureReferenceUtils.js";import{equalsMaybe as a}from"../core/maybe.js";import{property as l}from"../core/accessorSupport/decorators/property.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import geosceneError from"../core/Error.js";import{Texture}from"../views/3d/webgl-engine/lib/Texture.js";import VideoElement from"../layers/support/VideoElement.js";import Color from"../Color.js";import Viewshed from"../analysis/Viewshed.js";async function loadVideo(b){if(b instanceof HTMLVideoElement||b instanceof ImageData){return b}const videoParamTemp=new VideoElement({video:b,});await videoParamTemp.load();return videoParamTemp.content}function formatColor(b){return b instanceof Color?b:new Color(b)}let u=class extends(Viewshed){constructor(s){super(s);this._texture=undefined;this._type='video';this._limitHorizontal=90.0;this._limitVertical=60.0;this._textureVertical=1.0;this._parameters={opacity:0.7,fisheyeLens:false,frustum:false,shadowColor:[0,0,0,0.5],trimmingVertical:0.0,...s,}}get textureVertical(){return this._textureVertical}get limitHorizontal(){return this._limitHorizontal}get limitVertical(){return this._limitVertical}set fisheyeLens(fisheye){this._parameters.fisheyeLens=fisheye}get fisheyeLens(){return this._parameters?.fisheyeLens}get type(){return this._type}get parameters(){return this._parameters}get texture(){return this._texture}set texture(tex){this._texture=tex}get video(){return this.texture?._data}get opacity(){return this._texture?._parameters.opacity}set opacity(opa){if(this._texture){this._texture._parameters.opacity=opa}}async loadVideo(videoUrl){if(!videoUrl){throw new Error("请传入视频地址")}const video=await loadVideo(videoUrl);const width=video instanceof HTMLImageElement?video.naturalWidth:video.width,height=video instanceof HTMLImageElement?video.naturalHeight:video.height;if("getFrame"in video)throw new geosceneError("media-layer-view-3d","animation is not supported");const{opacity,fisheyeLens,view}=this.parameters;const shadowColorTemp=formatColor(this.parameters.shadowColor)?.toRgba();const shadowColor=shadowColorTemp.slice(0,3);const shadowOpacity=shadowColorTemp[3];this.texture=new Texture(video,{wrap:{s:33071,t:33071},preMultiplyAlpha:!0,width,height,mipmap:!0,reloadable:!0,opacity,fisheyeLens,shadowColor,shadowOpacity,textureVertical:this.textureVertical,view,updateCallback:function(){return view.basemapTerrain.overlayManager.requestRender()}});return this.texture}equals(e){return a(this.observer,e.observer)&&this.farDistance===e.farDistance&&this.heading===e.heading&&this.tilt===e.tilt&&this.horizontalFieldOfView===e.horizontalFieldOfView&&this.verticalFieldOfView===e.verticalFieldOfView&&this.trimmingVertical===e.trimmingVertical&&this.frustum===e.frustum&&r(this.feature,e.feature)}clearVideo(){this._texture?._data?.pause();this._texture?._data?.remove()}destroy(){this.clearVideo();this._texture?.unload();this._texture?.dispose();super.destroy()}};e([l({type:Number,nonNullable:!0,range:{min:-10,max:10},json:{write:{isRequired:!0}}})],u.prototype,"trimmingVertical",void 0),e([l({type:Boolean,})],u.prototype,"frustum",void 0),u=e([p("geoscene.analysis.ViewshedVideo")],u);export{u as default};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.34/geoscene/copyright.txt for details.
4
+ */
5
+ import{__decorate as e}from"tslib";import{getFeatureId as t,updatePointsFromFeatureReference as s}from"../../analysis/featureReferenceUtils.js";import"../../core/has.js";import i from"../../core/Logger.js";import{mapCollection as r}from"../../core/mapCollectionUtils.js";import{abortMaybe as o,destroyMaybe as a}from"../../core/maybe.js";import{watch as d,initial as n,when as l,syncAndInitial as h}from"../../core/reactiveUtils.js";import{property as p}from"../../core/accessorSupport/decorators/property.js";import"../../core/RandomLCG.js";import{subclass as c}from"../../core/accessorSupport/decorators/subclass.js";import{d as u,q as m}from"../../chunks/vec32.js";import{create as v}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{canProjectWithoutEngine as w,isLoaded as f,projectOrLoad as V}from"../../geometry/projectionUtils.js";import{projectBoundingRect as y}from"../../geometry/projection/projectBoundingRect.js";import{empty as _,containsPoint as g}from"../../geometry/support/aaBoundingRect.js";import{AnalysisView3D as j}from"../../views/3d/analysis/AnalysisView3D.js";import{logFailedGeometryProjectionError as R}from"../../views/3d/analysis/support/projectionUtils.js";import{ViewshedComputedDataVideo as b}from"../../analysis/viewshedVideo/ViewshedComputedDataVideo.js";import D from"../../views/3d/analysis/Viewshed/ViewshedTool.js";import{ViewshedVisualizationVideo as C}from"../../analysis/viewshedVideo/ViewshedVisualizationVideo.js";import{Intersector as F}from"../../views/3d/webgl-engine/lib/Intersector.js";import{ViewshedVideo as H}from"../../analysis/viewshedVideo/render/ViewshedVideo.js";import{connectAnalysisViewToTool as O,removeAnalysisViewTool as U,startPlaceOperation as S}from"../../views/analysis/analysisViewUtils.js";let A=class extends j{constructor(e){super(e),this.type="viewshed-view-3d",this.analysis=null,this.tool=null,this._selectedViewshed=null,this.viewshedComputedDataHandles=null,this.userOperation=null,this._viewshedRenderNode=null,this._intersector=null}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get selectedViewshed(){return this._selectedViewshed}set selectedViewshed(e){this._unselectOtherViewsheds(e),this._selectedViewshed=e}get selectedViewshedComputedData(){return this.tool?.selectedViewshedComputedData}get _isDecoration(){return!this.parent}initialize(){const e=this.view;this._viewshedRenderNode=new H({view:e,selectedViewshed:()=>this.selectedViewshed??this.tool?.stagedViewshed,isDecoration:this._isDecoration}),this._intersector=new F(this.view.state.viewingMode),this._intersector.options.hud=!1,this._intersector.options.store=0,this.viewshedComputedDataHandles=r(()=>this.analysis.viewsheds,t=>{const s=new b({renderCoordsHelper:e.renderCoordsHelper,viewshed:t}),r=Symbol();return this.addHandles([d(()=>({valid:s.valid,canProject:w(s.observer?.spatialReference,this.view.spatialReference)||f()}),({valid:e,canProject:t},r)=>{this.visible&&(e&&t?this._addViewshedsToRenderer(s):r?.valid&&r?.canProject&&this._removeViewshedsFromRenderer(s),t||R(this.analysis,s.observer.spatialReference,i.getLogger(this)))},n),...this._createFeatureReferenceHandles(s)],r),{viewshedComputedData:s,remove:()=>{this.removeHandles(r),this._removeViewshedsFromRenderer(s),s.destroy()}}}),this._visualization=new C({view:e,analysisViewData:this,isDecoration:this._isDecoration}),this.addHandles([d(()=>this.visible,e=>{const t=this.viewshedComputedDataHandles;if(null==t)return;e||(this.selectedViewshed=null);const s=t.map(e=>e.viewshedComputedData).filter(e=>e.valid).toArray();e?this._addViewshedsToRenderer(s):this._removeViewshedsFromRenderer(s)}),d(()=>e.renderCoordsHelper,e=>{this.viewshedComputedDataHandles?.forEach(({viewshedComputedData:t})=>t.renderCoordsHelper=e)}),O(this,D),l(()=>this.interactive,()=>{this._unselectOtherViewsheds(this.selectedViewshed)},h)])}destroy(){this.userOperation=o(this.userOperation),U(this),this._visualization=a(this._visualization);const e=this.viewshedComputedDataHandles;null!=e&&this._removeViewshedsFromRenderer(e.map(e=>e.viewshedComputedData).toArray())}_createFeatureReferenceHandles(e){const{view:t}=this;return[d(()=>[t.state.camera,t.slice.plane,e.viewshed.observer,e.targetRenderSpace,e.verticalFieldOfView,e.horizontalFieldOfView,e.feature],()=>{this._updateObserverFromFeature(t,e)},n),this._createElevationUpdateHandle(e),l(()=>e.needUpdateByFeature,()=>{this._updateObserverFromFeature(t,e),e.needUpdateByFeature=!1})]}_createElevationUpdateHandle(e){const t=(s,i)=>{const{view:r}=this,{observer:o}=e;if(null==o)return;const a=V(o,r.spatialReference);if(null!=a.pending)return void a.pending.finally(()=>t(s,i));const d=a.geometry;null!=d&&(y(s,i,z,r.spatialReference),g(z,[d.x,d.y])&&(e.needUpdateByFeature=!0))};return this.view.elevationProvider.on("elevation-change",({extent:e,spatialReference:s})=>t(e,s))}async createViewsheds(e){await S(this,{placementOptions:e,onToolActivated:e=>e.place("multiple")})}place(e){return S(this,{placementOptions:e,onToolActivated:e=>e.place("single")})}_addViewshedsToRenderer(e){this._viewshedRenderNode.updateViewsheds({adds:e})}_removeViewshedsFromRenderer(e){this._viewshedRenderNode.updateViewsheds({removes:e})}_updateObserverFromFeature(e,i){const r=i.observerRenderSpace,o=i.targetRenderSpace,a=u(v(),r),d={observer:r,observerSurfaceNormal:null,observerAdjusted:a,observerFeatureId:t(i.feature),target:o,targetSurfaceNormal:null,targetAdjusted:u(v(),o),targetFeatureId:null};s(e,this._intersector,d,e=>Math.min(e,.05*i.farDistanceRenderSpace)),i.observerRenderSpaceOverride=m(a,r)?null:a}_unselectOtherViewsheds(e){if(null!=e)for(const t of this.view.tools.items)t!==this.tool&&t instanceof D&&(t.analysisViewData.selectedViewshed=null)}get test(){}};e([p({readOnly:!0})],A.prototype,"type",void 0),e([p({constructOnly:!0,nonNullable:!0})],A.prototype,"analysis",void 0),e([p()],A.prototype,"tool",void 0),e([p()],A.prototype,"_selectedViewshed",void 0),e([p()],A.prototype,"selectedViewshed",null),e([p()],A.prototype,"selectedViewshedComputedData",null),e([p()],A.prototype,"viewshedComputedDataHandles",void 0),e([p()],A.prototype,"userOperation",void 0),e([p()],A.prototype,"_visualization",void 0),e([p()],A.prototype,"_viewshedRenderNode",void 0),A=e([c("geoscene.views.3d.analysis.ViewshedAnalysisView3DVideo")],A);const N=A,z=_();export{N as default};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.34/geoscene/copyright.txt for details.
4
+ */
5
+ import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import{deg2rad as r}from"../../core/mathUtils.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{create as s}from"../../core/libs/gl-matrix-2/factories/mat4f64.js";import{a as n,g as l,h,i as a,n as p,u as c}from"../../chunks/vec32.js";import{create as d,fromArray as f,fromValues as u}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import v from"../../geometry/Point.js";import{rotateBy as g}from"../../views/3d/analysis/Viewshed/viewshedToolUtils.js";var S;let m=S=class extends t{constructor(e){super(e),this.observerRenderSpaceOverride=null,this.needUpdateByFeature=!1}get observer(){return this.viewshed.observer??new v}get effectiveObserverRenderSpace(){return this.observerRenderSpaceOverride??this.observerRenderSpace}get effectiveObserver(){return this.renderSpaceToPoint(this.effectiveObserverRenderSpace,this.observer.spatialReference)}get effectiveTargetRenderSpace(){return this._computeTargetRenderSpace(this.effectiveObserverRenderSpace)}get farDistance(){return this.viewshed.farDistance}get farDistanceRenderSpace(){return this.farDistance/this.metersPerUnit}get heading(){return this.viewshed.heading}get tilt(){return this.viewshed.tilt}get feature(){return this.viewshed.feature}get tiltParallelToSurface(){return this.tilt-90}get horizontalFieldOfView(){return this.viewshed.horizontalFieldOfView}get verticalFieldOfView(){return this.viewshed.verticalFieldOfView}get observerRenderSpace(){return this._pointToRenderSpace(this.observer,d())}get target(){const e=this.targetRenderSpace;return this.renderSpaceToPoint(e,this.observer.spatialReference)}get targetRenderSpace(){return this._computeTargetRenderSpace(this.observerRenderSpace)}get targetDirection(){const e=n(d(),this.targetRenderSpace,this.observerRenderSpace);return p(e,e)}get tiltedUpVector(){const e=g(d(),this.upVector,-r(this.tiltParallelToSurface),this.leftVector);return p(e,e)}get _basis(){return this.renderCoordsHelper.basisMatrixAtPosition(this.observerRenderSpace,s())}get upVector(){const e=this._basis;return u(e[8],e[9],e[10])}get northVector(){const e=this._basis;return u(e[4],e[5],e[6])}get leftVector(){const e=this.upVector,t=g(d(),this.northVector,-r(this.heading),e);return a(t,e,t)}get rightVector(){return c(d(),this.leftVector)}clone(){return new S({renderCoordsHelper:this.renderCoordsHelper,viewshed:this.viewshed.clone()})}get valid(){return this.viewshed.valid}get metersPerUnit(){return this.renderCoordsHelper.spatialReference.metersPerUnit}pointOnSphere(e,t,o){const{observerRenderSpace:i,targetRenderSpace:s}=this,p=n(R,s,i);return g(p,p,-r(t),this.leftVector),g(p,p,-r(e),this.tiltedUpVector),l(o,p,i)}cornerPoints(e){const t=this.horizontalFieldOfView/2,r=this.verticalFieldOfView/2+this.trimmingVertical;this.pointOnSphere(-t,r,e.topLeft),this.pointOnSphere(t,r,e.topRight),this.pointOnSphere(-t,-r,e.bottomLeft),this.pointOnSphere(t,-r,e.bottomRight)}arcCentersPoints(e){const t=this.horizontalFieldOfView/2,r=this.verticalFieldOfView/2;this.pointOnSphere(0,r,e.top),this.pointOnSphere(0,-r,e.bottom),this.pointOnSphere(-t,0,e.left),this.pointOnSphere(t,0,e.right)}parallelCenterPoints(e){const t=this.observerRenderSpace,o=this.farDistanceRenderSpace*Math.sin(r(this.verticalFieldOfView/2)),i=h(R,this.tiltedUpVector,o);l(e.top,t,i),n(e.bottom,t,i)}renderSpaceToPoint(e,t){const r=R;return this.renderCoordsHelper.fromRenderCoords(e,r,t),new v(r[0],r[1],r[2],t)}_pointToRenderSpace(e,t){const r=f(e.toArray());return this.renderCoordsHelper.toRenderCoords(r,e.spatialReference,t),t}_computeTargetRenderSpace(e){const{leftVector:t,northVector:o,upVector:i}=this,s=this.farDistanceRenderSpace,n=d();return h(n,o,s),g(n,n,-r(this.heading),i),g(n,n,-r(this.tiltParallelToSurface),t),l(n,e,n),n}};e([o()],m.prototype,"renderCoordsHelper",void 0),e([o()],m.prototype,"viewshed",void 0),e([o()],m.prototype,"observerRenderSpaceOverride",void 0),e([o()],m.prototype,"needUpdateByFeature",void 0),e([o()],m.prototype,"observer",null),e([o()],m.prototype,"effectiveObserverRenderSpace",null),e([o()],m.prototype,"effectiveObserver",null),e([o()],m.prototype,"effectiveTargetRenderSpace",null),e([o()],m.prototype,"farDistance",null),e([o()],m.prototype,"farDistanceRenderSpace",null),e([o()],m.prototype,"heading",null),e([o()],m.prototype,"tilt",null),e([o()],m.prototype,"feature",null),e([o()],m.prototype,"tiltParallelToSurface",null),e([o()],m.prototype,"horizontalFieldOfView",null),e([o()],m.prototype,"verticalFieldOfView",null),e([o()],m.prototype,"observerRenderSpace",null),e([o()],m.prototype,"target",null),e([o()],m.prototype,"targetRenderSpace",null),e([o()],m.prototype,"targetDirection",null),e([o()],m.prototype,"tiltedUpVector",null),e([o()],m.prototype,"_basis",null),e([o()],m.prototype,"upVector",null),e([o()],m.prototype,"northVector",null),e([o()],m.prototype,"leftVector",null),e([o()],m.prototype,"rightVector",null),e([o()],m.prototype,"valid",null),e([o()],m.prototype,"metersPerUnit",null),m=S=e([i("geoscene.views.3d.analysis.Viewshed.ViewshedComputedDataVideo")],m);const R=d();export{m as ViewshedComputedDataVideo};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.34/geoscene/copyright.txt for details.
4
+ */
5
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import i from"../../core/Accessor.js";import"../../core/has.js";import{equals as s}from"../../core/lang.js";import{deg2rad as o}from"../../core/mathUtils.js";import{destroyMaybe as r}from"../../core/maybe.js";import{initial as l,watch as a}from"../../core/reactiveUtils.js";import{property as n}from"../../core/accessorSupport/decorators/property.js";import"../../core/Logger.js";import{subclass as c}from"../../core/accessorSupport/decorators/subclass.js";import{fromRotation as h}from"../../core/libs/gl-matrix-2/math/mat4.js";import{create as m}from"../../core/libs/gl-matrix-2/factories/mat4f64.js";import{a as p,d as E,g as b,H as _,h as f,j as u,n as V,p as v,t as d,u as w}from"../../chunks/vec32.js";import{clone as C,create as g}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{arcAnglePerSegment as A,viewshedVisualizationConfiguration as L}from"../../views/3d/analysis/Viewshed/ViewshedConfiguration.js";import{ViewshedShapeVisualElement as D}from"../../views/3d/analysis/Viewshed/ViewshedShapeVisualElement.js";import y from"../../views/3d/analysis/Viewshed/ViewshedTool.js";import{LineVisualElement as j}from"../../views/3d/interactive/visualElements/LineVisualElement.js";import{PointVisualElement as F}from"../../views/3d/interactive/visualElements/PointVisualElement.js";import{createStipplePatternSimple as R}from"../../views/3d/webgl-engine/materials/lineStippleUtils.js";import Graphic from"../../Graphic.js";import Mesh from"../../geometry/Mesh.js";import GraphicsLayer from"../../layers/GraphicsLayer.js";let S=class extends i{constructor(e){super(e),this.visible=!0,this._viewshedCorners={topLeft:g(),topRight:g(),bottomLeft:g(),bottomRight:g()},this._arcCenterPoints={top:g(),bottom:g(),left:g(),right:g()},this._parallelCenters={top:g(),bottom:g()}}initialize(){const e={view:this.view,isDecoration:!0},t={...e,color:this._color,renderOccluded:4},i={...t,stipplePattern:R(2)};this._observerVisualElement=new F({...e,...L.observerPointConfiguration}),this._shapeVisualElement=new D({...e,isDecoration:this.isDecoration}),this._frameLinesVisualElement=new j(t),this._leftArcVisualElement=new j(t),this._rightArcVisualElement=new j(t),this._topArcVisualElement=new j(t),this._bottomArcVisualElement=new j(t),this._centralLongitude=new j(i),this._centralLatitude=new j(i),this.addHandles([a(()=>{const e=this.viewshedComputedData;if(!e?.valid)return null;const viewshed=this.viewshedComputedData.viewshed;if(viewshed?.type!=='video'||viewshed?.fisheyeLens){e.trimmingVertical=0.0}else{e.trimmingVertical=viewshed.trimmingVertical??0.0}const t=this._viewshedCorners,i=this._arcCenterPoints,s=this._parallelCenters;return e.cornerPoints(t),e.arcCentersPoints(i),e.parallelCenterPoints(s),{viewshedComputedData:e,corners:t,arcCenters:i,parallelCenters:s,interactive:this.analysisViewData.interactive,selected:this._selected}},e=>{const t=null!=e;e.viewshedComputedData.viewshed.finishedVideo=this.analysisViewData?.tool?.selectedViewshed?true:false;this._forEachVisualElement(e=>e.attached=t),t&&this._updateVisualElements(e)},{initial:!0,equals:s}),a(()=>{const{viewshedComputedData:e}=this,{horizontalFieldOfView:t,verticalFieldOfView:i}=e??{};return{viewshedComputedData:e,horizontalFieldOfView:t,verticalFieldOfView:i}},({viewshedComputedData:e})=>{const{_shapeVisualElement:t}=this;e!==t.viewshedComputedData&&(t.viewshedComputedData=e),this._shapeVisualElement.recreateGeometry()},l),a(()=>{const{interactive:e}=this.analysisViewData;return{visible:this.visible,selected:e&&this._selected,staged:e&&this._staged,horFovNot360:360!==this.viewshedComputedData?.horizontalFieldOfView}},({visible:e,selected:t,staged:i,horFovNot360:s})=>{const o=t||i;this._shapeVisualElement.visible=e,this._topArcVisualElement.visible=e,this._bottomArcVisualElement.visible=e,this._frameLinesVisualElement.visible=e&&s;const r=e&&(t||s);this._leftArcVisualElement.visible=r,this._rightArcVisualElement.visible=r,this._forEachLineVisualElement(e=>{e.width=o?L.frameWidthSelected:L.frameWidthNotSelected,e.renderOccluded=t?4:1}),[this._centralLatitude,this._centralLongitude].forEach(i=>{i.width=2*(o?L.frameWidthSelected:L.frameWidthNotSelected),i.visible=e&&t})},l),a(()=>{const{analysisViewData:{interactive:e,tool:t},_selected:i,visible:s}=this,o=this.view.activeTool,r=!t?.active&&o instanceof y&&o.creating;return{observerVisible:s&&!i&&(!e||(t?.creating??!1)||r),color:this._color}},({observerVisible:e,color:t})=>{this._observerVisualElement.visible=e,this._forEachLineVisualElement(e=>e.color=t)},l)])}get _color(){const{viewshedComputedData:e,_selected:i,analysisViewData:s}=this;if(null==e)return t.toUnitRGBA(L.frameColor);const o=s.tool?.active||s.interactive,r=e.viewshed===s.tool?.stagedViewshed,a=o&&(i||r)?this.view.effectiveTheme.accentColor:L.frameColor;return t.toUnitRGBA(a)}get _selected(){const{viewshedComputedData:e,analysisViewData:{selectedViewshedComputedData:t}}=this;return null!=e&&e===t}get _staged(){const{analysisViewData:{tool:e},viewshedComputedData:t}=this;return null!=e&&e.creating&&e.stagedViewshed===t?.viewshed}destroy(){this._observerVisualElement=r(this._observerVisualElement),this._shapeVisualElement=r(this._shapeVisualElement),this._frameLinesVisualElement=r(this._frameLinesVisualElement),this._leftArcVisualElement=r(this._leftArcVisualElement),this._rightArcVisualElement=r(this._rightArcVisualElement),this._topArcVisualElement=r(this._topArcVisualElement),this._bottomArcVisualElement=r(this._bottomArcVisualElement),this._centralLongitude=r(this._centralLongitude),this._centralLatitude=r(this._centralLatitude);this._videoFrustumLayer?.removeAll();this._videoFrustumLayer=undefined}_forEachLineVisualElement(e){[this._frameLinesVisualElement,this._leftArcVisualElement,this._rightArcVisualElement,this._topArcVisualElement,this._bottomArcVisualElement,this._centralLatitude,this._centralLongitude].forEach(e)}_forEachVisualElement(e){this._forEachLineVisualElement(e),e(this._observerVisualElement),e(this._shapeVisualElement)}_updateVisualElements(e){const{viewshedComputedData:t,corners:i,arcCenters:s,parallelCenters:o}=e,r=C(t.observerRenderSpace);const tool=this.analysisViewData.tool;const viewshed=t.viewshed;const finishedVideo=viewshed.finishedVideo;if(viewshed.type==='video'){let horizontalFieldOfView=t.horizontalFieldOfView;let verticalFieldOfView=t.verticalFieldOfView;const fieldOfViewH=viewshed.limitHorizontal;const fieldOfViewV=viewshed.limitVertical;if(horizontalFieldOfView>fieldOfViewH){e.viewshedComputedData.horizontalFieldOfView=fieldOfViewH;return};if(verticalFieldOfView>fieldOfViewV){e.viewshedComputedData.verticalFieldOfView=fieldOfViewV;return}if(!this._videoFrustumLayer){this._videoFrustumLayer=new GraphicsLayer({title:'视频融合视椎体',listMode:'hide'});this.view.map.add(this._videoFrustumLayer);a((()=>this.visible),(e=>this._videoFrustumLayer.visible=e),l);a((()=>viewshed.frustum),(e=>{this._videoFrustumLayer.visible=e;this._updateVideoFrustum(e.viewshedComputedData,s)}),l)}if(!tool||(finishedVideo||tool?.selectedViewshed)){this._forEachVisualElement((e=>e.attached=false));if(viewshed.frustum===true){this._updateVideoFrustum(e.viewshedComputedData,s)}else{this._videoFrustumLayer.visible=false}}}this._observerVisualElement.geometry=t.observer,this._shapeVisualElement.updateTransform(),this._updateFrameLines(r,i),this._updateFrameArcs(t,i,o),this._updateCentralHelperArcs(t,s)}_updateVideoFrustum(){const{_viewshedCorners,viewshedComputedData}=this;let center=_viewshedCorners.center||viewshedComputedData.observerRenderSpace;let bottomLeft=_viewshedCorners.bottomLeft;let bottomRight=_viewshedCorners.bottomRight;let topLeft=_viewshedCorners.topLeft;let topRight=_viewshedCorners.topRight;const spatialReference=viewshedComputedData.observer.spatialReference;function renderSpaceToPoint(renderSpace){const spatialCoordinates=viewshedComputedData.renderSpaceToPoint(renderSpace,spatialReference);return[spatialCoordinates.x,spatialCoordinates.y,spatialCoordinates.z,]};let cameraPositionGeographic=[...renderSpaceToPoint(center),...renderSpaceToPoint(topLeft),...renderSpaceToPoint(topRight),...renderSpaceToPoint(bottomRight),...renderSpaceToPoint(bottomLeft)];const transparentMaterial={color:"transparent"};const faceConfigurations=[[0,2,1],[0,2,3],[0,3,4],[0,4,1],[1,2,4],[2,3,4]];const mesh=new Mesh({vertexAttributes:{position:cameraPositionGeographic,},components:faceConfigurations.map(faces=>({faces,material:transparentMaterial})),spatialReference,});const frustumGraphic=new Graphic({geometry:mesh,symbol:{type:"mesh-3d",symbolLayers:[{type:"fill",material:{color:"red"},edges:{type:"solid",color:"rgba(255, 127, 0, 1)",size:2},},],},});this._videoFrustumLayer.graphics=[frustumGraphic]}_updateFrameLines(e,t){this._frameLinesVisualElement.geometry=[[e,t.topLeft],[e,t.topRight],[e,t.bottomLeft],[e,t.bottomRight]]}_updateFrameArcs(e,t,i){const{observerRenderSpace:s,rightVector:r,horizontalFieldOfView:a,tiltedUpVector:l}=e,n=o(a),c=g(),p=m();h(p,n/2,l),d(c,r,p),O(this._leftArcVisualElement,s,t.bottomLeft,t.topLeft,"forward",c),h(p,-n/2,l),u(c,0,0,0),d(c,r,p),O(this._rightArcVisualElement,s,t.bottomRight,t.topRight,"forward",c);const _=a>180?"backward":"forward";O(this._topArcVisualElement,i.top,t.topRight,t.topLeft,_,l),O(this._bottomArcVisualElement,i.bottom,t.bottomRight,t.bottomLeft,_,l)}_updateCentralHelperArcs(e,t){const i=e.observerRenderSpace,s=e.horizontalFieldOfView>=180?"backward":"forward";O(this._centralLatitude,i,t.right,t.left,s,e.tiltedUpVector),O(this._centralLongitude,i,t.top,t.bottom,"forward",e.leftVector)}get test(){}};function O(e,t,i,s,o,r,a=A){const l=g();p(l,i,t);const n=_(l),c=g();p(c,s,t),V(c,c),f(c,c,n);let u=v(l,c);const L=C(r);"backward"===o&&(w(L,L),u=-(2*Math.PI-u));const D=[],y=Math.ceil(Math.abs(u)/a),j=m();h(j,u/y,L);const F=g();E(F,l);const R=g();E(R,i);for(let h=0;h<y;h++){const e=g();E(e,R),d(F,F,j),b(R,t,F);const i=g();E(i,R),D.push([e,i])}e.geometry=D}e([n()],S.prototype,"view",void 0),e([n({constructOnly:!0})],S.prototype,"isDecoration",void 0),e([n()],S.prototype,"analysisViewData",void 0),e([n()],S.prototype,"viewshedComputedData",void 0),e([n()],S.prototype,"visible",void 0),e([n()],S.prototype,"_color",null),e([n()],S.prototype,"_selected",null),e([n()],S.prototype,"_staged",null),S=e([c("geoscene.views.3d.analysis.Viewshed.ViewshedSubVisualizationVideo")],S);export{S as default};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.34/geoscene/copyright.txt for details.
4
+ */
5
+ import{__decorate as i}from"tslib";import s from"../../core/Accessor.js";import{destroyHandle as o}from"../../core/handleUtils.js";import"../../core/has.js";import{mapCollection as t}from"../../core/mapCollectionUtils.js";import{initial as r,watch as e}from"../../core/reactiveUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import n from"./ViewshedSubVisualizationVideo.js";let c=class extends s{get visible(){return this.analysisViewData.visible}constructor(i){super(i)}initialize(){const i=this.analysisViewData,s=t(()=>this.analysisViewData.viewshedComputedDataHandles,({viewshedComputedData:s})=>{const o=new n({view:this.view,viewshedComputedData:s,analysisViewData:i,isDecoration:this.isDecoration});return{visualization:o,remove:()=>o.destroy()}});this._subVisualizations=s,this.addHandles([o(s),e(()=>this.visible,i=>this._subVisualizations.forEach(({visualization:s})=>s.visible=i),r)])}get test(){}};i([a({constructOnly:!0})],c.prototype,"analysisViewData",void 0),i([a({constructOnly:!0,nonNullable:!0})],c.prototype,"view",void 0),i([a({constructOnly:!0})],c.prototype,"isDecoration",void 0),i([a()],c.prototype,"visible",null),c=i([l("geoscene.views.3d.analysis.Viewshed.ViewshedVisualizationVideo")],c);export{c as ViewshedVisualizationVideo};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.34/geoscene/copyright.txt for details.
4
+ */
5
+ import{ReloadableShaderModule as e}from"../../../views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as r}from"../../../views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique.js";import{Pos2Locations as o}from"../../../views/3d/webgl-engine/lib/DefaultVertexBufferLayouts.js";import{a as i}from"./ViewshedVideo.glsl.js";import{makePipelineState as s,unpremultipliedAlphaToPremultipliedAlpha as t,defaultColorWrite as l}from"../../../views/webgl/renderState.js";class a extends r{constructor(r,s){super(r,s,new e(i,()=>import("./ViewshedVideo.glsl.js")),o)}initializePipeline(){return s({colorWrite:l,blending:t})}}export{a as ViewshedTechniqueVideo};
@@ -0,0 +1,243 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.34/geoscene/copyright.txt for details.
4
+ */
5
+ import{invertOrIdentity as e}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as i,create as o}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{ScreenSpacePass as t}from"../../../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as s}from"../../../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{PiUtils as a}from"../../../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{LocalFromScreenSpacePassParameters as r,localFromScreenSpace as n}from"../../../views/3d/webgl-engine/core/shaderLibrary/util/LocalFromScreenSpace.glsl.js";import{Float2PassUniform as d}from"../../../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3PassUniform as l}from"../../../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as h}from"../../../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as v}from"../../../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{glsl as c}from"../../../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as w}from"../../../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Matrix4BindUniform as f}from"../../../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Matrix4sPassUniform as p}from"../../../views/3d/webgl-engine/core/shaderModules/Matrix4sPassUniform.js";import{Texture2DBindUniform as m}from"../../../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as g}from"../../../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ShaderBuilder as u}from"../../../views/webgl/ShaderBuilder.js";class x extends r{constructor(){super(...arguments),this.shadowMap={depthTexture:null,nearFar:[1,100],numActiveFaces:1,atlasRegions:[[0,0,1,1]]},this.targetVector=[1,0,0],this.upVector=[0,0,1],this.fovs=[45,45],this.headingAndTilt=[0,0],this.observerOffset=[0,0,0],this.projectionMatrices=i.flat(),this.viewMatrices=i.flat(),this.volumeOffset=0}}function V() {const i = new u, o = i.fragment;return i.include(t), i.include(n), o.include(s), o.include(a), o.uniforms.add(new m("depthTexture", e => e.depth?.attachment), new f("inverseProjectionMatrix", e => e.camera.inverseProjectionMatrix), new f("inverseViewNormalMatrix", ({camera: i}) => e(b, i.viewInverseTransposeMatrix)), new l("viewshedObserverOffset", e => e.observerOffset), new l("viewshedTargetVector", e => e.targetVector), new l("viewshedUpVector", e => e.upVector), new d("viewshedFOVs", e => e.fovs), new d("viewshedHeadingAndTilt", e => e.headingAndTilt), new h("videoFlag",function(e,i){return e.viewshedVideo?1:0}),new h("fisheyeLens",function(e,i){return e.viewshedVideo&&e.viewshedVideo.parameters.fisheyeLens?1:0}),new h("videoOpacity",function(e,i){return e.viewshedVideo?e.viewshedVideo.parameters.opacity:1}),new g("videoTexture",function(e,i){const o=e.viewshedVideo,s=o?._data;if(s&&!s.paused&&o&&o.update){const e=o.parameters.view;o.loadedToView||(o.load(e._stage.renderView.renderingContext),e._stage.addTexture(o),o.loadedToView=!0),o?.update(),s.playEvent||(s.addEventListener("play",function(){e._stage.renderView.requestRender()}),s.playEvent=!0)}return o?.glTexture}),new l("shadowColor",function(e){if(e.viewshedVideo){const i=e.viewshedVideo.parameters.shadowColor;return Array.isArray(i)?i:[0,0,0]}return[1,0,0]}),new h("shadowOpacity",function(e,i){return e.viewshedVideo?e.viewshedVideo.parameters.shadowOpacity:.5}),new h("textureVertical",function(e,i){return e.viewshedVideo?e.viewshedVideo.parameters.textureVertical:1}), new d("viewshedNearFar", e => e.shadowMap.nearFar ?? [1, 100]), new h("viewshedVolumeOffset", e => e.volumeOffset), new g("viewshedShadowMap", e => e.shadowMap.depthTexture), new p("viewshedProjectionMatrices", e => e.projectionMatrices, 6), new p("viewshedViewMatrices", e => e.viewMatrices, 6), new w("viewshedNumFaces", e => e.shadowMap.numActiveFaces), new v("viewshedAtlasRegions", e => e.shadowMap.atlasRegions.flat(), 24), new g("normalMap", e => e.normals)), o.constants.add("visibleColor", "vec4", [0, 1, 0, .5]), o.constants.add("occludedColor", "vec4", [1, 0, 0, .5]), o.code.add(c`vec2 getViewshedUv(vec4 worldPosition, int face) {
6
+ mat4 viewshedMatrix = viewshedProjectionMatrices[face];
7
+ vec4 viewshedUv4 = viewshedMatrix * worldPosition;
8
+ vec3 viewshedUv = viewshedUv4.xyz / viewshedUv4.w;
9
+ return viewshedUv.xy;
10
+ }
11
+ float viewshedDepthToFloat(float depth) {
12
+ return (depth - viewshedNearFar[0]) / (viewshedNearFar[1] - viewshedNearFar[0]);
13
+ }
14
+ float getOrthographicDepthToViewshed(vec4 worldPosition, int face) {
15
+ mat4 viewshedViewMatrix = viewshedViewMatrices[face];
16
+ vec4 viewshedUv4 = viewshedViewMatrix * worldPosition;
17
+ vec3 viewshedUv = viewshedUv4.xyz / viewshedUv4.w;
18
+ float depth = -viewshedUv.z;
19
+ return viewshedDepthToFloat(depth);
20
+ }
21
+ float viewshedReadShadowMapDepth(sampler2D _viewshedShadowmap, ivec2 uv) {
22
+ return texelFetch(_viewshedShadowmap, uv, 0).r;
23
+ }
24
+ float viewshedFilterShadow(sampler2D _viewshedShadowmap, vec2 uv) {
25
+ vec2 uvScaled = uv * vec2(textureSize(_viewshedShadowmap, 0));
26
+ vec2 st = fract(uvScaled);
27
+ ivec2 base = ivec2(uvScaled);
28
+ float s00 = viewshedReadShadowMapDepth( _viewshedShadowmap, ivec2(base.x, base.y ));
29
+ float s10 = viewshedReadShadowMapDepth( _viewshedShadowmap, ivec2(base.x + 1, base.y ));
30
+ float s11 = viewshedReadShadowMapDepth( _viewshedShadowmap, ivec2(base.x + 1, base.y + 1));
31
+ float s01 = viewshedReadShadowMapDepth( _viewshedShadowmap, ivec2(base.x, base.y + 1));
32
+ return mix(mix(s00, s10, st.x), mix(s01, s11, st.x), st.y);
33
+ }
34
+ float viewshedTextureAtlasLookup(sampler2D _viewshedShadowmap, vec2 uv, vec4 atlasRegion) {
35
+ vec2 atlasScale = atlasRegion.zw - atlasRegion.xy;
36
+ vec2 uvAtlas = fract(uv) * atlasScale + atlasRegion.xy;
37
+ return viewshedFilterShadow(_viewshedShadowmap, uvAtlas);
38
+ }
39
+ float getDepthFromShadowMap(vec2 uv, int face) {
40
+ int index = 4 * face;
41
+ float umin = viewshedAtlasRegions[index];
42
+ float umax = viewshedAtlasRegions[index + 1];
43
+ float vmin = viewshedAtlasRegions[index + 2];
44
+ float vmax = viewshedAtlasRegions[index + 3];
45
+ vec4 atlasRegion = vec4(umin, vmin, umax, vmax);
46
+ return viewshedTextureAtlasLookup(viewshedShadowMap, uv, atlasRegion);
47
+ }
48
+ struct ViewshedPoint {
49
+ int face;
50
+ vec2 uv;
51
+ bool isWithin;
52
+ float orthographicDepth;
53
+ };
54
+ mat3 rotationMatrix(vec3 axis, float angle)
55
+ {
56
+ float s = sin(angle);
57
+ float c = cos(angle);
58
+ float oc = 1.0 - c;
59
+ return mat3(
60
+ oc * axis.xxz * axis.xyx + vec3(c, axis.zy) * vec3(1., -s, s),
61
+ oc * axis.xyy * axis.yyz + vec3(axis.z, c, axis.x) * vec3(s, 1., -s),
62
+ oc * axis.zyz * axis.xzz + vec3(axis.yx, c) * vec3(-s, s, 1.)
63
+ );
64
+ }
65
+ float distanceToPlane(vec3 position, vec3 normal) {
66
+ return dot(position, normal);
67
+ }
68
+ bool outsideViewshed(float distance) {
69
+ return distance > -viewshedVolumeOffset;
70
+ }
71
+ bool isWithinViewshed(vec3 position) {
72
+ float positionLength = length(position - viewshedObserverOffset);
73
+ float farSphereDistance = positionLength - viewshedNearFar[1];
74
+ if (outsideViewshed(farSphereDistance)) { return false; }
75
+ float nearSphereDistance = viewshedNearFar[0] - positionLength;
76
+ if (outsideViewshed(nearSphereDistance)) { return false; }
77
+ vec3 westVector = normalize(cross(viewshedUpVector, viewshedTargetVector));
78
+ bool leftOfTarget = distanceToPlane(position, westVector) > 0.0;
79
+ if (viewshedFOVs[0] < TWO_PI) {
80
+ float horAngle = viewshedFOVs[0] / 2.0;
81
+ horAngle = leftOfTarget ? horAngle : -horAngle;
82
+ vec3 sideVector = viewshedTargetVector * rotationMatrix(viewshedUpVector, horAngle);
83
+ bool inFront = distanceToPlane(position, sideVector) > 0.0;
84
+ if (inFront) {
85
+ vec3 sideNormal = cross(viewshedUpVector, sideVector) * (leftOfTarget ? 1. : -1.);
86
+ float sideDistance = distanceToPlane(position, normalize(sideNormal));
87
+ if (outsideViewshed(sideDistance)) { return false; }
88
+ } else if (viewshedFOVs[0] < PI) { return false; }
89
+ }
90
+ if (viewshedFOVs[1] < PI) {
91
+ float t = dot(viewshedUpVector, position);
92
+ vec3 nProjVector = normalize(position - t * viewshedUpVector);
93
+ float heading = acos(clamp(dot(normalize(viewshedTargetVector), nProjVector), -1.0, 1.0));
94
+ heading = leftOfTarget ? heading : -heading;
95
+ bool aboveTarget = distanceToPlane(position, viewshedUpVector) > 0.0;
96
+ float verFOV = viewshedFOVs[1] / 2.0;
97
+ verFOV = aboveTarget ? -verFOV : verFOV;
98
+ mat3 rotateByHeading = rotationMatrix(viewshedUpVector, heading);
99
+ vec3 sideVector = viewshedTargetVector * rotationMatrix(westVector, verFOV) * rotateByHeading;
100
+ vec3 leftVector = westVector * rotateByHeading;
101
+ vec3 sideNormal = cross(sideVector, leftVector) * (aboveTarget ? 1. : -1.);
102
+ float sideDistance = distanceToPlane(position, normalize(sideNormal));
103
+ if (outsideViewshed(sideDistance)) { return false; }
104
+ }
105
+ return true;
106
+ }
107
+ bool getViewshedPoint(vec4 localPosition, out ViewshedPoint point) {
108
+ for(int i=0; i < viewshedNumFaces; i++) {
109
+ vec2 viewshedUv = getViewshedUv(localPosition, i);
110
+ if (viewshedUv.x > 0. && viewshedUv.x < 1. && viewshedUv.y > 0. && viewshedUv.y < 1.) {
111
+ float orthoDepth = getOrthographicDepthToViewshed(localPosition, i);
112
+ if (orthoDepth >= 0.) {
113
+ bool isWithin = isWithinViewshed(localPosition.xyz);
114
+ point = ViewshedPoint(i, viewshedUv, isWithin, orthoDepth);
115
+ return true;
116
+ }
117
+ }
118
+ }
119
+ return false;
120
+ }
121
+ float normalCosAngle(float linearDepth, vec3 localPosition) {
122
+ vec4 normal4 = texture(normalMap, uv);
123
+ vec3 normalN = normalize(normal4.xyz * 2.0 - 1.0);
124
+ vec3 normal = normalize((inverseViewNormalMatrix * vec4(normalN, 1.0)).xyz);
125
+ vec3 viewingDir = normalize(localPosition);
126
+ return dot(normal, viewingDir);
127
+ }
128
+
129
+
130
+
131
+
132
+ // 源码修改 第二处修改 start ======================================================
133
+ // 可视域三维坐标
134
+ vec3 getViewshedXyz(vec4 worldPosition, int face) {
135
+ mat4 viewshedMatrix = viewshedProjectionMatrices[face];
136
+ vec4 viewshedUv4 = viewshedMatrix * worldPosition;
137
+ vec3 viewshedUv = viewshedUv4.xyz / viewshedUv4.w;
138
+ return viewshedUv.xyz;
139
+ }
140
+
141
+ bool isWithinViewshed_complete(vec3 position) {
142
+ float positionLength = length(position - viewshedObserverOffset);
143
+ float farSphereDistance = positionLength - viewshedNearFar[1];
144
+ if (outsideViewshed(farSphereDistance)) { return false; }
145
+ float nearSphereDistance = viewshedNearFar[0] - positionLength;
146
+ if (outsideViewshed(nearSphereDistance)) { return false; }
147
+ vec3 westVector = normalize(cross(viewshedUpVector, viewshedTargetVector));
148
+ bool leftOfTarget = distanceToPlane(position, westVector) > 0.0;
149
+ if (viewshedFOVs[0] < TWO_PI) {
150
+ float horAngle = viewshedFOVs[0] / 2.0;
151
+ horAngle = leftOfTarget ? horAngle : -horAngle;
152
+ vec3 sideVector = viewshedTargetVector * rotationMatrix(viewshedUpVector, horAngle);
153
+ bool inFront = distanceToPlane(position, sideVector) > 0.0;
154
+ if (inFront) {
155
+ vec3 sideNormal = cross(viewshedUpVector, sideVector) * (leftOfTarget ? 1. : -1.);
156
+ float sideDistance = distanceToPlane(position, normalize(sideNormal));
157
+ if (outsideViewshed(sideDistance)) { return false; }
158
+ } else if (viewshedFOVs[0] < PI) { return false; }
159
+ }
160
+ if (viewshedFOVs[1] < PI) {
161
+ bool aboveTarget = distanceToPlane(position, viewshedUpVector) > 0.0;
162
+ float verFOV = viewshedFOVs[1] / 2.0;
163
+ verFOV = aboveTarget ? -verFOV : verFOV;
164
+ vec3 sideVector = viewshedTargetVector *
165
+ rotationMatrix(westVector, verFOV * textureVertical * 2.0f);
166
+ bool inFront = distanceToPlane(position, sideVector) > 0.0;
167
+ if (inFront) {
168
+ vec3 sideNormal = -cross(westVector, sideVector) * (aboveTarget ? 1. : -1.);
169
+ float sideDistance = distanceToPlane(position, normalize(sideNormal));
170
+ if (outsideViewshed(sideDistance)) { return false; }
171
+ } else {
172
+ return false;
173
+ }
174
+ }
175
+ return true;
176
+ }
177
+
178
+ bool getViewshedPointVideo(vec4 localPosition, out ViewshedPoint point) {
179
+ for (int i=0; i < viewshedNumFaces; i++) {
180
+ vec3 viewshedXyz = getViewshedXyz(localPosition, i);
181
+ if (!(any(lessThan(viewshedXyz.xyz, vec3(0.0)))
182
+ || any(greaterThan(viewshedXyz.xyz, vec3(1.0))))) {
183
+ float orthoDepth = getOrthographicDepthToViewshed(localPosition, i);
184
+ if (orthoDepth >= 0.) {
185
+ bool isWithin = (fisheyeLens == 1.0) ? isWithinViewshed(localPosition.xyz)
186
+ : isWithinViewshed_complete(localPosition.xyz);
187
+ point = ViewshedPoint(i, viewshedXyz.xy, isWithin, orthoDepth);
188
+ return true;
189
+ }
190
+ }
191
+ }
192
+ return false;
193
+ }
194
+ // 源码修改 第二处修改 end ======================================================
195
+
196
+
197
+
198
+
199
+
200
+ `), o.main.add(c`
201
+
202
+ float depth = depthFromTexture(depthTexture, uv);
203
+ if (depth >= 1.0 || depth <= 0.0) {
204
+ return;
205
+ }
206
+ float linearDepth = linearizeDepth(depth);
207
+ vec4 localPosition = reconstructLocalPosition(gl_FragCoord.xy, linearDepth);
208
+ ViewshedPoint point;
209
+
210
+
211
+ // 源码修改 第三处修改 start ======================================================
212
+ bool foundFace = (videoFlag == 1.0) ? getViewshedPointVideo(localPosition, point)
213
+ : getViewshedPoint(localPosition, point);
214
+
215
+ if (!foundFace || !point.isWithin) {
216
+ return;
217
+ }
218
+ float viewshedDepth = getDepthFromShadowMap(point.uv, point.face);
219
+ float distance = point.orthographicDepth;
220
+ bool visible = distance < viewshedDepth;
221
+
222
+ vec4 occludedColorShadow = vec4(shadowColor,shadowOpacity);
223
+
224
+ if(videoFlag == 1.0){
225
+ point.uv.x -= 0.0885;
226
+ point.uv.x *= 1.215;
227
+ }
228
+
229
+ vec4 videoColor = (videoFlag == 1.0) ? vec4(texture(videoTexture, point.uv).xyz,videoOpacity)
230
+ : visibleColor;
231
+
232
+ fragColor = visible ? videoColor :
233
+ ((videoFlag == 1.0) ? occludedColorShadow : occludedColor);
234
+
235
+ float cosAngle = normalCosAngle(linearDepth, localPosition.xyz);
236
+ float threshold = -0.01;
237
+ if (cosAngle > threshold) {
238
+ fragColor = (videoFlag == 1.0) ? occludedColorShadow : occludedColor;
239
+ }
240
+ // 源码修改 第三处修改 end ======================================================
241
+
242
+
243
+ `), i}const b=o(),M=Object.freeze(Object.defineProperty({__proto__:null,ViewshedPassParameters:x,build:V},Symbol.toStringTag,{value:"Module"}));export{x as V,M as a,V as b};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
+ See https://js.geoscene.cn/4.34/geoscene/copyright.txt for details.
4
+ */
5
+ import{__decorate as e}from"tslib";import s from"../../../core/Collection.js";import{deg2rad as t}from"../../../core/mathUtils.js";import{disposeMaybe as r}from"../../../core/maybe.js";import{watch as i,when as o,initial as a,sync as n}from"../../../core/reactiveUtils.js";import{property as h}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import"../../../core/RandomLCG.js";import{subclass as d}from"../../../core/accessorSupport/decorators/subclass.js";import{translate as c,fromTranslation as p,scale as w,mul as l}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{create as m}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{a as u,k as f}from"../../../chunks/vec32.js";import{create as v,fromValues as _}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{j as V}from"../../../chunks/sphere.js";import{InternalRenderCategory as g}from"../../../views/3d/webgl.js";import M from"../../../views/3d/webgl/RenderNode.js";import{ViewshedShadowMap as b}from"../../../views/3d/webgl-engine/lib/ViewshedShadowMap.js";import{V as S}from"../../../analysis/viewshedVideo/render/ViewshedVideo.glsl.js";import{ViewshedTechniqueVideo as y}from"../../../analysis/viewshedVideo/render/ViewshedTechniqueVideo.js";let j=class extends M{get shadowMap(){return this._shadowMap}get hasViewsheds(){return this._viewsheds.length>0}get _contentPixelRatio(){return this.view.state.contentPixelRatio}get _viewshedsInView(){return this._viewsheds.items.filter(e=>x(this.view,e))}constructor(e){super(e),this.isDecoration=!1,this._passParameters=new S,this._viewsheds=new s,this._shadowMap=null,this.consumes={required:[g.VIEWSHED,"normals"]},this.produces=g.VIEWSHED,this.requireGeometryDepth=!0}initialize(){this._shadowMap=new b(this.fboCache),this.addHandles([i(()=>this.view.resolutionScale,e=>{const s=this._shadowMap;s&&(s.settings.textureSizeQuality=e)},a),o(()=>!this.hasViewsheds,()=>this._shadowMap?.dispose()),i(()=>this._viewshedsInView.map(e=>[e.observerRenderSpace,e.heading,e.tilt,e.farDistance,e.horizontalFieldOfView,e.verticalFieldOfView]),()=>this.requestRender(1),n)])}destroy(){this._shadowMap=r(this._shadowMap)}precompile(){if(this.hasViewsheds){this.techniques.precompile(y);for(const e of this._viewshedsInView)if(this._shadowMap?.isActive(e))return void this.view.stage.renderer.precompileViewshedShadowMap()}}render(e){const s=this.bindParameters,t=this.renderingContext,r=e.find(({name:e})=>e===g.VIEWSHED);if(!this.hasViewsheds||!s.depth||this.isDecoration&&!s.decorations)return r;this._passParameters.shadowMap=this._shadowMap??this._passParameters.shadowMap,this._passParameters.normals=e.find(({name:e})=>"normals"===e)?.getTexture();const i=this.techniques.get(y);if(!i?.compiled)return this.requestRender(1),r;const o=this.view.stage.renderer.isFeatureEnabled(7);for(const a of this._viewshedsInView){if(!this._renderShadowCubeMap(s,a,o)||!this._shadowMap?.ready)continue;const e=this._setupViewshedParameters(a,s.camera);t.bindTechnique(i,s,e),t.bindFramebuffer(r.fbo),t.screen.draw()}return this.shadowMap?.dispose(),r}updateViewsheds(e){const s=this._viewsheds,{removes:t,adds:r}=e;if(t&&(Array.isArray(t)?s.removeMany(t):s.remove(t)),r)if(Array.isArray(r)){const e=r.filter(e=>!s.includes(e));s.addMany(e)}else s.includes(r)||s.add(r)}_renderShadowCubeMap(e,s,t){const r=this._shadowMap;if(!r)return!1;const i=this.view.basemapTerrain.hasStencilEnabledExtents,o=r.start(e.camera,s,t,this._contentPixelRatio,i);return o&&r.faces.forEach(e=>this.view.stage.renderer.renderViewshedShadowMap(e)),r.finish(),o}_setupViewshedParameters(e,s){const r=this._shadowMap;if(!r)return this._passParameters;const i=this._passParameters,o=e.effectiveObserverRenderSpace;i.localOrigin=o,i.observerOffset=u(E,e.observerRenderSpace,e.effectiveObserverRenderSpace),i.fovs=[t(e.horizontalFieldOfView),t(e.verticalFieldOfView)],i.headingAndTilt=[t(e.heading),t(e.tiltParallelToSurface)],i.upVector=e.tiltedUpVector;i.viewshedVideo=e.viewshed.texture;const a=R(e.targetRenderSpace,o);i.targetVector=a;const n=new Array,h=new Array;for(let t=0;t<r.numActiveFaces;t++)c(I,r.viewshedViewMatrices[t],o),n.push(...I),P(r.viewshedProjectionMatrices[t],I,D),h.push(...D);return i.viewMatrices=n,i.projectionMatrices=h,i.volumeOffset=this.selectedViewshed?.()===e.viewshed?A(e,this.view,s.eye):0,i}get test(){return{viewsheds:this._viewsheds,shadowMap:this._shadowMap,viewshedsInView:this._viewshedsInView}}};function R(e,s){const t=v();return u(t,e,s)}function P(e,s,t){const r=_(.5,.5,.5);return p(t,r),w(t,t,r),l(t,t,e),l(t,t,s),t}function x(e,s){const t=V(s.observerRenderSpace,s.farDistanceRenderSpace);return!!e.ready&&e.frustum.intersectsSphere(t)}function A(e,s,t){if(null==e)return 0;const{observerRenderSpace:r,targetRenderSpace:i}=e,o=f(t,r)>f(t,i)?e.observer:e.target;return s.pixelSizeAt(o)}e([h()],j.prototype,"selectedViewshed",void 0),e([h()],j.prototype,"isDecoration",void 0),e([h()],j.prototype,"shadowMap",null),e([h()],j.prototype,"hasViewsheds",null),e([h()],j.prototype,"_contentPixelRatio",null),e([h()],j.prototype,"_viewshedsInView",null),e([h()],j.prototype,"consumes",void 0),e([h()],j.prototype,"produces",void 0),j=e([d("geoscene.views.3d.webgl-engine.lib.ViewshedVideo")],j);const E=v(),I=m(),D=m();export{j as ViewshedVideo,A as computeOffsetScale};
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[7087],{34727:(e,t,n)=>{n.d(t,{$8:()=>B,Cc:()=>s,Hx:()=>g,Io:()=>y,KJ:()=>u,OS:()=>U,Sp:()=>m,XM:()=>f,YN:()=>c,ZH:()=>d,b6:()=>b,cU:()=>a,gg:()=>h,hs:()=>l,kU:()=>o,or:()=>v,pF:()=>I,pq:()=>D,qE:()=>r});const i=new Float32Array(1);function a(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}function r(e,t,n){return Math.min(Math.max(e,t),n)}function s(e,t,n){return e+(t-e)*n}function l(e,t,n,i,a){return s(i,a,(e-t)/(n-t))}function o(e){return e*Math.PI/180}function u(e){return 180*e/Math.PI}function f(e){return Math.acos(r(e,-1,1))}function c(e){return Math.asin(r(e,-1,1))}function m(e,t,n=1e-6){return e===t||!(!Number.isFinite(e)||!Number.isFinite(t))&&(e>t?e-t:t-e)<=n}function h(e,t,n=1e-6){return!m(e,t,n)&&e>t}function d(e,t,n=1e-6){return!m(e,t,n)&&e<t}function g(e,t,n=1e-6){return m(e,t,n)||e>t}const k=new DataView(new ArrayBuffer(Float64Array.BYTES_PER_ELEMENT));function x(e){return k.setFloat64(0,e),k.getBigInt64(0)}const p=1000000n,w=M(1);function M(e){const t=x(e=Math.abs(e)),n=function(e){return k.setBigInt64(0,e),k.getFloat64(0)}(t<=p?p:t-p);return Math.abs(e-n)}function y(e,t,n=w){if(e===t)return!0;if(!Number.isFinite(e)||!Number.isFinite(t))return!1;if(null!=n&&M(Math.min(Math.abs(e),Math.abs(t)))<n)return Math.abs(e-t)<=n;const i=x(e),a=x(t);return i<0==a<0&&!((i<a?a-i:i-a)>p)}function b(e,t,n=1e-6){if(e===t)return!0;if(!Number.isFinite(e)||!Number.isFinite(t))return!1;const i=Math.abs(e-t),a=Math.abs(e),r=Math.abs(t);if(0===e||0===t||a<1e-12&&r<1e-12){if(i>.01*n)return!1}else if(i/(a+r)>n)return!1;return!0}function B(e){return V(Math.max(-D,Math.min(e,D)))}function V(e){return i[0]=e,i[0]}function v(e){const t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[3]*e[3]+e[4]*e[4]+e[5]*e[5],i=e[6]*e[6]+e[7]*e[7]+e[8]*e[8];return!(m(t,1)&&m(n,1)&&m(i,1))}function U(e,t){return(e%t+t)%t}const D=V(34028234663852886e22);function I(e,t,n){if(void 0===n||0===+n)return Math[e](t);if(t=+t,n=+n,isNaN(t)||"number"!=typeof n||n%1!=0)return NaN;let i=t.toString().split("e");return i=(t=Math[e](+(i[0]+"e"+(i[1]?+i[1]-n:-n)))).toString().split("e"),+(i[0]+"e"+(i[1]?+i[1]+n:n))}},57087:(e,t,n)=>{n.r(t),n.d(t,{default:()=>m});var i=n(34727),a={};a.defaultNoDataValue=(0,i.$8)(-1/0),a.decode=function(e,t){var n=(t=t||{}).encodedMaskData||null===t.encodedMaskData,u=o(e,t.inputOffset||0,n),f=null!=t.noDataValue?(0,i.$8)(t.noDataValue):a.defaultNoDataValue,c=r(u,t.pixelType||Float32Array,t.encodedMaskData,f,t.returnMask),m={width:u.width,height:u.height,pixelData:c.resultPixels,minValue:u.pixels.minValue,maxValue:u.pixels.maxValue,noDataValue:f};return c.resultMask&&(m.maskData=c.resultMask),t.returnEncodedMask&&u.mask&&(m.encodedMaskData=u.mask.bitset?u.mask.bitset:null),t.returnFileInfo&&(m.fileInfo=s(u,f),t.computeUsedBitDepths&&(m.fileInfo.bitDepths=l(u))),m};var r=function(e,t,n,i,a){var r,s,l=0,o=e.pixels.numBlocksX,f=e.pixels.numBlocksY,c=Math.floor(e.width/o),m=Math.floor(e.height/f),h=2*e.maxZError;n=n||(e.mask?e.mask.bitset:null),r=new t(e.width*e.height),a&&n&&(s=new Uint8Array(e.width*e.height));for(var d,g,k=new Float32Array(c*m),x=0;x<=f;x++){var p=x!==f?m:e.height%f;if(0!==p)for(var w=0;w<=o;w++){var M=w!==o?c:e.width%o;if(0!==M){var y,b,B,V,v=x*e.width*m+w*c,U=e.width-M,D=e.pixels.blocks[l];if(D.encoding<2?(0===D.encoding?y=D.rawData:(u(D.stuffedData,D.bitsPerPixel,D.numValidPixels,D.offset,h,k,e.pixels.maxValue),y=k),b=0):B=2===D.encoding?0:D.offset,n)for(g=0;g<p;g++){for(7&v&&(V=n[v>>3],V<<=7&v),d=0;d<M;d++)7&v||(V=n[v>>3]),128&V?(s&&(s[v]=1),r[v++]=D.encoding<2?y[b++]:B):(s&&(s[v]=0),r[v++]=i),V<<=1;v+=U}else if(D.encoding<2)for(g=0;g<p;g++){for(d=0;d<M;d++)r[v++]=y[b++];v+=U}else for(g=0;g<p;g++)if(r.fill)r.fill(B,v,v+M),v+=M+U;else{for(d=0;d<M;d++)r[v++]=B;v+=U}if(1===D.encoding&&b!==D.numValidPixels)throw"Block and Mask do not match";l++}}}return{resultPixels:r,resultMask:s}},s=function(e,t){return{fileIdentifierString:e.fileIdentifierString,fileVersion:e.fileVersion,imageType:e.imageType,height:e.height,width:e.width,maxZError:e.maxZError,eofOffset:e.eofOffset,mask:e.mask?{numBlocksX:e.mask.numBlocksX,numBlocksY:e.mask.numBlocksY,numBytes:e.mask.numBytes,maxValue:e.mask.maxValue}:null,pixels:{numBlocksX:e.pixels.numBlocksX,numBlocksY:e.pixels.numBlocksY,numBytes:e.pixels.numBytes,maxValue:e.pixels.maxValue,minValue:e.pixels.minValue,noDataValue:t}}},l=function(e){for(var t=e.pixels.numBlocksX*e.pixels.numBlocksY,n={},i=0;i<t;i++){var a=e.pixels.blocks[i];0===a.encoding?n.float32=!0:1===a.encoding?n[a.bitsPerPixel]=!0:n[0]=!0}return Object.keys(n)},o=function(e,t,n){var i={},a=new Uint8Array(e,t,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,a),"CntZImage"!=i.fileIdentifierString.trim())throw"Unexpected file identifier string: "+i.fileIdentifierString;t+=10;var r=new DataView(e,t,24);if(i.fileVersion=r.getInt32(0,!0),i.imageType=r.getInt32(4,!0),i.height=r.getUint32(8,!0),i.width=r.getUint32(12,!0),i.maxZError=r.getFloat64(16,!0),t+=24,!n)if(r=new DataView(e,t,16),i.mask={},i.mask.numBlocksY=r.getUint32(0,!0),i.mask.numBlocksX=r.getUint32(4,!0),i.mask.numBytes=r.getUint32(8,!0),i.mask.maxValue=r.getFloat32(12,!0),t+=16,i.mask.numBytes>0){var s=new Uint8Array(Math.ceil(i.width*i.height/8)),l=(r=new DataView(e,t,i.mask.numBytes)).getInt16(0,!0),o=2,u=0;do{if(l>0)for(;l--;)s[u++]=r.getUint8(o++);else{var f=r.getUint8(o++);for(l=-l;l--;)s[u++]=f}l=r.getInt16(o,!0),o+=2}while(o<i.mask.numBytes);if(-32768!==l||u<s.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=s,t+=i.mask.numBytes}else 0===(i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue)&&(s=new Uint8Array(Math.ceil(i.width*i.height/8)),i.mask.bitset=s);r=new DataView(e,t,16),i.pixels={},i.pixels.numBlocksY=r.getUint32(0,!0),i.pixels.numBlocksX=r.getUint32(4,!0),i.pixels.numBytes=r.getUint32(8,!0),i.pixels.maxValue=r.getFloat32(12,!0),t+=16;var c=i.pixels.numBlocksX,m=i.pixels.numBlocksY,h=c+(i.width%c>0?1:0),d=m+(i.height%m>0?1:0);i.pixels.blocks=new Array(h*d);for(var g=1e9,k=0,x=0;x<d;x++)for(var p=0;p<h;p++){var w=0,M=e.byteLength-t;r=new DataView(e,t,Math.min(10,M));var y={};i.pixels.blocks[k++]=y;var b=r.getUint8(0);if(w++,y.encoding=63&b,y.encoding>3)throw"Invalid block encoding ("+y.encoding+")";if(2!==y.encoding){if(0!==b&&2!==b){if(b>>=6,y.offsetType=b,2===b)y.offset=r.getInt8(1),w++;else if(1===b)y.offset=r.getInt16(1,!0),w+=2;else{if(0!==b)throw"Invalid block offset type";y.offset=r.getFloat32(1,!0),w+=4}if(g=Math.min(y.offset,g),1===y.encoding)if(b=r.getUint8(w),w++,y.bitsPerPixel=63&b,b>>=6,y.numValidPixelsType=b,2===b)y.numValidPixels=r.getUint8(w),w++;else if(1===b)y.numValidPixels=r.getUint16(w,!0),w+=2;else{if(0!==b)throw"Invalid valid pixel count type";y.numValidPixels=r.getUint32(w,!0),w+=4}}var B;if(t+=w,3!=y.encoding)if(0===y.encoding){var V=(i.pixels.numBytes-1)/4;if(V!==Math.floor(V))throw"uncompressed block has invalid length";B=new ArrayBuffer(4*V),new Uint8Array(B).set(new Uint8Array(e,t,4*V));for(var v=new Float32Array(B),U=0;U<v.length;U++)g=Math.min(g,v[U]);y.rawData=v,t+=4*V}else if(1===y.encoding){var D=Math.ceil(y.numValidPixels*y.bitsPerPixel/8),I=Math.ceil(D/4);B=new ArrayBuffer(4*I),new Uint8Array(B).set(new Uint8Array(e,t,D)),y.stuffedData=new Uint32Array(B),t+=D}}else t++,g=Math.min(g,0)}return i.pixels.minValue=g,i.eofOffset=t,i},u=function(e,t,n,i,a,r,s){var l,o,u,f=(1<<t)-1,c=0,m=0,h=Math.ceil((s-i)/a),d=4*e.length-Math.ceil(t*n/8);for(e[e.length-1]<<=8*d,l=0;l<n;l++){if(0===m&&(u=e[c++],m=32),m>=t)o=u>>>m-t&f,m-=t;else{var g=t-m;o=(u&f)<<g&f,o+=(u=e[c++])>>>(m=32-g)}r[l]=o<h?i+o*a:s}return r};const f=a.decode;class c{_decode(e){const t=f(e.buffer,e.options);return Promise.resolve({result:t,transferList:[t.pixelData.buffer]})}}function m(){return new c}}}]);
1
+ "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[7087],{34727:(e,t,n)=>{n.d(t,{$8:()=>V,Cc:()=>s,Hx:()=>g,Io:()=>M,KJ:()=>u,OS:()=>D,Sp:()=>c,XM:()=>f,YN:()=>m,ZH:()=>d,b6:()=>B,cU:()=>a,gg:()=>h,hs:()=>l,kU:()=>o,or:()=>v,pF:()=>I,pq:()=>U,qE:()=>r});const i=new Float32Array(1);function a(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}function r(e,t,n){return Math.min(Math.max(e,t),n)}function s(e,t,n){return e+(t-e)*n}function l(e,t,n,i,a){return s(i,a,(e-t)/(n-t))}function o(e){return e*Math.PI/180}function u(e){return 180*e/Math.PI}function f(e){return Math.acos(r(e,-1,1))}function m(e){return Math.asin(r(e,-1,1))}function c(e,t,n=1e-6){return e===t||!(!Number.isFinite(e)||!Number.isFinite(t))&&(e>t?e-t:t-e)<=n}function h(e,t,n=1e-6){return!c(e,t,n)&&e>t}function d(e,t,n=1e-6){return!c(e,t,n)&&e<t}function g(e,t,n=1e-6){return c(e,t,n)||e>t}const w=new DataView(new ArrayBuffer(Float64Array.BYTES_PER_ELEMENT));function k(e){return w.setFloat64(0,e),w.getBigInt64(0)}const x=1000000n,p=y(1);function y(e){const t=k(e=Math.abs(e)),n=function(e){return w.setBigInt64(0,e),w.getFloat64(0)}(t<=x?x:t-x);return Math.abs(e-n)}function M(e,t,n=p){if(e===t)return!0;if(!Number.isFinite(e)||!Number.isFinite(t))return!1;if(null!=n&&y(Math.min(Math.abs(e),Math.abs(t)))<n)return Math.abs(e-t)<=n;const i=k(e),a=k(t);return i<0==a<0&&!((i<a?a-i:i-a)>x)}function B(e,t,n=1e-6){if(e===t)return!0;if(!Number.isFinite(e)||!Number.isFinite(t))return!1;const i=Math.abs(e-t),a=Math.abs(e),r=Math.abs(t);if(0===e||0===t||a<1e-12&&r<1e-12){if(i>.01*n)return!1}else if(i/(a+r)>n)return!1;return!0}function V(e){return b(Math.max(-U,Math.min(e,U)))}function b(e){return i[0]=e,i[0]}function v(e){const t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[3]*e[3]+e[4]*e[4]+e[5]*e[5],i=e[6]*e[6]+e[7]*e[7]+e[8]*e[8];return!(c(t,1)&&c(n,1)&&c(i,1))}function D(e,t){return(e%t+t)%t}const U=b(34028234663852886e22);function I(e,t,n){if(void 0===n||0==+n)return Math[e](t);if(t=+t,n=+n,isNaN(t)||"number"!=typeof n||n%1!=0)return NaN;let i=t.toString().split("e");return i=(t=Math[e](+(i[0]+"e"+(i[1]?+i[1]-n:-n)))).toString().split("e"),+(i[0]+"e"+(i[1]?+i[1]+n:n))}},57087:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var i=n(34727),a={};a.defaultNoDataValue=(0,i.$8)(-1/0),a.decode=async(e,t)=>{if(-1!==String.fromCharCode.apply(null,new Uint8Array(e,t.inputOffset||0,20)).indexOf("PNG")||-1!==String.fromCharCode.apply(null,new Uint8Array(e,t.inputOffset||0,20)).indexOf("WEBP"))h=await f(e,t);else{var n=(t=t||{}).encodedMaskData||null===t.encodedMaskData,u=o(e,t.inputOffset||0,n),m=null!=t.noDataValue?(0,i.$8)(t.noDataValue):a.defaultNoDataValue,c=r(u,t.pixelType||Float32Array,t.encodedMaskData,m,t.returnMask),h={width:u.width,height:u.height,pixelData:c.resultPixels,minValue:u.pixels.minValue,maxValue:u.pixels.maxValue,noDataValue:m};c.resultMask&&(h.maskData=c.resultMask),t.returnEncodedMask&&u.mask&&(h.encodedMaskData=u.mask.bitset?u.mask.bitset:null),t.returnFileInfo&&(h.fileInfo=s(u,m),t.computeUsedBitDepths&&(h.fileInfo.bitDepths=l(u)))}return h};var r=function(e,t,n,i,a){var r,s,l=0,o=e.pixels.numBlocksX,f=e.pixels.numBlocksY,m=Math.floor(e.width/o),c=Math.floor(e.height/f),h=2*e.maxZError;n=n||(e.mask?e.mask.bitset:null),r=new t(e.width*e.height),a&&n&&(s=new Uint8Array(e.width*e.height));for(var d,g,w=new Float32Array(m*c),k=0;k<=f;k++){var x=k!==f?c:e.height%f;if(0!==x)for(var p=0;p<=o;p++){var y=p!==o?m:e.width%o;if(0!==y){var M,B,V,b,v=k*e.width*c+p*m,D=e.width-y,U=e.pixels.blocks[l];if(U.encoding<2?(0===U.encoding?M=U.rawData:(u(U.stuffedData,U.bitsPerPixel,U.numValidPixels,U.offset,h,w,e.pixels.maxValue),M=w),B=0):V=2===U.encoding?0:U.offset,n)for(g=0;g<x;g++){for(7&v&&(b=n[v>>3],b<<=7&v),d=0;d<y;d++)7&v||(b=n[v>>3]),128&b?(s&&(s[v]=1),r[v++]=U.encoding<2?M[B++]:V):(s&&(s[v]=0),r[v++]=i),b<<=1;v+=D}else if(U.encoding<2)for(g=0;g<x;g++){for(d=0;d<y;d++)r[v++]=M[B++];v+=D}else for(g=0;g<x;g++)if(r.fill)r.fill(V,v,v+y),v+=y+D;else{for(d=0;d<y;d++)r[v++]=V;v+=D}if(1===U.encoding&&B!==U.numValidPixels)throw"Block and Mask do not match";l++}}}return{resultPixels:r,resultMask:s}},s=function(e,t){return{fileIdentifierString:e.fileIdentifierString,fileVersion:e.fileVersion,imageType:e.imageType,height:e.height,width:e.width,maxZError:e.maxZError,eofOffset:e.eofOffset,mask:e.mask?{numBlocksX:e.mask.numBlocksX,numBlocksY:e.mask.numBlocksY,numBytes:e.mask.numBytes,maxValue:e.mask.maxValue}:null,pixels:{numBlocksX:e.pixels.numBlocksX,numBlocksY:e.pixels.numBlocksY,numBytes:e.pixels.numBytes,maxValue:e.pixels.maxValue,minValue:e.pixels.minValue,noDataValue:t}}},l=function(e){for(var t=e.pixels.numBlocksX*e.pixels.numBlocksY,n={},i=0;i<t;i++){var a=e.pixels.blocks[i];0===a.encoding?n.float32=!0:1===a.encoding?n[a.bitsPerPixel]=!0:n[0]=!0}return Object.keys(n)},o=function(e,t,n){var i={},a=new Uint8Array(e,t,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,a),"CntZImage"!=i.fileIdentifierString.trim())throw"Unexpected file identifier string: "+i.fileIdentifierString;t+=10;var r=new DataView(e,t,24);if(i.fileVersion=r.getInt32(0,!0),i.imageType=r.getInt32(4,!0),i.height=r.getUint32(8,!0),i.width=r.getUint32(12,!0),i.maxZError=r.getFloat64(16,!0),t+=24,!n)if(r=new DataView(e,t,16),i.mask={},i.mask.numBlocksY=r.getUint32(0,!0),i.mask.numBlocksX=r.getUint32(4,!0),i.mask.numBytes=r.getUint32(8,!0),i.mask.maxValue=r.getFloat32(12,!0),t+=16,i.mask.numBytes>0){var s=new Uint8Array(Math.ceil(i.width*i.height/8)),l=(r=new DataView(e,t,i.mask.numBytes)).getInt16(0,!0),o=2,u=0;do{if(l>0)for(;l--;)s[u++]=r.getUint8(o++);else{var f=r.getUint8(o++);for(l=-l;l--;)s[u++]=f}l=r.getInt16(o,!0),o+=2}while(o<i.mask.numBytes);if(-32768!==l||u<s.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=s,t+=i.mask.numBytes}else 0==(i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue)&&(s=new Uint8Array(Math.ceil(i.width*i.height/8)),i.mask.bitset=s);r=new DataView(e,t,16),i.pixels={},i.pixels.numBlocksY=r.getUint32(0,!0),i.pixels.numBlocksX=r.getUint32(4,!0),i.pixels.numBytes=r.getUint32(8,!0),i.pixels.maxValue=r.getFloat32(12,!0),t+=16;var m=i.pixels.numBlocksX,c=i.pixels.numBlocksY,h=m+(i.width%m>0?1:0),d=c+(i.height%c>0?1:0);i.pixels.blocks=new Array(h*d);for(var g=1e9,w=0,k=0;k<d;k++)for(var x=0;x<h;x++){var p=0,y=e.byteLength-t;r=new DataView(e,t,Math.min(10,y));var M={};i.pixels.blocks[w++]=M;var B=r.getUint8(0);if(p++,M.encoding=63&B,M.encoding>3)throw"Invalid block encoding ("+M.encoding+")";if(2!==M.encoding){if(0!==B&&2!==B){if(B>>=6,M.offsetType=B,2===B)M.offset=r.getInt8(1),p++;else if(1===B)M.offset=r.getInt16(1,!0),p+=2;else{if(0!==B)throw"Invalid block offset type";M.offset=r.getFloat32(1,!0),p+=4}if(g=Math.min(M.offset,g),1===M.encoding)if(B=r.getUint8(p),p++,M.bitsPerPixel=63&B,B>>=6,M.numValidPixelsType=B,2===B)M.numValidPixels=r.getUint8(p),p++;else if(1===B)M.numValidPixels=r.getUint16(p,!0),p+=2;else{if(0!==B)throw"Invalid valid pixel count type";M.numValidPixels=r.getUint32(p,!0),p+=4}}var V;if(t+=p,3!=M.encoding)if(0===M.encoding){var b=(i.pixels.numBytes-1)/4;if(b!==Math.floor(b))throw"uncompressed block has invalid length";V=new ArrayBuffer(4*b),new Uint8Array(V).set(new Uint8Array(e,t,4*b));for(var v=new Float32Array(V),D=0;D<v.length;D++)g=Math.min(g,v[D]);M.rawData=v,t+=4*b}else if(1===M.encoding){var U=Math.ceil(M.numValidPixels*M.bitsPerPixel/8),I=Math.ceil(U/4);V=new ArrayBuffer(4*I),new Uint8Array(V).set(new Uint8Array(e,t,U)),M.stuffedData=new Uint32Array(V),t+=U}}else t++,g=Math.min(g,0)}return i.pixels.minValue=g,i.eofOffset=t,i},u=function(e,t,n,i,a,r,s){var l,o,u,f=(1<<t)-1,m=0,c=0,h=Math.ceil((s-i)/a),d=4*e.length-Math.ceil(t*n/8);for(e[e.length-1]<<=8*d,l=0;l<n;l++){if(0===c&&(u=e[m++],c=32),c>=t)o=u>>>c-t&f,c-=t;else{var g=t-c;o=(u&f)<<g&f,o+=(u=e[m++])>>>(c=32-g)}r[l]=o<h?i+o*a:s}return r},f=async(e,t)=>{const n=new Blob([e]),i=await createImageBitmap(n),a=new OffscreenCanvas(i.width,i.height),r=a.width=i.width,s=a.height=i.height,l=a.getContext("2d",{willReadFrequently:!0});if(!l)throw new Error("无法获取2D上下文");l.drawImage(i,0,0);const o=l.getImageData(0,0,a.width,a.height).data;for(var u=new(t.pixelType||Float32Array)(r*s),f=1/0,m=-1/0,c=0;c<s;c++)for(var h=0;h<r;h++){var d=c*r+h,g=4*d,w=.1*(256*(t=o[g])*256+256*o[g+1]+o[g+2])-1e4;u[d]=w,w<f&&(f=w),w>m&&(m=w)}return f===1/0&&(f=0),m===-1/0&&(m=0),{width:r,height:s,pixelData:u,minValue:f,maxValue:m,noDataValue:t.noDataValue||t.defaultNoDataValue}};const m=a.decode;class c{_decode(e){return m(e.buffer,e.options).then((e=>Promise.resolve({result:e,transferList:[e.pixelData.buffer]})))}}function h(){return new c}}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[4045],{10873:(e,r,t)=>{t.d(r,{C1:()=>C,Fm:()=>w,Ih:()=>S,M6:()=>u,OZ:()=>c,PY:()=>y,Qo:()=>m,Yj:()=>h,fV:()=>g,hG:()=>I,hn:()=>L,id:()=>f,kF:()=>d,ke:()=>b,zQ:()=>M});var i=t(89317),s=t(5443),n=t(16930),o=t(97159),a=t(88625),l=t(43440),p=t(78553);const y={type:Boolean,value:!0,json:{origins:{service:{read:!1,write:!1},"web-map":{read:!1,write:!1}},name:"screenSizePerspective",write:{enabled:!0,layerContainerTypes:i.K}}},u={type:Boolean,value:!0,json:{name:"disablePopup",read:{reader:(e,r)=>!r.disablePopup},write:{enabled:!0,writer(e,r,t){r[t]=!e}}}},d={type:Boolean,value:!0,nonNullable:!0,json:{name:"showLabels",write:{enabled:!0,layerContainerTypes:i.K}}},c={type:String,json:{origins:{"portal-item":{write:!1}},write:{isRequired:!0,ignoreOrigin:!0,writer:o.w}}},g={type:Boolean,value:!0,nonNullable:!0,json:{origins:{service:{read:{enabled:!1}}},name:"showLegend",write:{enabled:!0,layerContainerTypes:i.K}}},h={value:null,type:a.A,json:{origins:{service:{name:"elevationInfo",write:!0}},name:"layerDefinition.elevationInfo",write:{enabled:!0,layerContainerTypes:i.K}}};function m(e){return{type:e,readOnly:!0,json:{origins:{service:{read:!0}},read:!1}}}const v={write:{enabled:!0,layerContainerTypes:i.K},read:!0},b={type:Number,json:{origins:{"web-document":v,"portal-item":{write:{layerContainerTypes:i.K}}}}},S={...b,json:{...b.json,origins:{"web-document":{...v,write:{enabled:!0,layerContainerTypes:i.K,target:{opacity:{type:Number},"layerDefinition.drawingInfo.transparency":{type:Number}}}}},read:{source:["layerDefinition.drawingInfo.transparency","drawingInfo.transparency"],reader:(e,r,t)=>t&&"service"!==t.origin||!r.drawingInfo||void 0===r.drawingInfo.transparency?r.layerDefinition?.drawingInfo&&void 0!==r.layerDefinition.drawingInfo.transparency?(0,p.D)(r.layerDefinition.drawingInfo.transparency):void 0:(0,p.D)(r.drawingInfo.transparency)}}},w={type:s.A,readOnly:!0,json:{origins:{service:{read:{source:["fullExtent","spatialReference"],reader:(e,r)=>{const t=s.A.fromJSON(e);return null!=r.spatialReference&&"object"==typeof r.spatialReference&&(t.spatialReference=n.A.fromJSON(r.spatialReference)),t}}}},read:!1}},f={type:String,json:{origins:{service:{read:!1},"portal-item":{read:!1}}}},L={type:Number,json:{origins:{service:{write:{enabled:!1}}},name:"layerDefinition.minScale",write:{layerContainerTypes:i.K}}},I={type:Number,json:{origins:{service:{write:{enabled:!1}}},name:"layerDefinition.maxScale",write:{layerContainerTypes:i.K}}},C={json:{write:{ignoreOrigin:!0,layerContainerTypes:i.K},origins:{"web-map":{read:!1,write:!1}}}},M={type:l.A,json:{name:"attributeTableInfo",write:!0}}},16131:(e,r,t)=>{t.d(r,{q:()=>w});var i=t(31635),s=t(49186),n=t(84952),o=t(10107),a=t(56507),l=(t(44208),t(87811),t(36005)),p=t(64108),y=t(43937),u=t(89317),d=t(45917),c=t(49422);const g={ArcGISAnnotationLayer:!0,ArcGISDimensionLayer:!0,ArcGISFeatureLayer:!0,ArcGISImageServiceLayer:!0,ArcGISImageServiceVectorLayer:!0,ArcGISMapServiceLayer:!0,ArcGISStreamLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,ArcGISVideoLayer:!0,BingMapsAerial:!0,BingMapsHybrid:!0,BingMapsRoad:!0,CatalogLayer:!0,CSV:!0,GeoJSON:!0,GeoRSS:!0,GroupLayer:!0,KML:!0,KnowledgeGraphLayer:!0,MediaLayer:!0,OGCFeatureLayer:!0,OrientedImageryLayer:!0,ParquetLayer:!0,SubtypeGroupLayer:!0,VectorTileLayer:!0,WCS:!0,WFS:!0,WMS:!0,WebTiledLayer:!0},h={ArcGISImageServiceLayer:!0,ArcGISImageServiceVectorLayer:!0,ArcGISMapServiceLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,BingMapsAerial:!0,BingMapsHybrid:!0,BingMapsRoad:!0,OpenStreetMap:!0,VectorTileLayer:!0,WCS:!0,WMS:!0,WebTiledLayer:!0},m={ArcGISFeatureLayer:!0,SubtypeGroupTable:!0},v={"web-scene/operational-layers":{ArcGISDimensionLayer:!0,ArcGISFeatureLayer:!0,ArcGISImageServiceLayer:!0,ArcGISMapServiceLayer:!0,ArcGISSceneServiceLayer:!0,ArcGISTiledElevationServiceLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,BuildingSceneLayer:!0,CatalogLayer:!0,CSV:!0,GaussianSplatLayer:!0,GeoJSON:!0,GroupLayer:!0,IntegratedMesh3DTilesLayer:!0,Object3DTilesLayer:!0,IntegratedMeshLayer:!0,KML:!0,LineOfSightLayer:!0,MediaLayer:!0,OGCFeatureLayer:!0,OrientedImageryLayer:!0,PointCloudLayer:!0,RasterDataLayer:!0,VectorTileLayer:!0,ViewshedLayer:!0,Voxel:!0,WCS:!0,WFS:!0,WMS:!0,WebTiledLayer:!0},"web-scene/basemap-base-layers":{ArcGISImageServiceLayer:!0,ArcGISMapServiceLayer:!0,ArcGISSceneServiceLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,OpenStreetMap:!0,VectorTileLayer:!0,WCS:!0,WMS:!0,WebTiledLayer:!0},"web-scene/basemap-ground-layers":{IntegratedMesh3DTilesLayer:!0},"web-scene/ground":{ArcGISTiledElevationServiceLayer:!0,RasterDataElevationLayer:!0},"web-scene/tables":{ArcGISFeatureLayer:!0},"web-map/operational-layers":g,"web-map/basemap-base-layers":h,"web-map/tables":m,"link-chart/operational-layers":{...g,LinkChartLayer:!0},"link-chart/basemap-base-layers":h,"link-chart/tables":m,"portal-item/operational-layers":{ArcGISFeatureLayer:!0,ArcGISImageServiceLayer:!0,ArcGISMapServiceLayer:!0,ArcGISSceneServiceLayer:!0,ArcGISStreamLayer:!0,ArcGISTiledImageServiceLayer:!0,BuildingSceneLayer:!0,IntegratedMesh3DTilesLayer:!0,IntegratedMeshLayer:!0,MediaLayer:!0,OrientedImageryLayer:!0,PointCloudLayer:!0,SubtypeGroupLayer:!0,WCS:!0},"portal-item/tables":{ArcGISFeatureLayer:!0,SubtypeGroupTable:!0}};var b=t(10873),S=t(79677);const w=e=>{const r=e;let t=class extends r{constructor(){super(...arguments),this.persistenceEnabled=!0,this.title=null}readId(e,r,t){return"Group Layer"===t?.portalItem?.type?void 0:e}writeListMode(e,r,t,i){(i&&"ground"===i.layerContainerType||e&&(0,c.R)(this,t,{},i))&&(r[t]=e)}writeOperationalLayerType(e,r,t){e&&(r[t]=e)}writeTitle(e,r){r.title=e??"Layer"}readVisibilityTimeExtent(e){return e?S.A.fromArray(e):null}writeVisibilityTimeExtent(e,r,t,i){e&&"tables"!==i.layerContainerType&&(e.isEmpty?i?.messages&&i.messages.push(new s.A("layer:invalid-visibilityTimeExtent","visibilityTimeExtent cannot be empty")):r[t]=e.toArray())}read(e,r){r&&(r.layer=this),(0,d.t)(this,e,r=>super.read(e,r),r)}write(e,r){if(!this.persistenceEnabled&&!r?.ignorePersistenceEnabled)return null;if(r?.origin){const e=`${r.origin}/${r.layerContainerType||"operational-layers"}`,t=v[e];let i=!!t?.[this.operationalLayerType];if("ArcGISTiledElevationServiceLayer"===this.operationalLayerType&&"web-scene/operational-layers"===e&&(i=!1),"ArcGISDimensionLayer"===this.operationalLayerType&&"web-map/operational-layers"===e&&(i=!1),!i)return r.messages?.push(new s.A("layer:unsupported",`Layers (${this.title}, ${this.id}) of type '${this.declaredClass}' are not supported in the context of '${e}'`,{layer:this})),null}const t=super.write(e,{...r,layer:this}),i=!!r&&!!r.messages&&!!r.messages.filter(e=>e instanceof s.A&&"web-document-write:property-required"===e.name).length;return(0,n.w8)(t?.url)?(r?.messages?.push(new s.A("layer:invalid-url",`Layer (${this.title}, ${this.id}) of type '${this.declaredClass}' using a Blob URL cannot be written to web scenes and web maps`,{layer:this})),null):!this.url&&i?null:t}beforeSave(){}};return(0,i.Cg)([(0,o.MZ)({type:String,json:{write:{ignoreOrigin:!0},origins:{"web-scene":{write:{isRequired:!0,ignoreOrigin:!0}},"portal-item":{write:!1}}}})],t.prototype,"id",void 0),(0,i.Cg)([(0,l.w)("id",["id"])],t.prototype,"readId",null),(0,i.Cg)([(0,o.MZ)(b.C1)],t.prototype,"listMode",void 0),(0,i.Cg)([(0,y.K)("listMode")],t.prototype,"writeListMode",null),(0,i.Cg)([(0,o.MZ)({type:String,readOnly:!0,json:{read:!1,write:{target:"layerType",ignoreOrigin:!0},origins:{"portal-item":{write:!1},"web-scene":{name:"layerType",read:!1,write:{enabled:!0,ignoreOrigin:!0,layerContainerTypes:u.K,isRequired:!0}}}}})],t.prototype,"operationalLayerType",void 0),(0,i.Cg)([(0,y.K)("operationalLayerType")],t.prototype,"writeOperationalLayerType",null),(0,i.Cg)([(0,o.MZ)(b.ke)],t.prototype,"opacity",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,readOnly:!1})],t.prototype,"persistenceEnabled",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{write:{ignoreOrigin:!0,writerEnsuresNonNull:!0},origins:{"web-scene":{write:{isRequired:!0,ignoreOrigin:!0,writerEnsuresNonNull:!0}},"portal-item":{write:!1}}},value:"Layer"})],t.prototype,"title",void 0),(0,i.Cg)([(0,y.K)("title"),(0,y.K)(["web-scene"],"title")],t.prototype,"writeTitle",null),(0,i.Cg)([(0,o.MZ)({type:S.A,json:{origins:{"web-scene":{write:{layerContainerTypes:u.K}}}}})],t.prototype,"visibilityTimeExtent",void 0),(0,i.Cg)([(0,l.w)("visibilityTimeExtent")],t.prototype,"readVisibilityTimeExtent",null),(0,i.Cg)([(0,y.K)(["portal-item","web-map","web-scene"],"visibilityTimeExtent",{visibilityTimeExtent:{type:[[a.jz,a.Uv]]}})],t.prototype,"writeVisibilityTimeExtent",null),(0,i.Cg)([(0,o.MZ)({type:Boolean,json:{name:"visibility",write:{layerContainerTypes:u.K}}})],t.prototype,"visible",void 0),t=(0,i.Cg)([(0,p.$)("geoscene.layers.mixins.OperationalLayer")],t),t}},16271:(e,r,t)=>{t.d(r,{Ao:()=>n,KQ:()=>o});var i=t(4576),s=t(31756);function n(e){return 1/(s.j[e]||1)}const o=function(){const e=Object.keys(s.j);return(0,i.TF)(e,"decimal-degrees"),e.sort(),e}()},31756:(e,r,t)=>{t.d(r,{j:()=>n});var i=t(83047),s=t(79258);const n={unknown:1,inches:(0,i.oU)(1,"meters","inches"),feet:(0,i.oU)(1,"meters","feet"),"us-feet":(0,i.oU)(1,"meters","us-feet"),yards:(0,i.oU)(1,"meters","yards"),miles:(0,i.oU)(1,"meters","miles"),"nautical-miles":(0,i.oU)(1,"meters","nautical-miles"),millimeters:(0,i.oU)(1,"meters","millimeters"),centimeters:(0,i.oU)(1,"meters","centimeters"),decimeters:(0,i.oU)(1,"meters","decimeters"),meters:(0,i.oU)(1,"meters","meters"),kilometers:(0,i.oU)(1,"meters","kilometers"),"decimal-degrees":1/(0,i.vl)(1,"meters",s.$O.radius)}},43440:(e,r,t)=>{t.d(r,{A:()=>O});var i=t(31635),s=t(25482),n=t(4718),o=t(10107),a=(t(44208),t(53966),t(64108)),l=t(69540);t(87811);let p=class extends s.o{constructor(e){super(e),this.description=null,this.label=null,this.type=null}};(0,i.Cg)([(0,o.MZ)({type:String,json:{write:!0}})],p.prototype,"description",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{write:!0}})],p.prototype,"label",void 0),(0,i.Cg)([(0,o.MZ)()],p.prototype,"type",void 0),p=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableElement")],p);const y=p;var u=t(56507);let d=class extends((0,l.OU)(y)){constructor(e){super(e),this.displayType="auto",this.type="attachment"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({type:["auto"],json:{write:!0}})],d.prototype,"displayType",void 0),(0,i.Cg)([(0,o.MZ)({type:["attachment"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],d.prototype,"type",void 0),d=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableAttachmentElement")],d);const c=d;let g=class extends((0,l.OU)(y)){constructor(e){super(e),this.description=null,this.fieldName=null,this.label=null,this.type="field"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({type:String,json:{read:!1,write:!1}})],g.prototype,"description",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{write:{enabled:!0,isRequired:!0}}})],g.prototype,"fieldName",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{read:!1,write:!1}})],g.prototype,"label",void 0),(0,i.Cg)([(0,o.MZ)({type:["field"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],g.prototype,"type",void 0),g=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableFieldElement")],g);const h=g;let m=class extends((0,l.OU)(y)){constructor(e){super(e),this.relationshipId=null,this.type="relationship"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({type:Number,json:{type:u.jz,write:{enabled:!0,isRequired:!0}}})],m.prototype,"relationshipId",void 0),(0,i.Cg)([(0,o.MZ)({type:["relationship"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],m.prototype,"type",void 0),m=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableRelationshipElement")],m);const v=m,b={base:y,key:"type",typeMap:{attachment:c,field:h,relationship:v}};let S=class extends((0,l.OU)(y)){constructor(e){super(e),this.elements=null,this.type="group"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({types:[b],json:{name:"attributeTableElements",write:!0}})],S.prototype,"elements",void 0),(0,i.Cg)([(0,o.MZ)({type:["group"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],S.prototype,"type",void 0),S=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableGroupElement")],S);const w=S;let f=class extends((0,l.OU)(s.o)){constructor(e){super(e),this.field=null,this.order=null}};(0,i.Cg)([(0,o.MZ)({type:String,json:{write:!0}})],f.prototype,"field",void 0),(0,i.Cg)([(0,o.MZ)({type:["asc","desc"],json:{write:!0}})],f.prototype,"order",void 0),f=(0,i.Cg)([(0,a.$)("geoscene.tables.support.FieldOrder")],f);const L=f;var I;const C={typesWithGroup:{base:y,key:"type",typeMap:{attachment:c,field:h,group:w,relationship:v}},typesWithoutGroup:b};let M=I=class extends s.o{constructor(e){super(e),this.elements=null,this.orderByFields=null}clone(){return new I({elements:(0,n.o8)(this.elements),orderByFields:(0,n.o8)(this.orderByFields)})}};(0,i.Cg)([(0,o.MZ)({types:[C.typesWithGroup],json:{name:"attributeTableElements",write:!0}})],M.prototype,"elements",void 0),(0,i.Cg)([(0,o.MZ)({type:[L],json:{write:!0}})],M.prototype,"orderByFields",void 0),M=I=(0,i.Cg)([(0,a.$)("geoscene.tables.AttributeTableTemplate")],M);const O=M},88625:(e,r,t)=>{t.d(r,{A:()=>S});var i,s=t(31635),n=t(69540),o=t(66552),a=t(25482),l=t(97768),p=t(10107),y=(t(44208),t(53966),t(87811),t(36005)),u=t(64108),d=t(43937),c=t(30524);let g=i=class extends a.o{constructor(e){super(e),this.expression=void 0,this.title=void 0}async collectRequiredFields(e,r){return(0,c.Dx)(e,r,null,this.expression)}clone(){return new i({expression:this.expression,title:this.title})}equals(e){return this.expression===e.expression&&this.title===e.title}};(0,s.Cg)([(0,p.MZ)({type:String,json:{write:{isRequired:!0}}})],g.prototype,"expression",void 0),(0,s.Cg)([(0,p.MZ)({type:String,json:{write:!0}})],g.prototype,"title",void 0),g=i=(0,s.Cg)([(0,u.$)("geoscene.symbols.support.FeatureExpressionInfo")],g);const h=g;var m=t(16271);const v=(0,o.O)()({onTheGround:"on-the-ground",relativeToGround:"relative-to-ground",relativeToScene:"relative-to-scene",absoluteHeight:"absolute-height"}),b=new o.J({foot:"feet",kilometer:"kilometers",meter:"meters",mile:"miles","us-foot":"us-feet",yard:"yards"});let S=class extends((0,n.OU)(a.o)){constructor(e){super(e),this.featureExpressionInfo=void 0,this.offset=null}readFeatureExpressionInfo(e,r){return null!=e?e.expression?e:void 0:r.featureExpression&&0===r.featureExpression.value?{expression:"0"}:void 0}writeFeatureExpressionInfo(e,r,t,i){r[t]=e.write({},i),"0"===e.expression&&(r.featureExpression={value:0})}get mode(){const{offset:e,featureExpressionInfo:r}=this;return this._isOverridden("mode")?this._get("mode"):null!=e||r?"relative-to-ground":"on-the-ground"}set mode(e){this._override("mode",e)}set unit(e){this._set("unit",e)}write(e,r){return this.offset||this.mode||this.featureExpressionInfo||this.unit?super.write(e,r):null}equals(e){return this.mode===e.mode&&this.offset===e.offset&&this.unit===e.unit&&(0,l.CM)(this.featureExpressionInfo,e.featureExpressionInfo)}};(0,s.Cg)([(0,p.MZ)({type:h,json:{write:!0}})],S.prototype,"featureExpressionInfo",void 0),(0,s.Cg)([(0,y.w)("featureExpressionInfo",["featureExpressionInfo","featureExpression"])],S.prototype,"readFeatureExpressionInfo",null),(0,s.Cg)([(0,d.K)("featureExpressionInfo",{featureExpressionInfo:{type:h},"featureExpression.value":{type:[0]}})],S.prototype,"writeFeatureExpressionInfo",null),(0,s.Cg)([(0,p.MZ)({type:v.apiValues,nonNullable:!0,json:{type:v.jsonValues,read:v.read,write:{writer:v.write,isRequired:!0}}})],S.prototype,"mode",null),(0,s.Cg)([(0,p.MZ)({type:Number,json:{write:!0}})],S.prototype,"offset",void 0),(0,s.Cg)([(0,p.MZ)({type:m.KQ,json:{type:String,read:b.read,write:b.write}})],S.prototype,"unit",null),S=(0,s.Cg)([(0,u.$)("geoscene.symbols.support.ElevationInfo")],S)},89317:(e,r,t)=>{t.d(r,{K:()=>i});const i=["operational-layers","basemap-base-layers","basemap-ground-layers","ground"]},92071:(e,r,t)=>{t.d(r,{P:()=>b,L:()=>S});var i=t(31635),s=t(65008),n=t(76953),o=t(4718),a=t(35666);class l{constructor(){this._propertyOriginMap=new Map,this._originStores=new Array(a.AU),this._values=new Map,this.multipleOriginsSupported=!0}clone(e){const r=new l,t=this._originStores[0];t&&t.forEach((e,t)=>{r.set(t,(0,o.o8)(e),0)});for(let t=2;t<a.AU;t++){const i=this._originStores[t];i&&i.forEach((i,s)=>{e&&e.has(s)||r.set(s,(0,o.o8)(i),t)})}return r}get(e,r){const t=void 0===r?this._values:this._originStores[r];return t?t.get(e):void 0}keys(e){const r=null==e?this._values:this._originStores[e];return r?[...r.keys()]:[]}set(e,r,t=7){let i=this._originStores[t];if(i||(i=new Map,this._originStores[t]=i),i.set(e,r),!this._values.has(e)||this._propertyOriginMap.get(e)<=t){const i=this._values.get(e);return this._values.set(e,r),this._propertyOriginMap.set(e,t),i!==r}return!1}delete(e,r=7){const t=this._originStores[r];if(!t)return;const i=t.get(e);if(t.delete(e),this._values.has(e)&&this._propertyOriginMap.get(e)===r){this._values.delete(e);for(let t=r-1;t>=0;t--){const r=this._originStores[t];if(r&&r.has(e)){this._values.set(e,r.get(e)),this._propertyOriginMap.set(e,t);break}}}return i}has(e,r){const t=void 0===r?this._values:this._originStores[r];return!!t&&t.has(e)}revert(e,r){for(;r>0&&!this.has(e,r);)--r;const t=this._originStores[r],i=t?.get(e),s=this._values.get(e);return this._values.set(e,i),this._propertyOriginMap.set(e,r),s!==i}originOf(e){return this._propertyOriginMap.get(e)||0}isAtOrigin(e,r){return this.has(e,r)&&this.originOf(e)===r}isBelowOrigin(e,r){return!this.has(e)||this.originOf(e)<r}forEach(e){this._values.forEach(e)}}var p=t(45917),y=t(88620),u=t(64108);const d=e=>{const r=e;let t=class extends r{constructor(...e){super(...e);const r=(0,y.oY)(this),t=r.store,i=new l;r.store=i,(0,n.k)(r,t,i)}read(e,r){(0,p.L)(this,e,r)}getAtOrigin(e,r){const t=c(this),i=(0,a.aB)(r);if("string"==typeof e)return t.get(e,i);const s={};return e.forEach(e=>{s[e]=t.get(e,i)}),s}originOf(e){return(0,a.OL)(this.originIdOf(e))}originIdOf(e){return c(this).originOf(e)}revert(e,r){const t=c(this),i=(0,a.aB)(r),s=(0,y.oY)(this);let n;n="string"==typeof e?"*"===e?t.keys(i):[e]:e,n.forEach(e=>{s.invalidate(e),t.revert(e,i),s.commit(e)})}};return t=(0,i.Cg)([(0,u.$)("geoscene.core.ReadOnlyMultiOriginJSONSupport")],t),t};function c(e){return(0,y.oY)(e).store}d(s.A);var g=t(16649),h=t(49422);const m=e=>{const r=e;let t=class extends r{constructor(...e){super(...e)}clear(e,r="user"){(0,y.oY)(this).clearOrigin(e,(0,a.aB)(r))}write(e,r){return(0,h.M)(this,e=e||{},r),e}setAtOrigin(e,r,t){(0,y.oY)(this).setAtOrigin(e,r,(0,a.aB)(t))}removeOrigin(e){const r=v(this),t=(0,a.aB)(e),i=r.keys(t);for(const e of i)r.originOf(e)===t&&r.set(e,r.get(e,t),7)}updateOrigin(e,r){const t=v(this),i=(0,a.aB)(r),s=(0,g.Jt)(this,e);for(let r=i+1;r<a.AU;++r)t.delete(e,r);t.set(e,s,i)}toJSON(e){return this.write({},e)}};return t=(0,i.Cg)([(0,u.$)("geoscene.core.MultiOriginJSONSupport.WriteableMultiOriginJSONSupport")],t),t.prototype.toJSON.isDefaultToJSON=!0,t};function v(e){return(0,y.oY)(e).store}const b=e=>{const r=m(d(e));let t=class extends r{};return t=(0,i.Cg)([(0,u.$)("geoscene.core.MultiOriginJSONSupport")],t),t},S=b(s.A)}}]);
1
+ "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[4045],{10873:(e,r,t)=>{t.d(r,{C1:()=>C,Fm:()=>w,Ih:()=>S,M6:()=>u,OZ:()=>c,PY:()=>y,Qo:()=>m,Yj:()=>h,fV:()=>g,hG:()=>I,hn:()=>L,id:()=>f,kF:()=>d,ke:()=>b,zQ:()=>M});var i=t(89317),s=t(5443),n=t(16930),o=t(97159),a=t(88625),l=t(43440),p=t(78553);const y={type:Boolean,value:!0,json:{origins:{service:{read:!1,write:!1},"web-map":{read:!1,write:!1}},name:"screenSizePerspective",write:{enabled:!0,layerContainerTypes:i.K}}},u={type:Boolean,value:!0,json:{name:"disablePopup",read:{reader:(e,r)=>!r.disablePopup},write:{enabled:!0,writer(e,r,t){r[t]=!e}}}},d={type:Boolean,value:!0,nonNullable:!0,json:{name:"showLabels",write:{enabled:!0,layerContainerTypes:i.K}}},c={type:String,json:{origins:{"portal-item":{write:!1}},write:{isRequired:!0,ignoreOrigin:!0,writer:o.w}}},g={type:Boolean,value:!0,nonNullable:!0,json:{origins:{service:{read:{enabled:!1}}},name:"showLegend",write:{enabled:!0,layerContainerTypes:i.K}}},h={value:null,type:a.A,json:{origins:{service:{name:"elevationInfo",write:!0}},name:"layerDefinition.elevationInfo",write:{enabled:!0,layerContainerTypes:i.K}}};function m(e){return{type:e,readOnly:!0,json:{origins:{service:{read:!0}},read:!1}}}const v={write:{enabled:!0,layerContainerTypes:i.K},read:!0},b={type:Number,json:{origins:{"web-document":v,"portal-item":{write:{layerContainerTypes:i.K}}}}},S={...b,json:{...b.json,origins:{"web-document":{...v,write:{enabled:!0,layerContainerTypes:i.K,target:{opacity:{type:Number},"layerDefinition.drawingInfo.transparency":{type:Number}}}}},read:{source:["layerDefinition.drawingInfo.transparency","drawingInfo.transparency"],reader:(e,r,t)=>t&&"service"!==t.origin||!r.drawingInfo||void 0===r.drawingInfo.transparency?r.layerDefinition?.drawingInfo&&void 0!==r.layerDefinition.drawingInfo.transparency?(0,p.D)(r.layerDefinition.drawingInfo.transparency):void 0:(0,p.D)(r.drawingInfo.transparency)}}},w={type:s.A,readOnly:!0,json:{origins:{service:{read:{source:["fullExtent","spatialReference"],reader:(e,r)=>{const t=s.A.fromJSON(e);return null!=r.spatialReference&&"object"==typeof r.spatialReference&&(t.spatialReference=n.A.fromJSON(r.spatialReference)),t}}}},read:!1}},f={type:String,json:{origins:{service:{read:!1},"portal-item":{read:!1}}}},L={type:Number,json:{origins:{service:{write:{enabled:!1}}},name:"layerDefinition.minScale",write:{layerContainerTypes:i.K}}},I={type:Number,json:{origins:{service:{write:{enabled:!1}}},name:"layerDefinition.maxScale",write:{layerContainerTypes:i.K}}},C={json:{write:{ignoreOrigin:!0,layerContainerTypes:i.K},origins:{"web-map":{read:!1,write:!1}}}},M={type:l.A,json:{name:"attributeTableInfo",write:!0}}},16131:(e,r,t)=>{t.d(r,{q:()=>w});var i=t(31635),s=t(49186),n=t(84952),o=t(10107),a=t(56507),l=(t(44208),t(87811),t(36005)),p=t(64108),y=t(43937),u=t(89317),d=t(45917),c=t(49422);const g={ArcGISAnnotationLayer:!0,ArcGISDimensionLayer:!0,ArcGISFeatureLayer:!0,ArcGISImageServiceLayer:!0,ArcGISImageServiceVectorLayer:!0,ArcGISMapServiceLayer:!0,ArcGISMapServiceTileLayer:!0,ArcGISStreamLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,ArcGISVideoLayer:!0,BingMapsAerial:!0,BingMapsHybrid:!0,BingMapsRoad:!0,CatalogLayer:!0,CSV:!0,GeoJSON:!0,GeoRSS:!0,GroupLayer:!0,KML:!0,KnowledgeGraphLayer:!0,MediaLayer:!0,OGCFeatureLayer:!0,OrientedImageryLayer:!0,ParquetLayer:!0,SubtypeGroupLayer:!0,VectorTileLayer:!0,WCS:!0,WFS:!0,WMS:!0,WebTiledLayer:!0},h={ArcGISImageServiceLayer:!0,ArcGISImageServiceVectorLayer:!0,ArcGISMapServiceLayer:!0,ArcGISMapServiceTileLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,BingMapsAerial:!0,BingMapsHybrid:!0,BingMapsRoad:!0,OpenStreetMap:!0,VectorTileLayer:!0,WCS:!0,WMS:!0,WebTiledLayer:!0},m={ArcGISFeatureLayer:!0,SubtypeGroupTable:!0},v={"web-scene/operational-layers":{ArcGISDimensionLayer:!0,ArcGISFeatureLayer:!0,ArcGISImageServiceLayer:!0,ArcGISMapServiceLayer:!0,ArcGISMapServiceTileLayer:!0,ArcGISSceneServiceLayer:!0,ArcGISTiledElevationServiceLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,BuildingSceneLayer:!0,CatalogLayer:!0,CSV:!0,GaussianSplatLayer:!0,GeoJSON:!0,GroupLayer:!0,IntegratedMesh3DTilesLayer:!0,Object3DTilesLayer:!0,IntegratedMeshLayer:!0,KML:!0,LineOfSightLayer:!0,MediaLayer:!0,OGCFeatureLayer:!0,OrientedImageryLayer:!0,PointCloudLayer:!0,RasterDataLayer:!0,VectorTileLayer:!0,ViewshedLayer:!0,Voxel:!0,WCS:!0,WFS:!0,WMS:!0,WebTiledLayer:!0},"web-scene/basemap-base-layers":{ArcGISImageServiceLayer:!0,ArcGISMapServiceLayer:!0,ArcGISMapServiceTileLayer:!0,ArcGISSceneServiceLayer:!0,ArcGISTiledImageServiceLayer:!0,ArcGISTiledMapServiceLayer:!0,OpenStreetMap:!0,VectorTileLayer:!0,WCS:!0,WMS:!0,WebTiledLayer:!0},"web-scene/basemap-ground-layers":{IntegratedMesh3DTilesLayer:!0},"web-scene/ground":{ArcGISTiledElevationServiceLayer:!0,RasterDataElevationLayer:!0},"web-scene/tables":{ArcGISFeatureLayer:!0},"web-map/operational-layers":g,"web-map/basemap-base-layers":h,"web-map/tables":m,"link-chart/operational-layers":{...g,LinkChartLayer:!0},"link-chart/basemap-base-layers":h,"link-chart/tables":m,"portal-item/operational-layers":{ArcGISFeatureLayer:!0,ArcGISImageServiceLayer:!0,ArcGISMapServiceLayer:!0,ArcGISMapServiceTileLayer:!0,ArcGISSceneServiceLayer:!0,ArcGISStreamLayer:!0,ArcGISTiledImageServiceLayer:!0,BuildingSceneLayer:!0,IntegratedMesh3DTilesLayer:!0,IntegratedMeshLayer:!0,MediaLayer:!0,OrientedImageryLayer:!0,PointCloudLayer:!0,SubtypeGroupLayer:!0,WCS:!0},"portal-item/tables":{ArcGISFeatureLayer:!0,SubtypeGroupTable:!0}};var b=t(10873),S=t(79677);const w=e=>{const r=e;let t=class extends r{constructor(){super(...arguments),this.persistenceEnabled=!0,this.title=null}readId(e,r,t){return"Group Layer"===t?.portalItem?.type?void 0:e}writeListMode(e,r,t,i){(i&&"ground"===i.layerContainerType||e&&(0,c.R)(this,t,{},i))&&(r[t]=e)}writeOperationalLayerType(e,r,t){e&&(r[t]=e)}writeTitle(e,r){r.title=e??"Layer"}readVisibilityTimeExtent(e){return e?S.A.fromArray(e):null}writeVisibilityTimeExtent(e,r,t,i){e&&"tables"!==i.layerContainerType&&(e.isEmpty?i?.messages&&i.messages.push(new s.A("layer:invalid-visibilityTimeExtent","visibilityTimeExtent cannot be empty")):r[t]=e.toArray())}read(e,r){r&&(r.layer=this),(0,d.t)(this,e,r=>super.read(e,r),r)}write(e,r){if(!this.persistenceEnabled&&!r?.ignorePersistenceEnabled)return null;if(r?.origin){const e=`${r.origin}/${r.layerContainerType||"operational-layers"}`,t=v[e];let i=!!t?.[this.operationalLayerType];if("ArcGISTiledElevationServiceLayer"===this.operationalLayerType&&"web-scene/operational-layers"===e&&(i=!1),"ArcGISDimensionLayer"===this.operationalLayerType&&"web-map/operational-layers"===e&&(i=!1),!i)return r.messages?.push(new s.A("layer:unsupported",`Layers (${this.title}, ${this.id}) of type '${this.declaredClass}' are not supported in the context of '${e}'`,{layer:this})),null}const t=super.write(e,{...r,layer:this}),i=!!r&&!!r.messages&&!!r.messages.filter(e=>e instanceof s.A&&"web-document-write:property-required"===e.name).length;return(0,n.w8)(t?.url)?(r?.messages?.push(new s.A("layer:invalid-url",`Layer (${this.title}, ${this.id}) of type '${this.declaredClass}' using a Blob URL cannot be written to web scenes and web maps`,{layer:this})),null):!this.url&&i?null:t}beforeSave(){}};return(0,i.Cg)([(0,o.MZ)({type:String,json:{write:{ignoreOrigin:!0},origins:{"web-scene":{write:{isRequired:!0,ignoreOrigin:!0}},"portal-item":{write:!1}}}})],t.prototype,"id",void 0),(0,i.Cg)([(0,l.w)("id",["id"])],t.prototype,"readId",null),(0,i.Cg)([(0,o.MZ)(b.C1)],t.prototype,"listMode",void 0),(0,i.Cg)([(0,y.K)("listMode")],t.prototype,"writeListMode",null),(0,i.Cg)([(0,o.MZ)({type:String,readOnly:!0,json:{read:!1,write:{target:"layerType",ignoreOrigin:!0},origins:{"portal-item":{write:!1},"web-scene":{name:"layerType",read:!1,write:{enabled:!0,ignoreOrigin:!0,layerContainerTypes:u.K,isRequired:!0}}}}})],t.prototype,"operationalLayerType",void 0),(0,i.Cg)([(0,y.K)("operationalLayerType")],t.prototype,"writeOperationalLayerType",null),(0,i.Cg)([(0,o.MZ)(b.ke)],t.prototype,"opacity",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,readOnly:!1})],t.prototype,"persistenceEnabled",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{write:{ignoreOrigin:!0,writerEnsuresNonNull:!0},origins:{"web-scene":{write:{isRequired:!0,ignoreOrigin:!0,writerEnsuresNonNull:!0}},"portal-item":{write:!1}}},value:"Layer"})],t.prototype,"title",void 0),(0,i.Cg)([(0,y.K)("title"),(0,y.K)(["web-scene"],"title")],t.prototype,"writeTitle",null),(0,i.Cg)([(0,o.MZ)({type:S.A,json:{origins:{"web-scene":{write:{layerContainerTypes:u.K}}}}})],t.prototype,"visibilityTimeExtent",void 0),(0,i.Cg)([(0,l.w)("visibilityTimeExtent")],t.prototype,"readVisibilityTimeExtent",null),(0,i.Cg)([(0,y.K)(["portal-item","web-map","web-scene"],"visibilityTimeExtent",{visibilityTimeExtent:{type:[[a.jz,a.Uv]]}})],t.prototype,"writeVisibilityTimeExtent",null),(0,i.Cg)([(0,o.MZ)({type:Boolean,json:{name:"visibility",write:{layerContainerTypes:u.K}}})],t.prototype,"visible",void 0),t=(0,i.Cg)([(0,p.$)("geoscene.layers.mixins.OperationalLayer")],t),t}},16271:(e,r,t)=>{t.d(r,{Ao:()=>n,KQ:()=>o});var i=t(4576),s=t(31756);function n(e){return 1/(s.j[e]||1)}const o=function(){const e=Object.keys(s.j);return(0,i.TF)(e,"decimal-degrees"),e.sort(),e}()},31756:(e,r,t)=>{t.d(r,{j:()=>n});var i=t(83047),s=t(79258);const n={unknown:1,inches:(0,i.oU)(1,"meters","inches"),feet:(0,i.oU)(1,"meters","feet"),"us-feet":(0,i.oU)(1,"meters","us-feet"),yards:(0,i.oU)(1,"meters","yards"),miles:(0,i.oU)(1,"meters","miles"),"nautical-miles":(0,i.oU)(1,"meters","nautical-miles"),millimeters:(0,i.oU)(1,"meters","millimeters"),centimeters:(0,i.oU)(1,"meters","centimeters"),decimeters:(0,i.oU)(1,"meters","decimeters"),meters:(0,i.oU)(1,"meters","meters"),kilometers:(0,i.oU)(1,"meters","kilometers"),"decimal-degrees":1/(0,i.vl)(1,"meters",s.$O.radius)}},43440:(e,r,t)=>{t.d(r,{A:()=>O});var i=t(31635),s=t(25482),n=t(4718),o=t(10107),a=(t(44208),t(53966),t(64108)),l=t(69540);t(87811);let p=class extends s.o{constructor(e){super(e),this.description=null,this.label=null,this.type=null}};(0,i.Cg)([(0,o.MZ)({type:String,json:{write:!0}})],p.prototype,"description",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{write:!0}})],p.prototype,"label",void 0),(0,i.Cg)([(0,o.MZ)()],p.prototype,"type",void 0),p=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableElement")],p);const y=p;var u=t(56507);let d=class extends((0,l.OU)(y)){constructor(e){super(e),this.displayType="auto",this.type="attachment"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({type:["auto"],json:{write:!0}})],d.prototype,"displayType",void 0),(0,i.Cg)([(0,o.MZ)({type:["attachment"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],d.prototype,"type",void 0),d=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableAttachmentElement")],d);const c=d;let g=class extends((0,l.OU)(y)){constructor(e){super(e),this.description=null,this.fieldName=null,this.label=null,this.type="field"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({type:String,json:{read:!1,write:!1}})],g.prototype,"description",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{write:{enabled:!0,isRequired:!0}}})],g.prototype,"fieldName",void 0),(0,i.Cg)([(0,o.MZ)({type:String,json:{read:!1,write:!1}})],g.prototype,"label",void 0),(0,i.Cg)([(0,o.MZ)({type:["field"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],g.prototype,"type",void 0),g=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableFieldElement")],g);const h=g;let m=class extends((0,l.OU)(y)){constructor(e){super(e),this.relationshipId=null,this.type="relationship"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({type:Number,json:{type:u.jz,write:{enabled:!0,isRequired:!0}}})],m.prototype,"relationshipId",void 0),(0,i.Cg)([(0,o.MZ)({type:["relationship"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],m.prototype,"type",void 0),m=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableRelationshipElement")],m);const v=m,b={base:y,key:"type",typeMap:{attachment:c,field:h,relationship:v}};let S=class extends((0,l.OU)(y)){constructor(e){super(e),this.elements=null,this.type="group"}clone(){return super.clone()}};(0,i.Cg)([(0,o.MZ)({types:[b],json:{name:"attributeTableElements",write:!0}})],S.prototype,"elements",void 0),(0,i.Cg)([(0,o.MZ)({type:["group"],readOnly:!0,json:{read:!1,write:{enabled:!0,isRequired:!0}}})],S.prototype,"type",void 0),S=(0,i.Cg)([(0,a.$)("geoscene.tables.elements.AttributeTableGroupElement")],S);const w=S;let f=class extends((0,l.OU)(s.o)){constructor(e){super(e),this.field=null,this.order=null}};(0,i.Cg)([(0,o.MZ)({type:String,json:{write:!0}})],f.prototype,"field",void 0),(0,i.Cg)([(0,o.MZ)({type:["asc","desc"],json:{write:!0}})],f.prototype,"order",void 0),f=(0,i.Cg)([(0,a.$)("geoscene.tables.support.FieldOrder")],f);const L=f;var I;const C={typesWithGroup:{base:y,key:"type",typeMap:{attachment:c,field:h,group:w,relationship:v}},typesWithoutGroup:b};let M=I=class extends s.o{constructor(e){super(e),this.elements=null,this.orderByFields=null}clone(){return new I({elements:(0,n.o8)(this.elements),orderByFields:(0,n.o8)(this.orderByFields)})}};(0,i.Cg)([(0,o.MZ)({types:[C.typesWithGroup],json:{name:"attributeTableElements",write:!0}})],M.prototype,"elements",void 0),(0,i.Cg)([(0,o.MZ)({type:[L],json:{write:!0}})],M.prototype,"orderByFields",void 0),M=I=(0,i.Cg)([(0,a.$)("geoscene.tables.AttributeTableTemplate")],M);const O=M},88625:(e,r,t)=>{t.d(r,{A:()=>S});var i,s=t(31635),n=t(69540),o=t(66552),a=t(25482),l=t(97768),p=t(10107),y=(t(44208),t(53966),t(87811),t(36005)),u=t(64108),d=t(43937),c=t(30524);let g=i=class extends a.o{constructor(e){super(e),this.expression=void 0,this.title=void 0}async collectRequiredFields(e,r){return(0,c.Dx)(e,r,null,this.expression)}clone(){return new i({expression:this.expression,title:this.title})}equals(e){return this.expression===e.expression&&this.title===e.title}};(0,s.Cg)([(0,p.MZ)({type:String,json:{write:{isRequired:!0}}})],g.prototype,"expression",void 0),(0,s.Cg)([(0,p.MZ)({type:String,json:{write:!0}})],g.prototype,"title",void 0),g=i=(0,s.Cg)([(0,u.$)("geoscene.symbols.support.FeatureExpressionInfo")],g);const h=g;var m=t(16271);const v=(0,o.O)()({onTheGround:"on-the-ground",relativeToGround:"relative-to-ground",relativeToScene:"relative-to-scene",absoluteHeight:"absolute-height"}),b=new o.J({foot:"feet",kilometer:"kilometers",meter:"meters",mile:"miles","us-foot":"us-feet",yard:"yards"});let S=class extends((0,n.OU)(a.o)){constructor(e){super(e),this.featureExpressionInfo=void 0,this.offset=null}readFeatureExpressionInfo(e,r){return null!=e?e.expression?e:void 0:r.featureExpression&&0===r.featureExpression.value?{expression:"0"}:void 0}writeFeatureExpressionInfo(e,r,t,i){r[t]=e.write({},i),"0"===e.expression&&(r.featureExpression={value:0})}get mode(){const{offset:e,featureExpressionInfo:r}=this;return this._isOverridden("mode")?this._get("mode"):null!=e||r?"relative-to-ground":"on-the-ground"}set mode(e){this._override("mode",e)}set unit(e){this._set("unit",e)}write(e,r){return this.offset||this.mode||this.featureExpressionInfo||this.unit?super.write(e,r):null}equals(e){return this.mode===e.mode&&this.offset===e.offset&&this.unit===e.unit&&(0,l.CM)(this.featureExpressionInfo,e.featureExpressionInfo)}};(0,s.Cg)([(0,p.MZ)({type:h,json:{write:!0}})],S.prototype,"featureExpressionInfo",void 0),(0,s.Cg)([(0,y.w)("featureExpressionInfo",["featureExpressionInfo","featureExpression"])],S.prototype,"readFeatureExpressionInfo",null),(0,s.Cg)([(0,d.K)("featureExpressionInfo",{featureExpressionInfo:{type:h},"featureExpression.value":{type:[0]}})],S.prototype,"writeFeatureExpressionInfo",null),(0,s.Cg)([(0,p.MZ)({type:v.apiValues,nonNullable:!0,json:{type:v.jsonValues,read:v.read,write:{writer:v.write,isRequired:!0}}})],S.prototype,"mode",null),(0,s.Cg)([(0,p.MZ)({type:Number,json:{write:!0}})],S.prototype,"offset",void 0),(0,s.Cg)([(0,p.MZ)({type:m.KQ,json:{type:String,read:b.read,write:b.write}})],S.prototype,"unit",null),S=(0,s.Cg)([(0,u.$)("geoscene.symbols.support.ElevationInfo")],S)},89317:(e,r,t)=>{t.d(r,{K:()=>i});const i=["operational-layers","basemap-base-layers","basemap-ground-layers","ground"]},92071:(e,r,t)=>{t.d(r,{P:()=>b,L:()=>S});var i=t(31635),s=t(65008),n=t(76953),o=t(4718),a=t(35666);class l{constructor(){this._propertyOriginMap=new Map,this._originStores=new Array(a.AU),this._values=new Map,this.multipleOriginsSupported=!0}clone(e){const r=new l,t=this._originStores[0];t&&t.forEach((e,t)=>{r.set(t,(0,o.o8)(e),0)});for(let t=2;t<a.AU;t++){const i=this._originStores[t];i&&i.forEach((i,s)=>{e&&e.has(s)||r.set(s,(0,o.o8)(i),t)})}return r}get(e,r){const t=void 0===r?this._values:this._originStores[r];return t?t.get(e):void 0}keys(e){const r=null==e?this._values:this._originStores[e];return r?[...r.keys()]:[]}set(e,r,t=7){let i=this._originStores[t];if(i||(i=new Map,this._originStores[t]=i),i.set(e,r),!this._values.has(e)||this._propertyOriginMap.get(e)<=t){const i=this._values.get(e);return this._values.set(e,r),this._propertyOriginMap.set(e,t),i!==r}return!1}delete(e,r=7){const t=this._originStores[r];if(!t)return;const i=t.get(e);if(t.delete(e),this._values.has(e)&&this._propertyOriginMap.get(e)===r){this._values.delete(e);for(let t=r-1;t>=0;t--){const r=this._originStores[t];if(r&&r.has(e)){this._values.set(e,r.get(e)),this._propertyOriginMap.set(e,t);break}}}return i}has(e,r){const t=void 0===r?this._values:this._originStores[r];return!!t&&t.has(e)}revert(e,r){for(;r>0&&!this.has(e,r);)--r;const t=this._originStores[r],i=t?.get(e),s=this._values.get(e);return this._values.set(e,i),this._propertyOriginMap.set(e,r),s!==i}originOf(e){return this._propertyOriginMap.get(e)||0}isAtOrigin(e,r){return this.has(e,r)&&this.originOf(e)===r}isBelowOrigin(e,r){return!this.has(e)||this.originOf(e)<r}forEach(e){this._values.forEach(e)}}var p=t(45917),y=t(88620),u=t(64108);const d=e=>{const r=e;let t=class extends r{constructor(...e){super(...e);const r=(0,y.oY)(this),t=r.store,i=new l;r.store=i,(0,n.k)(r,t,i)}read(e,r){(0,p.L)(this,e,r)}getAtOrigin(e,r){const t=c(this),i=(0,a.aB)(r);if("string"==typeof e)return t.get(e,i);const s={};return e.forEach(e=>{s[e]=t.get(e,i)}),s}originOf(e){return(0,a.OL)(this.originIdOf(e))}originIdOf(e){return c(this).originOf(e)}revert(e,r){const t=c(this),i=(0,a.aB)(r),s=(0,y.oY)(this);let n;n="string"==typeof e?"*"===e?t.keys(i):[e]:e,n.forEach(e=>{s.invalidate(e),t.revert(e,i),s.commit(e)})}};return t=(0,i.Cg)([(0,u.$)("geoscene.core.ReadOnlyMultiOriginJSONSupport")],t),t};function c(e){return(0,y.oY)(e).store}d(s.A);var g=t(16649),h=t(49422);const m=e=>{const r=e;let t=class extends r{constructor(...e){super(...e)}clear(e,r="user"){(0,y.oY)(this).clearOrigin(e,(0,a.aB)(r))}write(e,r){return(0,h.M)(this,e=e||{},r),e}setAtOrigin(e,r,t){(0,y.oY)(this).setAtOrigin(e,r,(0,a.aB)(t))}removeOrigin(e){const r=v(this),t=(0,a.aB)(e),i=r.keys(t);for(const e of i)r.originOf(e)===t&&r.set(e,r.get(e,t),7)}updateOrigin(e,r){const t=v(this),i=(0,a.aB)(r),s=(0,g.Jt)(this,e);for(let r=i+1;r<a.AU;++r)t.delete(e,r);t.set(e,s,i)}toJSON(e){return this.write({},e)}};return t=(0,i.Cg)([(0,u.$)("geoscene.core.MultiOriginJSONSupport.WriteableMultiOriginJSONSupport")],t),t.prototype.toJSON.isDefaultToJSON=!0,t};function v(e){return(0,y.oY)(e).store}const b=e=>{const r=m(d(e));let t=class extends r{};return t=(0,i.Cg)([(0,u.$)("geoscene.core.MultiOriginJSONSupport")],t),t},S=b(s.A)}}]);