@arcgis/core 6.0.0-next.27 → 6.0.0-next.29
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.
- package/Map.d.ts +6 -0
- package/analysis/AreaMeasurementAnalysis.d.ts +4 -2
- package/analysis/DirectLineMeasurementAnalysis.d.ts +8 -4
- package/arcgisGlobal.d.ts +0 -2
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/131185d26343a997495e.js +1 -0
- package/assets/esri/core/workers/chunks/144bad0c2415c345736a.js +1 -0
- package/assets/esri/core/workers/chunks/176d0a06ebff5a29dedf.js +1 -0
- package/assets/esri/core/workers/chunks/{b0ca81a07cff25df19d2.js → 176d75e76318bfc25a53.js} +1 -1
- package/assets/esri/core/workers/chunks/18776a130d96879a68b1.js +1 -0
- package/assets/esri/core/workers/chunks/{e35641a3a4da8cfbcf54.js → 189321d88026bd7e6d3e.js} +1 -1
- package/assets/esri/core/workers/chunks/18e7fa4d3e0b1a084cc6.js +1 -0
- package/assets/esri/core/workers/chunks/{1168bc5c9f0a7e1f63a2.js → 1989410a618865f02dec.js} +1 -1
- package/assets/esri/core/workers/chunks/{2c0cb214fedb29487eef.js → 199a7f97916679e0257c.js} +1 -1
- package/assets/esri/core/workers/chunks/1c406ab2bf99ac563316.js +1 -0
- package/assets/esri/core/workers/chunks/1d96fbad881a7d14a950.js +1 -0
- package/assets/esri/core/workers/chunks/{42d44c7d532df5ee70e9.js → 1deca3de77b1a9a07da4.js} +1 -1
- package/assets/esri/core/workers/chunks/{45f826554499c38968c6.js → 1ee4df0fd61440cb5f02.js} +1 -1
- package/assets/esri/core/workers/chunks/22e73501e1435a896826.js +1 -0
- package/assets/esri/core/workers/chunks/25657f70c5f04a4ed978.js +1 -0
- package/assets/esri/core/workers/chunks/276a0b549acf048e8673.js +1 -0
- package/assets/esri/core/workers/chunks/{56e903ccef66cbe18f92.js → 2cd60fd062d954322c1f.js} +1 -1
- package/assets/esri/core/workers/chunks/{ad96132bc89671e595f3.js → 2d3e0e4442dbc6ec6def.js} +1 -1
- package/assets/esri/core/workers/chunks/2de4296590bf9f9e9add.js +1 -0
- package/assets/esri/core/workers/chunks/2f5d014d6a72108b0b3a.js +1 -0
- package/assets/esri/core/workers/chunks/{0363d29fc665d169ebc4.js → 3105336a05f38a95ebea.js} +1 -1
- package/assets/esri/core/workers/chunks/379ef56f6b32494832a6.js +1 -0
- package/assets/esri/core/workers/chunks/3aafdb905c697bc9b1ad.js +1 -0
- package/assets/esri/core/workers/chunks/40c2674dae73f0942751.js +1 -0
- package/assets/esri/core/workers/chunks/418addce122dbb8897b4.js +1 -0
- package/assets/esri/core/workers/chunks/4419732baf3459a80e6d.js +1 -0
- package/assets/esri/core/workers/chunks/4976f5567fc7f1b63d10.js +1 -0
- package/assets/esri/core/workers/chunks/4e17665dd9048c300d87.js +1 -0
- package/assets/esri/core/workers/chunks/5396b6e99a0546a25d19.js +1 -0
- package/assets/esri/core/workers/chunks/53c7510df09b71ab5646.js +1 -0
- package/assets/esri/core/workers/chunks/561c48cb4d49b150765b.js +1 -0
- package/assets/esri/core/workers/chunks/{d90a3bfd45b5ed4092e0.js → 590fe0f56bc4c33a50e7.js} +1 -1
- package/assets/esri/core/workers/chunks/5bb6c255bdc8aa9ba23e.js +1 -0
- package/assets/esri/core/workers/chunks/5f1cb79aec9c4a9b7ddc.js +29 -0
- package/assets/esri/core/workers/chunks/{23a4806b4cdf7cc32e4d.js → 5f787809b74eed7b9a91.js} +1 -1
- package/assets/esri/core/workers/chunks/636e9c4ac1f9ae98f9d1.js +1 -0
- package/assets/esri/core/workers/chunks/654f5441227579d2b6b4.js +1 -0
- package/assets/esri/core/workers/chunks/692f0093c444fcc752b5.js +1 -0
- package/assets/esri/core/workers/chunks/69627b2634da64dd885f.js +1 -0
- package/assets/esri/core/workers/chunks/6a7de221cea4426cb490.js +1 -0
- package/assets/esri/core/workers/chunks/7030a4d0714a35995a58.js +1 -0
- package/assets/esri/core/workers/chunks/72d20d3957d612f86431.js +1 -0
- package/assets/esri/core/workers/chunks/7862abd24fb5c3b12e6b.js +1 -0
- package/assets/esri/core/workers/chunks/7a0b4dc0cda190367a39.js +1 -0
- package/assets/esri/core/workers/chunks/{ab1660f5f8a5268c2fac.js → 84038dd85005fea413eb.js} +1 -1
- package/assets/esri/core/workers/chunks/849f446c718e892f39ce.js +1 -0
- package/assets/esri/core/workers/chunks/{8ac2098ecdc40ad41055.js → 8502274806ea52308822.js} +1 -1
- package/assets/esri/core/workers/chunks/865cebc5c982c040ab6f.js +1 -0
- package/assets/esri/core/workers/chunks/{76196c414e48834f7b92.js → 8f008eedb11685ee2048.js} +1 -1
- package/assets/esri/core/workers/chunks/90d797ab82d4a68ba32f.js +1 -0
- package/assets/esri/core/workers/chunks/9184c947cdefe06bf551.js +1 -0
- package/assets/esri/core/workers/chunks/9976eaa81085c0d17e14.js +1 -0
- package/assets/esri/core/workers/chunks/{177f353ce72133e2eeed.js → 9c2436464b7dfd666678.js} +1 -1
- package/assets/esri/core/workers/chunks/a125650edbed802e419a.js +1 -0
- package/assets/esri/core/workers/chunks/{23fd4de56de352f63e2d.js → a2196a49f89d57a0a1c7.js} +1 -1
- package/assets/esri/core/workers/chunks/ad21757d78e372fa2ed6.js +1 -0
- package/assets/esri/core/workers/chunks/b01688ccc29d33bfc82d.js +1 -0
- package/assets/esri/core/workers/chunks/b5eff28cf482d920b9ea.js +1 -0
- package/assets/esri/core/workers/chunks/{04ecf15524ff3838c01c.js → ba4520ddcb6a49988da6.js} +1 -1
- package/assets/esri/core/workers/chunks/be55771758e4bcef0976.js +1 -0
- package/assets/esri/core/workers/chunks/bead830a677690eeb6fb.js +1 -0
- package/assets/esri/core/workers/chunks/c131e0dd180a4c10e12e.js +1 -0
- package/assets/esri/core/workers/chunks/c1cf3edce15f09648eb4.js +1 -0
- package/assets/esri/core/workers/chunks/c4f78a481f43cfae7b63.js +1 -0
- package/assets/esri/core/workers/chunks/c570b90995c65bbb2e14.js +1 -0
- package/assets/esri/core/workers/chunks/c576bef77e34920af188.js +1 -0
- package/assets/esri/core/workers/chunks/c9feffb9884cfed52c4b.js +1 -0
- package/assets/esri/core/workers/chunks/cc97e4fd0dacad970a23.js +1 -0
- package/assets/esri/core/workers/chunks/ce324dde6d7daea33638.js +1 -0
- package/assets/esri/core/workers/chunks/d1d6154b4af1c9cc497b.js +1 -0
- package/assets/esri/core/workers/chunks/d3c3fb079ad97970f834.js +1 -0
- package/assets/esri/core/workers/chunks/daae21cf77864f3293ef.js +1 -0
- package/assets/esri/core/workers/chunks/dc2f93453dfa40f623ab.js +1 -0
- package/assets/esri/core/workers/chunks/dcf6024dc19428ff2b9d.js +1 -0
- package/assets/esri/core/workers/chunks/dd30b02c5978c1c5f511.js +1 -0
- package/assets/esri/core/workers/chunks/de3f140058aa0b907b65.js +1 -0
- package/assets/esri/core/workers/chunks/df375d1b0dab5ecbd1be.js +1 -0
- package/assets/esri/core/workers/chunks/{ef2c3febcceedc44b3ac.js → dfd4782b11d6fdca0492.js} +1 -1
- package/assets/esri/core/workers/chunks/{48cc58890fddbcf69cef.js → e121d15b883184ee83e7.js} +1 -1
- package/assets/esri/core/workers/chunks/{67e06d606c7fd2064adf.js → e2c6cd8dac01e129ccfe.js} +1 -1
- package/assets/esri/core/workers/chunks/e3b212f8af448ec29eef.js +1 -0
- package/assets/esri/core/workers/chunks/e4042e43f0081fe49f7b.js +1 -0
- package/assets/esri/core/workers/chunks/e480e7d5f40049a2053b.js +1 -0
- package/assets/esri/core/workers/chunks/eaab787a5f2445be5e5a.js +1 -0
- package/assets/esri/core/workers/chunks/edd36a1fc80b1d29907e.js +1 -0
- package/assets/esri/core/workers/chunks/ee0dc906cc7979080329.js +1 -0
- package/assets/esri/core/workers/chunks/f07fb9b3fa30d7ee1681.js +1 -0
- package/assets/esri/core/workers/chunks/f09bc86cd52224febfcb.js +1 -0
- package/assets/esri/core/workers/chunks/{037c67ef5c4398d5954d.js → f2dab9fcd90ce38ae3d1.js} +1 -1
- package/assets/esri/core/workers/chunks/f39c700f3db7db52b522.js +1 -0
- package/assets/esri/core/workers/chunks/f3b4159c0722df8ffe13.js +1 -0
- package/assets/esri/core/workers/chunks/f3dc0bc0e00635855a7a.js +1 -0
- package/assets/esri/core/workers/chunks/f45064066e1ab041a0b2.js +1 -0
- package/assets/esri/core/workers/chunks/f7398cfd8bbd041bd635.js +1 -0
- package/assets/esri/core/workers/chunks/f9dc38761b314d33890f.js +1 -0
- package/assets/esri/core/workers/chunks/fe6dcb21570395e46ce8.js +1 -0
- package/assets/esri/core/workers/chunks/{00580a68835aac653038.js → fefdd10bdd5a4c8d8ed0.js} +45 -48
- package/assets/esri/core/workers/chunks/ffe49d9e7df081bef4a5.js +1 -0
- package/assets/esri/themes/base/_core.scss +0 -2
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/BlendLayers.glsl.js +1 -1
- package/chunks/Component.glsl.js +51 -54
- package/chunks/EmissionComposite.glsl.js +1 -1
- package/chunks/Fog.glsl.js +1 -1
- package/chunks/GaussianSplat.glsl.js +65 -21
- package/chunks/GaussianSplatDepth.glsl.js +53 -4
- package/chunks/GaussianSplatShadow.glsl.js +83 -19
- package/chunks/GlobalIllumination.glsl.js +2 -17
- package/chunks/LineMarker.glsl.js +32 -31
- package/chunks/OITAddEmission.glsl.js +1 -1
- package/chunks/RasterColorizer.glsl.js +1 -1
- package/chunks/RibbonLine.glsl.js +34 -34
- package/chunks/Terrain.glsl.js +3 -4
- package/chunks/Water.glsl.js +22 -23
- package/config.d.ts +12 -9
- package/config.js +1 -1
- package/form/FormTemplate.d.ts +1 -1
- package/form/elements/AttachmentElement.d.ts +2 -0
- package/form/elements/FieldElement.d.ts +2 -2
- package/form/elements/FieldElement.js +1 -1
- package/form/elements/RelationshipElement.d.ts +1 -1
- package/form/elements/TextElement.d.ts +2 -2
- package/form/elements/UtilityNetworkAssociationsElement.d.ts +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +2 -2
- package/form/elements/inputs/inputUtils.js +1 -1
- package/form/elements/inputs/types.d.ts +19 -0
- package/form/elements/inputs.d.ts +3 -2
- package/form/elements/inputs.js +1 -1
- package/geometry/operators/containsOperator.d.ts +1 -1
- package/geometry/operators/densifyOperator.d.ts +1 -1
- package/geometry/operators/differenceOperator.d.ts +6 -4
- package/geometry/operators/distanceOperator.d.ts +1 -1
- package/geometry/operators/geodesicProximityOperator.d.ts +8 -8
- package/geometry/operators/graphicBufferOperator.d.ts +6 -6
- package/geometry/operators/integrateOperator.d.ts +2 -2
- package/geometry/operators/intersectsOperator.d.ts +3 -3
- package/geometry/operators/linesToPolygonsOperator.d.ts +2 -2
- package/geometry/operators/locateBetweenOperator.d.ts +2 -2
- package/geometry/operators/minimumBoundingCircleOperator.d.ts +1 -1
- package/geometry/operators/multiPartToSinglePartOperator.d.ts +2 -2
- package/geometry/operators/polygonSlicerOperator.d.ts +2 -2
- package/geometry/operators/projectOperator.d.ts +2 -2
- package/geometry/operators/proximityOperator.d.ts +15 -15
- package/geometry/operators/shapePreservingProjectOperator.d.ts +2 -2
- package/geometry/operators/simplifyOperator.d.ts +2 -2
- package/geometry/operators/support/GeographicTransformationStep.d.ts +3 -3
- package/geometry/operators/support/Transformation.d.ts +8 -8
- package/geometry/operators/support/geographicTransformationUtils.d.ts +3 -3
- package/geometry/operators/symmetricDifferenceOperator.d.ts +2 -2
- package/geometry/operators/withinOperator.d.ts +3 -3
- package/interfaces.d.ts +0 -14
- package/kernel.js +1 -1
- package/layers/GeospatialPDFLayer.d.ts +2 -2
- package/layers/ParquetLayer.d.ts +1 -1
- package/layers/VideoLayer.d.ts +5 -5
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/orientedImagery/transformations/rotationUtils.js +2 -0
- package/layers/orientedImagery/transformations/utils.js +1 -1
- package/layers/save/parquetLayerUtils.js +1 -1
- package/layers/support/vectorTileLayerLoader.js +1 -1
- package/package.json +2 -2
- package/popup/FeaturesModel.js +1 -1
- package/popup/support/featureUtils.js +1 -1
- package/rest/featureService/FeatureService.d.ts +0 -5
- package/rest/networks/support/TraceLocation.d.ts +2 -1
- package/rest/networks/support/TraceResult.d.ts +0 -4
- package/rest/support/OutDistance.d.ts +0 -1
- package/smartMapping/statistics/histogramForTimeSeries.js +1 -1
- package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +1 -1
- package/smartMapping/support/adapters/support/histogramUtils.js +1 -1
- package/support/BasemapStyle.d.ts +2 -2
- package/symbols/cim/types.d.ts +7 -9
- package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
- package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSource.js +1 -1
- package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSourceWorker.js +1 -1
- package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +2 -0
- package/views/2d/engine/webgl/animations/instructions.js +1 -1
- package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
- package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
- package/views/2d/layers/VectorTileLayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureContainer.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
- package/views/2d/layers/support/visualVariableSimpleUtils.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementPathHelper.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
- package/views/3d/analysis/support/projectionUtils.js +1 -1
- package/views/3d/environment/SunLighting.d.ts +15 -2
- package/views/3d/environment/VirtualLighting.d.ts +15 -2
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/ground/GroundMouseWheelMove.js +2 -0
- package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/navigation/Navigation3D.js +1 -1
- package/views/3d/state/controllers/GroundMouseWheelController.js +2 -0
- package/views/3d/state/controllers/PointToPointAnimationController.js +1 -1
- package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
- package/views/3d/state/utils/groundNavigationUtils.js +1 -1
- package/views/3d/support/ResourceController.js +1 -1
- package/views/3d/terrain/BlendLayers.glsl.js +1 -1
- package/views/3d/terrain/RasterColorizer.glsl.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TileAgent.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/webgl-engine/Stage.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +23 -26
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +18 -21
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js +7 -8
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeFragmentNormals.glsl.js +10 -12
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +22 -25
- package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js +6 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/getLocalUp.glsl.js +4 -0
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/{TileBackground.glsl.js → blendLayers.glsl.js} +10 -11
- package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js +8 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
- package/views/3d/webgl-engine/effects/RenderPluginContext.js +2 -0
- package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/glow/applyEmissiveGlow.glsl.js +3 -3
- package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeUtil.glsl.js +30 -35
- package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/shaders/EmissiveTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatDepth.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +70 -108
- package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
- package/views/VideoView.d.ts +10 -0
- package/views/VideoView.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/DrawScreenTool.js +1 -1
- package/views/input/types.d.ts +2 -4
- package/views/interactive/options/LabelOptions.d.ts +5 -5
- package/views/interactive/options/SnappingOptions.d.ts +2 -2
- package/views/layers/LayerView.d.ts +10 -2
- package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +2 -3
- package/widgets/Editor/EditorViewModel.d.ts +10 -12
- package/widgets/Editor/VisibleElements.d.ts +4 -0
- package/widgets/Editor.d.ts +2 -0
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/support/EditableColumnTemplateMixin.js +1 -1
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Features/FeaturesViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/ImageMeasurementWorker.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
- package/widgets/OrientedImageryViewer/imageMeasurementWorkerUtils.js +2 -0
- package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
- package/widgets/OrientedImageryViewer/support/NonPanoramicMedia.js +1 -1
- package/widgets/OrientedImageryViewer/support/dataCaptureUtils.js +1 -1
- package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
- package/widgets/PanoramicViewer/utils.js +1 -1
- package/widgets/Search/LayerSearchSource.d.ts +1 -1
- package/widgets/Sketch/VisibleElements.d.ts +4 -0
- package/widgets/Sketch.d.ts +2 -0
- package/widgets/support/iconUtils.js +1 -1
- package/assets/esri/core/workers/chunks/010f57ec7fdbedf78d02.js +0 -1
- package/assets/esri/core/workers/chunks/0487e1d7a7cecf7c1c25.js +0 -1
- package/assets/esri/core/workers/chunks/09300e74e5b014ce6269.js +0 -1
- package/assets/esri/core/workers/chunks/0bd04bcd4b2710838d48.js +0 -1
- package/assets/esri/core/workers/chunks/0d9c4c6c571ce26d356b.js +0 -1
- package/assets/esri/core/workers/chunks/112ed86f812e4400a7e0.js +0 -1
- package/assets/esri/core/workers/chunks/151e5799ede763a03ee2.js +0 -1
- package/assets/esri/core/workers/chunks/173f89c55a5c79ff065b.js +0 -1
- package/assets/esri/core/workers/chunks/2447d2e2a4a3ab8fcf94.js +0 -1
- package/assets/esri/core/workers/chunks/2a36fe3f3f257a779a1b.js +0 -1
- package/assets/esri/core/workers/chunks/2a97268000c6d03ef720.js +0 -1
- package/assets/esri/core/workers/chunks/2cf8172be83b10b11bdc.js +0 -1
- package/assets/esri/core/workers/chunks/2df37a9a95ceebb87a5f.js +0 -1
- package/assets/esri/core/workers/chunks/2e00c155e447e4930442.js +0 -1
- package/assets/esri/core/workers/chunks/2f91fd61019d2a37476d.js +0 -1
- package/assets/esri/core/workers/chunks/30af63b3b750142faadb.js +0 -1
- package/assets/esri/core/workers/chunks/3a47fc97c400fca2c736.js +0 -1
- package/assets/esri/core/workers/chunks/3cd04d23b73beaf79650.js +0 -1
- package/assets/esri/core/workers/chunks/426b4eb500fdfe9df325.js +0 -1
- package/assets/esri/core/workers/chunks/45367aa8e5c5d574de94.js +0 -1
- package/assets/esri/core/workers/chunks/47c97640ec525676918b.js +0 -1
- package/assets/esri/core/workers/chunks/47d074136a7f8e551a9a.js +0 -1
- package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +0 -1
- package/assets/esri/core/workers/chunks/4cb751dc8d00bdaeb04c.js +0 -1
- package/assets/esri/core/workers/chunks/518ab22f80c3300bcfff.js +0 -1
- package/assets/esri/core/workers/chunks/53ff68d4f9e365fc15cd.js +0 -1
- package/assets/esri/core/workers/chunks/58609bf94f72bc4f1952.js +0 -1
- package/assets/esri/core/workers/chunks/586a929bc037e23857af.js +0 -1
- package/assets/esri/core/workers/chunks/5c7780f804d789cb37f5.js +0 -1
- package/assets/esri/core/workers/chunks/5d76f4d97beee494bbbf.js +0 -1
- package/assets/esri/core/workers/chunks/603fdbbe9534c614928f.js +0 -1
- package/assets/esri/core/workers/chunks/611e3cdf67283c11576f.js +0 -1
- package/assets/esri/core/workers/chunks/6431480ba0fa8c8d487f.js +0 -1
- package/assets/esri/core/workers/chunks/652faf4359ac072c5dde.js +0 -1
- package/assets/esri/core/workers/chunks/65c98f3449044fa4fd79.js +0 -1
- package/assets/esri/core/workers/chunks/6b9961261241fdce0e94.js +0 -1
- package/assets/esri/core/workers/chunks/6dfe96b056bec30068df.js +0 -1
- package/assets/esri/core/workers/chunks/6f897b4e7ddd1dd1672b.js +0 -1
- package/assets/esri/core/workers/chunks/70cc2d79653d66e85b58.js +0 -1
- package/assets/esri/core/workers/chunks/7159d9c36869cd82599e.js +0 -29
- package/assets/esri/core/workers/chunks/7393f63043a1da3d05a6.js +0 -1
- package/assets/esri/core/workers/chunks/7449568eb2305bf2d650.js +0 -1
- package/assets/esri/core/workers/chunks/75d551a449bba61ce238.js +0 -1
- package/assets/esri/core/workers/chunks/7748c2886d0122b40eeb.js +0 -1
- package/assets/esri/core/workers/chunks/78643f116677950ea29a.js +0 -1
- package/assets/esri/core/workers/chunks/78fbe330f16bdbdb886e.js +0 -1
- package/assets/esri/core/workers/chunks/7e0f04a5038e2a4f6e4b.js +0 -1
- package/assets/esri/core/workers/chunks/7f16ae01ccd9b6114d1c.js +0 -1
- package/assets/esri/core/workers/chunks/90153b5230b3a4985c14.js +0 -1
- package/assets/esri/core/workers/chunks/9189dfe19a2a2ccd5173.js +0 -1
- package/assets/esri/core/workers/chunks/943a0f140813ee4ab04a.js +0 -1
- package/assets/esri/core/workers/chunks/98be2f621801e230aa01.js +0 -1
- package/assets/esri/core/workers/chunks/99f51d5d9da6e9bfc430.js +0 -1
- package/assets/esri/core/workers/chunks/9aebe876b1a2fb075f9c.js +0 -1
- package/assets/esri/core/workers/chunks/9b6929faf649e81265fb.js +0 -1
- package/assets/esri/core/workers/chunks/9dd1fc56eb1ea6eb705e.js +0 -1
- package/assets/esri/core/workers/chunks/9dd48e75b4e8d9811d81.js +0 -1
- package/assets/esri/core/workers/chunks/a163c6005aba3378edaa.js +0 -1
- package/assets/esri/core/workers/chunks/a8286febe371dc186aaa.js +0 -1
- package/assets/esri/core/workers/chunks/acb265a22be5e12f38e5.js +0 -1
- package/assets/esri/core/workers/chunks/b12acf1f694f82e00df9.js +0 -1
- package/assets/esri/core/workers/chunks/b83cef2d3f528726d492.js +0 -1
- package/assets/esri/core/workers/chunks/b9596d862da1ec342cd3.js +0 -1
- package/assets/esri/core/workers/chunks/bc1fcc9c897461e68e29.js +0 -1
- package/assets/esri/core/workers/chunks/bdc221d94300c225665a.js +0 -1
- package/assets/esri/core/workers/chunks/be97a629e2ae4d13ceb3.js +0 -1
- package/assets/esri/core/workers/chunks/bfb39590c548188f5052.js +0 -1
- package/assets/esri/core/workers/chunks/c2318c014e97ba519be8.js +0 -1
- package/assets/esri/core/workers/chunks/c29091fe157564cffcf7.js +0 -1
- package/assets/esri/core/workers/chunks/c62237c344e341619341.js +0 -1
- package/assets/esri/core/workers/chunks/c8eae00b0ec87d8b2ff3.js +0 -1
- package/assets/esri/core/workers/chunks/cdb5c26fed7d9a97db49.js +0 -1
- package/assets/esri/core/workers/chunks/cdf0c7706d3e1221f49b.js +0 -1
- package/assets/esri/core/workers/chunks/cea0db3ee326f60610eb.js +0 -1
- package/assets/esri/core/workers/chunks/d7f2f1708d2a2668676c.js +0 -1
- package/assets/esri/core/workers/chunks/daf9b691817e83a11f3c.js +0 -1
- package/assets/esri/core/workers/chunks/db41490bd39d863305bf.js +0 -1
- package/assets/esri/core/workers/chunks/ddc95cdac6c06fc4794c.js +0 -1
- package/assets/esri/core/workers/chunks/df26ec0b508cf4716e0a.js +0 -1
- package/assets/esri/core/workers/chunks/e11159e3dc3353b27c57.js +0 -1
- package/assets/esri/core/workers/chunks/e4a57a0a9629faafd6c6.js +0 -1
- package/assets/esri/core/workers/chunks/ebc1a2ef3aed8aa29424.js +0 -1
- package/assets/esri/core/workers/chunks/ec1c4d66142b6efb0e8b.js +0 -1
- package/assets/esri/core/workers/chunks/ef12fa3574d4cbf8b084.js +0 -1
- package/assets/esri/core/workers/chunks/f2d56f5c15d5977e1d19.js +0 -1
- package/assets/esri/core/workers/chunks/f7bfa3d33b05b250ce33.js +0 -1
- package/assets/esri/core/workers/chunks/f905f1a1aa4c123cbe83.js +0 -1
- package/assets/esri/core/workers/chunks/fc139f251dc0523074e7.js +0 -1
- package/assets/esri/themes/base/widgets/_VideoPlayer.scss +0 -129
- package/assets/esri/widgets/VideoPlayer/t9n/messages.ar.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.bg.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.bs.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.ca.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.cs.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.da.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.de.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.el.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.en.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.es.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.et.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.fi.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.fr.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.he.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.hr.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.hu.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.id.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.it.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.ja.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.ko.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.lt.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.lv.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.nl.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.no.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.pl.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.pt-BR.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.pt-PT.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.ro.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.ru.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.sk.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.sl.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.sr.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.sv.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.th.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.tr.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.uk.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.vi.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-CN.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-HK.json +0 -1
- package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-TW.json +0 -1
- package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +0 -232
- package/widgets/VideoPlayer/VideoPlayerViewModel.js +0 -2
- package/widgets/VideoPlayer/components/MetadataSection.js +0 -2
- package/widgets/VideoPlayer/components/PlayerActionsGroup.js +0 -2
- package/widgets/VideoPlayer/components/PlayerControlsGroup.js +0 -2
- package/widgets/VideoPlayer/components/SettingsButton.js +0 -2
- package/widgets/VideoPlayer/css.js +0 -2
- package/widgets/VideoPlayer.d.ts +0 -119
- package/widgets/VideoPlayer.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../Graphic.js";import{createTask as n}from"../../../../core/asyncUtils.js";import{EsriPromise as r}from"../../../../core/Promise.js";import{isAbortError as i,throwIfAborted as a}from"../../../../core/promiseUtils.js";import{property as o,subclass as s}from"../../../../core/accessorSupport/decorators.js";import c from"../../../../geometry/Polygon.js";import l from"../../../../geometry/Polyline.js";import{load as u}from"../../../../geometry/projectionUtils.js";import d from"../../../../geometry/SpatialReference.js";import f from"../../../../layers/GraphicsLayer.js";import{convertSphereVertexToPixelLocation as p,convertPixelToHeadingPitch as m,convertHeadingPitchToSphereVertex as h}from"../../../../layers/orientedImagery/transformations/utils.js";import{getMeasurementProperties as g,getMeasurementPropertiesPanoramic as _,pixelAreaMeasurement2D as v,pixelAreaMeasurementPanoramic as y,pixelDistanceMeasurement2D as b,pixelDistanceMeasurementPanoramic as x,getPixelLocationFromSphereVertices as S,formatPixels as C,imageToImageTransform as w,imageToImageTransformPanoramic as T}from"../../imageMeasurementUtils.js";import{extractHorizonAnglesFromMedia as E}from"../../utils.js";import{SketchHandlerMixin as D}from"../../mixins/SketchHandlerMixin.js";import O from"../../../Sketch/SketchViewModel.js";let k=[],A=[],j=0,M=class extends D(r){constructor(e){super(e),this.type=`measurement`,this.measurementArray=[],this.pixelMeasurement=0,this.pixelAreaMeasurement=0,this.polygonVertices=[],this._calculationTask=null,this._distanceCalculation=0,this._areaCalculation=null}initialize(){this.addResolvingPromise(u())}async handleCreate(e){try{let t=e.toolEventInfo;switch(e.tool){case`polyline`:await this.handlePolylineEvents(e,t);break;case`polygon`:await this.handlePolygonEvents(e,t)}}catch(e){if(!i(e))throw e}}handleDelete(e){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}handleDestroy(){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}async calculateAreaMeasurement(e,t,n){if(e.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize||this.viewModel.mode===`none`)return null;let r=t==="default"?await g(this.viewModel.currentBestFeature,this.viewModel.activeViewer?.imageSize,this.viewModel.footprintExtent):await _(this.viewModel.currentBestFeature,this.viewModel.activeViewer?.imageSize,this.viewModel.footprintExtent);return a(n),r?t==="default"?await v(e,r,!0):await y(e,r,!0,n):null}async calculateDistanceMeasurement(e,t,n){let{currentBestFeature:r,activeViewer:i}=this.viewModel;if(e.length<2||!r||!i?.imageSize||t===`none`)return null;let o=t==="default"?await g(r,i?.imageSize,this.viewModel.footprintExtent):await _(r,i?.imageSize,this.viewModel.footprintExtent);return a(n),o?t==="default"?await b([e.at(0),e.at(-1)],o,!0):await x([e.at(0),e.at(-1)],o,!0):null}cursorUpdatePolylineHandler(e){let{mode:t,activeViewer:n}=this.viewModel;if(t===`none`||!n?.imageSize)return;if(t==="default")this.measurementArray.push(e.coordinates);else{let t={x:e.coordinates[0],y:e.coordinates[1],z:e.coordinates[2]},r=p(t,n.imageSize[0],n.imageSize[1]);this.measurementArray.push([r.x,r.y])}let r=A.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=r}async cursorUpdatePolygonHandler(e){let{mode:t,activeViewer:n}=this.viewModel;if(t===`none`||!n?.imageSize)return;let r=e.coordinates;if(k=[...this.polygonVertices],t==="default")k.push(r);else{let e={x:r[0],y:r[1],z:r[2]},t=p(e,n?.imageSize[0],n?.imageSize[1]);k.push([t.x,t.y])}if(k.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;let i=k[0];k=k.filter((e,t)=>t===0||t===k.length-1||JSON.stringify(e)!==JSON.stringify(i));let a=await this._getAreaFromTask(k);a?.area&&a?.perimeter&&(j=a.area)}async handlePolylineEvents(e,t){let{currentBestFeature:n,activeViewer:r,mode:i,view:a}=this.viewModel,o=!this.viewModel.accuracyParametersMissing;if(e.state===`cancel`){this.resetDistanceMeasurements(),this.viewModel.distanceMeasurementResult=0,this.viewModel.distanceAccuracyArray=[];return}if(e.state===`complete`&&e.graphic){if(this.viewModel.activeViewer?.addGraphic(e.graphic),this.viewModel.triangularMeasurementActive&&n){let t={pixels:e.graphic.geometry.paths[0],activeFeature:n,activeViewer:r,mode:i,spatialReference:a?.spatialReference};await this.measurementService?.updateMeasurementVectorsArray(t),await this._overlayFirstMeasurement(e.graphic,e.tool)}this.viewModel.measurementGraphic=e.graphic,this.resetDistanceMeasurements();return}switch(t?.type){case`cursor-update`:this.cursorUpdatePolylineHandler(t);break;case`vertex-add`:if(this.measurementArray.length&&o){let e=await this._getAccuracyFromTask();e&&this.viewModel.distanceAccuracyArray.push(e)}this.vertexUpdatePolylineHandler()}let s=await this._getDistanceFromTask();this.pixelMeasurement=s??this.pixelMeasurement}async handlePolygonEvents(e,t){let{currentBestFeature:n,activeViewer:r,mode:i,view:a,accuracyParametersMissing:o}=this.viewModel;if(e.state===`cancel`)this.resetAreaMeasurements(),this.viewModel.areaMeasurementResult=0,this.viewModel.areaMeasurementAccuracy=0;else if(e.state===`complete`&&e.graphic){if(this.viewModel.activeViewer?.addGraphic(e.graphic),!o&&!this.viewModel.triangularMeasurementActive){let e=await this._getAreaAccuracyFromTask(this.polygonVertices);this.viewModel.areaMeasurementAccuracy=e||this.viewModel.areaMeasurementAccuracy}if(this.viewModel.triangularMeasurementActive&&n){let t={pixels:e.graphic.geometry.rings[0],activeFeature:n,activeViewer:r,mode:i,spatialReference:a?.spatialReference};await this.measurementService?.updateMeasurementVectorsArray(t),await this._overlayFirstMeasurement(e.graphic,e.tool)}this.viewModel.measurementGraphic=e.graphic,this.resetAreaMeasurements()}else{switch(t?.type){case`vertex-add`:await this.vertexAddPolygonHandler(t);break;case`cursor-update`:await this.cursorUpdatePolygonHandler(t)}this.viewModel.areaMeasurementResult=j>0?j:this.pixelAreaMeasurement}}async vertexAddPolygonHandler(e){let{mode:t,activeViewer:n}=this.viewModel,r=e.added,i=r[r.length-1];if(!Array.isArray(i)||t===`none`||!n?.imageSize)return;if(t==="default")this.polygonVertices.push(i);else{let e={x:i[0],y:i[1],z:i[2]},t=p(e,n?.imageSize[0],n?.imageSize[1]);this.polygonVertices.push([t.x,t.y])}if(this.polygonVertices.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;let a=this.polygonVertices[0];this.polygonVertices=this.polygonVertices.filter((e,t)=>t===0||t===this.polygonVertices.length-1||JSON.stringify(e)!==JSON.stringify(a));let o=await this._getAreaFromTask(this.polygonVertices);if(!o?.area||!o?.perimeter)return;let{area:s}=o;this.pixelAreaMeasurement=s}vertexUpdatePolylineHandler(){this.measurementArray=this.measurementArray.slice(-1);let e=A.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=e,this.pixelMeasurement>0&&A.push(this.pixelMeasurement)}resetDistanceMeasurements(){this.measurementArray=[],this.pixelMeasurement=0,A=[]}resetAreaMeasurements(){this.polygonVertices=[],this.pixelAreaMeasurement=0,j=0}async _editOverlayedGraphics(e){this.viewModel.sketchTriangularGraphicsLayer||this._initializeSketchTriangularGraphicsLayer(),this.viewModel.sketchTriangularGraphicsLayer?.destroyed&&this._handleDestroyedTriangularSketchLayer(),this.viewModel.sketchTriangularGraphicsLayer.add(e),this.viewModel.sketchTriangular||(this._initializeSketchTriangular(),await this._loadTriangulatedMeasurementAdapter()),this._updateOverlayedGeometry(e)}_handleDestroyedTriangularSketchLayer(){this.viewModel.sketchTriangularGraphicsLayer&&this.viewModel.activeTriangulatedViewer&&(this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.remove(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangularGraphicsLayer=new f,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangular&&(this.viewModel.sketchTriangular.layer=this.viewModel.sketchTriangularGraphicsLayer,this.viewModel.sketchTriangular.view=this.viewModel.activeTriangulatedViewer.imageRenderer))}_initializeSketchTriangular(){if(!this.viewModel.activeTriangulatedViewer)return;let e=this.viewModel.mode===`panoramic`;this.viewModel.sketchTriangular=new O({view:this.viewModel.activeTriangulatedViewer.imageRenderer,layer:this.viewModel.sketchTriangularGraphicsLayer,updateOnGraphicClick:!0,defaultUpdateOptions:{toggleToolOnClick:!1,enableZ:!e}}),e&&(this.viewModel.sketchTriangular.defaultUpdateOptions.reshapeOptions={edgeOperation:`offset`,shapeOperation:`move-xy`,vertexOperation:`move-xy`})}_initializeSketchTriangularGraphicsLayer(){this.viewModel.activeTriangulatedViewer&&(this.viewModel.sketchTriangularGraphicsLayer=new f,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer))}async _overlayFirstMeasurement(e,t){switch(t){case`polyline`:await this._overlayFirstDistanceMeasurement(e);break;case`polygon`:await this._overlayFirstAreaGeometry(e)}}async _overlayFirstDistanceMeasurement(e){let{mode:n,activeTriangulatedViewer:r,currentBestFeature:i,activeViewer:a,footprintExtent:o,currentBestFeatureMeasurementImage:s}=this.viewModel,c=e.geometry?.clone(),u=e.symbol?.clone(),f=r?.imageSize,p=[...c.paths[0]],m=E(r?.media),h=n==="default";if(n===`none`||n===`video`||!f||!i||!a?.imageSize||!s)return;let v=h?p:S(p,f,m),y=h?C(v,!0):v,b=h?await g(i,a?.imageSize,o):await _(i,a?.imageSize,o),x=h?await g(s,this.viewModel.imageMeasurementViewer?.imageSize,o):await _(s,this.viewModel.activeTriangulatedViewer?.imageSize,o);if(y?.length&&b&&x){let e=h?await w(y,b,x):await T(y,b,x),n=e.map(e=>[e.x-.5,-.5-e.y]),r=e.slice(0,2).map(e=>P(e,f,m)),i=new l({paths:h?[n]:[r],spatialReference:d.WebMercator}),a=new t({geometry:i,symbol:u});await this._editOverlayedGraphics(a)}}async _overlayFirstAreaGeometry(e){let{mode:n,activeTriangulatedViewer:r,currentBestFeature:i,currentBestFeatureMeasurementImage:a,activeViewer:o,footprintExtent:s}=this.viewModel,l=e.geometry?.clone(),u=e.symbol?.clone(),f=r?.imageSize,p=E(r?.media),m=[...l.rings[0]],h=n==="default";if(n===`none`||n===`video`||!f||!i||!o?.imageSize||!a)return;let v=h?m:S(m,f,p),y=h?C(v,!0):v,b=h?await g(i,o?.imageSize,s):await _(i,o?.imageSize,s),x=h?await g(a,this.viewModel.imageMeasurementViewer?.imageSize,s):await _(a,this.viewModel.activeTriangulatedViewer?.imageSize,s);if(y?.length&&b&&x){let e=h?await w(y,b,x):await T(y,b,x),n=e.map(e=>[e.x-.5,-.5-e.y]),r=e.slice(0,h?2:e.length).map(e=>P(e,f,p)),i=new c({rings:h?[n]:[r],spatialReference:d.WebMercator}),a=new t({geometry:i,symbol:u});await this._editOverlayedGraphics(a)}}async _loadTriangulatedMeasurementAdapter(e){if(!this.viewModel.triangulatedMeasurementAdapter){let{default:t}=await import(`./TriangulatedMeasurementAdapter.js`);if(a(e),this.viewModel.triangulatedMeasurementAdapter=new t({viewModel:this.viewModel,measurementService:this.measurementService}),!this.viewModel.triangulatedMeasurementAdapter.viewModel.isResolved())return}return this.viewModel.triangulatedMeasurementAdapter}async _getAreaFromTask(e){let{mode:t}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=n(async n=>{this._areaCalculation=null;let r=await this.calculateAreaMeasurement(e,t,n);a(n),this._areaCalculation=r}),await this._calculationTask.promise,this._areaCalculation}async _getDistanceFromTask(){let{mode:e}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=n(async t=>{this._distanceCalculation=0;let n=await this.calculateDistanceMeasurement(this.measurementArray,e,t);a(t),this._distanceCalculation=n}),await this._calculationTask.promise,this._distanceCalculation}async _getAccuracyFromTask(){let{mode:e,currentBestFeature:t,currentBestFeatureMeasurementImage:r,activeViewer:i,activeTriangulatedViewer:o,footprintExtent:s}=this.viewModel,c=i?.imageSize;return e===`none`||!c?null:(this._calculationTask?.abort(),this._calculationTask=n(async n=>{this._distanceCalculation=0;let l={measurementArray:this.measurementArray,measurementType:`distance`,currentBestFeature:t,currentBestFeatureMeasurementImage:r,activeViewer:i,imageSize:c,triangularMeasurementActive:!1,footprintExtent:s,signal:n},u={measurementArray:this.measurementArray,measurementType:`distance`,secondaryViewer:!1,currentBestFeature:t,currentBestFeatureMeasurementImage:r,activeViewer:i,activeTriangulatedViewer:o,footprintExtent:s,signal:n},d=e==="default"?await this.measurementService?.calculateAccuracy(l):await this.measurementService?.calculateAccuracyPanoramic(u);a(n),this._distanceCalculation=d}),await this._calculationTask.promise,this._distanceCalculation)}async _getAreaAccuracyFromTask(e){let{mode:t,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:o,activeTriangulatedViewer:s,footprintExtent:c}=this.viewModel,l=o?.imageSize;return t===`none`||!l?null:(this._calculationTask?.abort(),this._calculationTask=n(async n=>{this._distanceCalculation=0;let u={measurementArray:e,measurementType:`area`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:o,imageSize:l,triangularMeasurementActive:!1,footprintExtent:c,signal:n},d={measurementArray:e,measurementType:`area`,secondaryViewer:!1,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:o,activeTriangulatedViewer:s,footprintExtent:c,signal:n},f=t==="default"?await this.measurementService?.calculateAccuracy(u):await this.measurementService?.calculateAccuracyPanoramic(d);a(n),this._distanceCalculation=f}),await this._calculationTask.promise,this._distanceCalculation)}_updateOverlayedGeometry(e){this.viewModel.sketchTriangular?.update([e],{tool:`reshape`}).catch(()=>{})}};e([o()],M.prototype,`type`,void 0),e([o()],M.prototype,`measurementArray`,void 0),e([o()],M.prototype,`pixelMeasurement`,void 0),e([o()],M.prototype,`pixelAreaMeasurement`,void 0),e([o()],M.prototype,`polygonVertices`,void 0),M=e([s(`esri.widgets.OrientedImageryViewer.adapters.sketch.MeasurementAdapter`)],M);const N=M,P=(e,t,n)=>{let{heading:r,pitch:i}=m(e,t[0],t[1]);return h(r,i,n)};export{N as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../Graphic.js";import{createTask as n}from"../../../../core/asyncUtils.js";import{EsriPromise as r}from"../../../../core/Promise.js";import{isAbortError as i,throwIfAborted as a}from"../../../../core/promiseUtils.js";import{property as o,subclass as s}from"../../../../core/accessorSupport/decorators.js";import c from"../../../../geometry/Polygon.js";import l from"../../../../geometry/Polyline.js";import{load as u}from"../../../../geometry/projectionUtils.js";import d from"../../../../geometry/SpatialReference.js";import f from"../../../../layers/GraphicsLayer.js";import{convertSphereVertexToPixelLocation as p,convertPixelToHeadingPitch as m,convertHeadingPitchToSphereVertex as h}from"../../../../layers/orientedImagery/transformations/utils.js";import{getMeasurementProperties as g,getMeasurementPropertiesPanoramic as _,pixelAreaMeasurement2D as v,pixelAreaMeasurementPanoramic as y,pixelDistanceMeasurement2D as b,pixelDistanceMeasurementPanoramic as x,getPixelLocationFromSphereVertices as S,formatPixels as C,imageToImageTransform as w,imageToImageTransformPanoramic as T}from"../../imageMeasurementUtils.js";import{extractHorizonAnglesFromMedia as E}from"../../utils.js";import{SketchHandlerMixin as D}from"../../mixins/SketchHandlerMixin.js";import O from"../../../Sketch/SketchViewModel.js";let k=[],A=[],j=0,M=class extends D(r){constructor(e){super(e),this.type=`measurement`,this.measurementArray=[],this.pixelMeasurement=0,this.pixelAreaMeasurement=0,this.polygonVertices=[],this._calculationTask=null,this._distanceCalculation=0,this._areaCalculation=null}initialize(){this.addResolvingPromise(u())}async handleCreate(e){try{let t=e.toolEventInfo;switch(e.tool){case`polyline`:await this.handlePolylineEvents(e,t);break;case`polygon`:await this.handlePolygonEvents(e,t)}}catch(e){if(!i(e))throw e}}handleDelete(e){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}handleDestroy(){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}async calculateAreaMeasurement(e,t,n){if(e.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize||this.viewModel.mode===`none`)return null;let r=this.viewModel.activeViewer.imageSize,i=(t==="default"?this.measurementService?.getCachedMeasurementProperties(`default`,r):this.measurementService?.getCachedMeasurementProperties(`panoramic`,r))??(t==="default"?await g(this.viewModel.currentBestFeature,r,this.viewModel.footprintExtent,n):await _(this.viewModel.currentBestFeature,r,this.viewModel.footprintExtent,n));return a(n),i?t==="default"?await v(e,i,!0):await y(e,i,!0,n):null}async calculateDistanceMeasurement(e,t,n){let{currentBestFeature:r,activeViewer:i}=this.viewModel;if(e.length<2||!r||!i?.imageSize||t===`none`)return null;let o=i.imageSize,s=(t==="default"?this.measurementService?.getCachedMeasurementProperties(`default`,o):this.measurementService?.getCachedMeasurementProperties(`panoramic`,o))??(t==="default"?await g(r,o,this.viewModel.footprintExtent,n):await _(r,o,this.viewModel.footprintExtent,n));return a(n),s?t==="default"?await b([e.at(0),e.at(-1)],s,!0):await x([e.at(0),e.at(-1)],s,!0):null}cursorUpdatePolylineHandler(e){let{mode:t,activeViewer:n}=this.viewModel;if(t===`none`||!n?.imageSize)return;if(t==="default")this.measurementArray.push(e.coordinates);else{let t={x:e.coordinates[0],y:e.coordinates[1],z:e.coordinates[2]},r=p(t,n.imageSize[0],n.imageSize[1]);this.measurementArray.push([r.x,r.y])}let r=A.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=r}async cursorUpdatePolygonHandler(e){let{mode:t,activeViewer:n}=this.viewModel;if(t===`none`||!n?.imageSize)return;let r=e.coordinates;if(k=[...this.polygonVertices],t==="default")k.push(r);else{let e={x:r[0],y:r[1],z:r[2]},t=p(e,n?.imageSize[0],n?.imageSize[1]);k.push([t.x,t.y])}if(k.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;let i=k[0];k=k.filter((e,t)=>t===0||t===k.length-1||JSON.stringify(e)!==JSON.stringify(i));let a=await this._getAreaFromTask(k);a?.area&&a?.perimeter&&(j=a.area)}async handlePolylineEvents(e,t){let{currentBestFeature:n,activeViewer:r,mode:i,view:a}=this.viewModel,o=!this.viewModel.accuracyParametersMissing;if(e.state===`cancel`){this.resetDistanceMeasurements(),this.viewModel.distanceMeasurementResult=0,this.viewModel.distanceAccuracyArray=[];return}if(e.state===`complete`&&e.graphic){if(this.viewModel.activeViewer?.addGraphic(e.graphic),this.viewModel.triangularMeasurementActive&&n){let t={pixels:e.graphic.geometry.paths[0],activeFeature:n,activeViewer:r,mode:i,spatialReference:a?.spatialReference};await this.measurementService?.updateMeasurementVectorsArray(t),await this._overlayFirstMeasurement(e.graphic,e.tool)}this.viewModel.measurementGraphic=e.graphic,this.resetDistanceMeasurements();return}switch(t?.type){case`cursor-update`:this.cursorUpdatePolylineHandler(t);break;case`vertex-add`:if(this.measurementArray.length&&o){let e=await this._getAccuracyFromTask();e&&this.viewModel.distanceAccuracyArray.push(e)}this.vertexUpdatePolylineHandler()}let s=await this._getDistanceFromTask();this.pixelMeasurement=s??this.pixelMeasurement}async handlePolygonEvents(e,t){let{currentBestFeature:n,activeViewer:r,mode:i,view:a,accuracyParametersMissing:o}=this.viewModel;if(e.state===`cancel`)this.resetAreaMeasurements(),this.viewModel.areaMeasurementResult=0,this.viewModel.areaMeasurementAccuracy=0;else if(e.state===`complete`&&e.graphic){if(this.viewModel.activeViewer?.addGraphic(e.graphic),!o&&!this.viewModel.triangularMeasurementActive){let e=await this._getAreaAccuracyFromTask(this.polygonVertices);this.viewModel.areaMeasurementAccuracy=e||this.viewModel.areaMeasurementAccuracy}if(this.viewModel.triangularMeasurementActive&&n){let t={pixels:e.graphic.geometry.rings[0],activeFeature:n,activeViewer:r,mode:i,spatialReference:a?.spatialReference};await this.measurementService?.updateMeasurementVectorsArray(t),await this._overlayFirstMeasurement(e.graphic,e.tool)}this.viewModel.measurementGraphic=e.graphic,this.resetAreaMeasurements()}else{switch(t?.type){case`vertex-add`:await this.vertexAddPolygonHandler(t);break;case`cursor-update`:await this.cursorUpdatePolygonHandler(t)}this.viewModel.areaMeasurementResult=j>0?j:this.pixelAreaMeasurement}}async vertexAddPolygonHandler(e){let{mode:t,activeViewer:n}=this.viewModel,r=e.added,i=r[r.length-1];if(!Array.isArray(i)||t===`none`||!n?.imageSize)return;if(t==="default")this.polygonVertices.push(i);else{let e={x:i[0],y:i[1],z:i[2]},t=p(e,n?.imageSize[0],n?.imageSize[1]);this.polygonVertices.push([t.x,t.y])}if(this.polygonVertices.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;let a=this.polygonVertices[0];this.polygonVertices=this.polygonVertices.filter((e,t)=>t===0||t===this.polygonVertices.length-1||JSON.stringify(e)!==JSON.stringify(a));let o=await this._getAreaFromTask(this.polygonVertices);if(!o?.area||!o?.perimeter)return;let{area:s}=o;this.pixelAreaMeasurement=s}vertexUpdatePolylineHandler(){this.measurementArray=this.measurementArray.slice(-1);let e=A.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=e,this.pixelMeasurement>0&&A.push(this.pixelMeasurement)}resetDistanceMeasurements(){this.measurementArray=[],this.pixelMeasurement=0,A=[]}resetAreaMeasurements(){this.polygonVertices=[],this.pixelAreaMeasurement=0,j=0}async _editOverlayedGraphics(e){this.viewModel.sketchTriangularGraphicsLayer||this._initializeSketchTriangularGraphicsLayer(),this.viewModel.sketchTriangularGraphicsLayer?.destroyed&&this._handleDestroyedTriangularSketchLayer(),this.viewModel.sketchTriangularGraphicsLayer.add(e),this.viewModel.sketchTriangular||(this._initializeSketchTriangular(),await this._loadTriangulatedMeasurementAdapter()),this._updateOverlayedGeometry(e)}_handleDestroyedTriangularSketchLayer(){this.viewModel.sketchTriangularGraphicsLayer&&this.viewModel.activeTriangulatedViewer&&(this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.remove(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangularGraphicsLayer=new f,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangular&&(this.viewModel.sketchTriangular.layer=this.viewModel.sketchTriangularGraphicsLayer,this.viewModel.sketchTriangular.view=this.viewModel.activeTriangulatedViewer.imageRenderer))}_initializeSketchTriangular(){if(!this.viewModel.activeTriangulatedViewer)return;let e=this.viewModel.mode===`panoramic`;this.viewModel.sketchTriangular=new O({view:this.viewModel.activeTriangulatedViewer.imageRenderer,layer:this.viewModel.sketchTriangularGraphicsLayer,updateOnGraphicClick:!0,defaultUpdateOptions:{toggleToolOnClick:!1,enableZ:!e}}),e&&(this.viewModel.sketchTriangular.defaultUpdateOptions.reshapeOptions={edgeOperation:`offset`,shapeOperation:`move-xy`,vertexOperation:`move-xy`})}_initializeSketchTriangularGraphicsLayer(){this.viewModel.activeTriangulatedViewer&&(this.viewModel.sketchTriangularGraphicsLayer=new f,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer))}async _overlayFirstMeasurement(e,t){switch(t){case`polyline`:await this._overlayFirstDistanceMeasurement(e);break;case`polygon`:await this._overlayFirstAreaGeometry(e)}}async _overlayFirstDistanceMeasurement(e){let{mode:n,activeTriangulatedViewer:r,currentBestFeature:i,activeViewer:a,footprintExtent:o,currentBestFeatureMeasurementImage:s}=this.viewModel,c=e.geometry?.clone(),u=e.symbol?.clone(),f=r?.imageSize,p=[...c.paths[0]],m=E(r?.media),h=n==="default";if(n===`none`||n===`video`||!f||!i||!a?.imageSize||!s)return;let v=h?p:S(p,f,m),y=h?C(v,!0):v,b=h?await g(i,a?.imageSize,o):await _(i,a?.imageSize,o),x=h?await g(s,this.viewModel.imageMeasurementViewer?.imageSize,o):await _(s,this.viewModel.activeTriangulatedViewer?.imageSize,o);if(y?.length&&b&&x){let e=h?await w(y,b,x):await T(y,b,x),n=e.map(e=>[e.x-.5,-.5-e.y]),r=e.slice(0,2).map(e=>P(e,f,m)),i=new l({paths:h?[n]:[r],spatialReference:d.WebMercator}),a=new t({geometry:i,symbol:u});await this._editOverlayedGraphics(a)}}async _overlayFirstAreaGeometry(e){let{mode:n,activeTriangulatedViewer:r,currentBestFeature:i,currentBestFeatureMeasurementImage:a,activeViewer:o,footprintExtent:s}=this.viewModel,l=e.geometry?.clone(),u=e.symbol?.clone(),f=r?.imageSize,p=E(r?.media),m=[...l.rings[0]],h=n==="default";if(n===`none`||n===`video`||!f||!i||!o?.imageSize||!a)return;let v=h?m:S(m,f,p),y=h?C(v,!0):v,b=h?await g(i,o?.imageSize,s):await _(i,o?.imageSize,s),x=h?await g(a,this.viewModel.imageMeasurementViewer?.imageSize,s):await _(a,this.viewModel.activeTriangulatedViewer?.imageSize,s);if(y?.length&&b&&x){let e=h?await w(y,b,x):await T(y,b,x),n=e.map(e=>[e.x-.5,-.5-e.y]),r=e.slice(0,h?2:e.length).map(e=>P(e,f,p)),i=new c({rings:h?[n]:[r],spatialReference:d.WebMercator}),a=new t({geometry:i,symbol:u});await this._editOverlayedGraphics(a)}}async _loadTriangulatedMeasurementAdapter(e){if(!this.viewModel.triangulatedMeasurementAdapter){let{default:t}=await import(`./TriangulatedMeasurementAdapter.js`);if(a(e),this.viewModel.triangulatedMeasurementAdapter=new t({viewModel:this.viewModel,measurementService:this.measurementService}),!this.viewModel.triangulatedMeasurementAdapter.viewModel.isResolved())return}return this.viewModel.triangulatedMeasurementAdapter}async _getAreaFromTask(e){let{mode:t}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=n(async n=>{this._areaCalculation=null;let r=await this.calculateAreaMeasurement(e,t,n);a(n),this._areaCalculation=r}),await this._calculationTask.promise,this._areaCalculation}async _getDistanceFromTask(){let{mode:e}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=n(async t=>{this._distanceCalculation=0;let n=await this.calculateDistanceMeasurement(this.measurementArray,e,t);a(t),this._distanceCalculation=n}),await this._calculationTask.promise,this._distanceCalculation}async _getAccuracyFromTask(){let{mode:e,currentBestFeature:t,currentBestFeatureMeasurementImage:r,activeViewer:i,activeTriangulatedViewer:o,footprintExtent:s}=this.viewModel,c=i?.imageSize;return e===`none`||!c?null:(this._calculationTask?.abort(),this._calculationTask=n(async n=>{this._distanceCalculation=0;let l={measurementArray:this.measurementArray,measurementType:`distance`,currentBestFeature:t,currentBestFeatureMeasurementImage:r,activeViewer:i,imageSize:c,triangularMeasurementActive:!1,footprintExtent:s,signal:n},u={measurementArray:this.measurementArray,measurementType:`distance`,secondaryViewer:!1,currentBestFeature:t,currentBestFeatureMeasurementImage:r,activeViewer:i,activeTriangulatedViewer:o,footprintExtent:s,signal:n},d=e==="default"?await this.measurementService?.calculateAccuracy(l):await this.measurementService?.calculateAccuracyPanoramic(u);a(n),this._distanceCalculation=d}),await this._calculationTask.promise,this._distanceCalculation)}async _getAreaAccuracyFromTask(e){let{mode:t,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:o,activeTriangulatedViewer:s,footprintExtent:c}=this.viewModel,l=o?.imageSize;return t===`none`||!l?null:(this._calculationTask?.abort(),this._calculationTask=n(async n=>{this._distanceCalculation=0;let u={measurementArray:e,measurementType:`area`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:o,imageSize:l,triangularMeasurementActive:!1,footprintExtent:c,signal:n},d={measurementArray:e,measurementType:`area`,secondaryViewer:!1,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:o,activeTriangulatedViewer:s,footprintExtent:c,signal:n},f=t==="default"?await this.measurementService?.calculateAccuracy(u):await this.measurementService?.calculateAccuracyPanoramic(d);a(n),this._distanceCalculation=f}),await this._calculationTask.promise,this._distanceCalculation)}_updateOverlayedGeometry(e){this.viewModel.sketchTriangular?.update([e],{tool:`reshape`}).catch(()=>{})}};e([o()],M.prototype,`type`,void 0),e([o()],M.prototype,`measurementArray`,void 0),e([o()],M.prototype,`pixelMeasurement`,void 0),e([o()],M.prototype,`pixelAreaMeasurement`,void 0),e([o()],M.prototype,`polygonVertices`,void 0),M=e([s(`esri.widgets.OrientedImageryViewer.adapters.sketch.MeasurementAdapter`)],M);const N=M,P=(e,t,n)=>{let{heading:r,pitch:i}=m(e,t[0],t[1]);return h(r,i,n)};export{N as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../../Graphic.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{clamp as n}from"../../../../core/mathUtils.js";import{throwIfAborted as r,waitTick as i}from"../../../../core/promiseUtils.js";import{subtract as a,length as o,normalize as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import l from"../../../../geometry/Mesh.js";import u from"../../../../geometry/Point.js";import{projectAsync as d}from"../../../../geometry/projectionUtils.js";import{projectPointToVector as f}from"../../../../geometry/projection/projectPointToVector.js";import p from"../../../../geometry/support/MeshVertexAttributes.js";import{projectVertices as m,updateFrustum as h}from"../../../../layers/orientedImagery/core/coverageUtils.js";import g from"../../../../layers/orientedImagery/transformations/updateElevation.js";import{toRenderCamera as _}from"../../../../views/3d/webgl.js";import{directionToHeadingTilt as v}from"../../../../views/3d/support/viewingModeUtils.js";import{getPointerActions as y,eventMatchesMousePointerActions as b}from"../../../../views/input/handlers/support.js";import{fixedImageSize as x,invalidCameraHeading as S}from"../../constants.js";import{createFeatureCoverage as C}from"../../featureCoverage.js";import{activeFrustumSymbol as w,additionalFrustumSymbol as T}from"../../symbols.js";import{getDefaultSuperimposeFov as E,panoramicSuperimposeMaxFov as D,panoramicSuperimposeMinFov as O,panoramicSuperimposeZoomOutFactor as k,panoramicSuperimposeZoomInFactor as A,getViewCameraFieldOfView as j,panoramicSuperimposeMaxTilt as M,panoramicSuperimposeMinTilt as N,panoramicSuperimposeKeyboardAngleStep as P}from"../../support/superimposeUtils.js";class F{constructor(u){this.viewModel=u,this._defaultSuperimposeSecondaryDragAction=null,this._defaultSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null,this._panoramicSuperimposeNavigationHandles=[],this.createFootprints=async n=>{let{coverageFrustums:i,currentBestFeature:a,isAdditionalCoverageVisible:o,view:s}=this.viewModel,c=i.filter(t);for(let t of c){let i=t.clone();if(!s.spatialReference.equals(i.spatialReference)){let{components:e,spatialReference:t,origin:a,vertexAttributes:o,vertexSpace:c}=i;if(c.type===`local`){let e=await d(a,s.spatialReference,n);r(n),i.centerAt(e)}else{let a=o.position,c=Float64Array.from(await m([...a],t.clone(),s.spatialReference.clone(),n));r(n),i=new l({vertexAttributes:new p({position:c}),components:e,spatialReference:s.spatialReference.clone()})}}t.imageID===a.attributes.objectId?this.viewModel.bestFeatureFootprint=new e({attributes:{imageID:t.imageID},geometry:i,symbol:w.clone(),visible:!1}):this.viewModel.additionalFootprints.push(new e({attributes:{imageID:t.imageID},geometry:i,symbol:T.clone(),visible:o}))}},this.updateFootprint=async(n,i,a)=>{let{bestFeatureFootprint:o,currentBestFeature:s,activeViewer:c,footprintExtent:l,view:u,mode:f}=this.viewModel,p=f===`video`?x:c?.imageSize,m=i??s;if(!s||!o?.geometry||!p||!l||!m||!u?.spatialReference){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:g,location:_,cameraPitch:v,horizontalFieldOfView:y,verticalFieldOfView:b,cameraRoll:S}}=m,C=null;i&&(C=await this._computeFeatureFootprint(i,a));let T=m.attributes.location.toArray(),{vertexAttributes:{position:E},spatialReference:D}=(i&&C?C:o).geometry,O=await I(E,D,_.spatialReference),k=await this.viewModel.getMapPoint(n);r(a);let A=k.filter(t);if(!A.length)return;A[0].spatialReference.equals(_.spatialReference)||(A=await Promise.all(A.map(async e=>{let t=await d(e,_.spatialReference,a);return r(a),t})));let j=await h(n.map(({x:e,y:t})=>[e,t]),A.map(e=>e.toArray()),{cameraHeight:g,cameraLocation:T,cameraPitch:v,frustumVertices:O,horizontalFieldOfView:y,imageHeight:p[1],imageWidth:p[0],inSRS:{wkid:_.spatialReference.wkid},outSRS:{wkid:u.spatialReference.wkid},verticalFieldOfView:b,cameraRoll:S??0,options:a});this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:m.attributes.objectId},geometry:j,symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateVideoFootprint=async n=>{let{points:i,feature:a,scale:o,options:s}=n,{bestFeatureFootprint:c,currentBestFeature:l,activeViewer:u,footprintExtent:f,view:p,mode:m}=this.viewModel,g=m===`video`?x:u?.imageSize,_=a??l;if(!l||!c?.geometry||!g||!f||!_||!p?.spatialReference||m===`none`){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:v,location:y,cameraPitch:b,horizontalFieldOfView:S,verticalFieldOfView:C,cameraRoll:T}}=_,E=null;a&&(E=await this._computeFeatureFootprint(a,s));let D=_.attributes.location.toArray(),{vertexAttributes:{position:O},spatialReference:k}=(a&&E?E:c).geometry,A=await I(O,k,y.spatialReference),j={feature:_,mode:m,imageSize:g,footprintExtent:f},M=await this.viewModel.getMapPointForFeature(i,j,s);r(s);let N=M.filter(t);if(!N.length)return;N[0].spatialReference.equals(y.spatialReference)||(N=await Promise.all(N.map(async e=>{let t=await d(e,y.spatialReference,s);return r(s),t})));let P=await h(i.map(({x:e,y:t})=>[e,t]),N.map(e=>e.toArray()),{cameraHeight:v,cameraLocation:D,cameraPitch:b,frustumVertices:A,horizontalFieldOfView:S,imageHeight:g[1],imageWidth:g[0],inSRS:{wkid:y.spatialReference.wkid},outSRS:{wkid:p.spatialReference.wkid},verticalFieldOfView:C,cameraRoll:T??0,options:s});if(o&&P){let e=R(P);P.scale(o,{origin:e})}this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:_.attributes.objectId},geometry:P,symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateFootprintPanorama=async(t,n)=>{await i(n);let{horizontalFieldOfView:r,pitch:a,verticalFieldOfView:o,yaw:s,feature:c}=t,l=c?.clone()??this.viewModel.currentBestFeature?.clone();if(!l)return;let{attributes:u}=l;u.orientedImageryType=null,u.cameraHeading=s,u.cameraPitch=a,u.horizontalFieldOfView=r,u.verticalFieldOfView=o,u.cameraRoll=0;let{frustum:d}=C(u);!d||!this.viewModel.view?.spatialReference.equals(d.spatialReference)?this.viewModel.updateCurrentCoveragePolygon(null):this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:u.objectId},geometry:d.clone(),symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updatePanoramicSuperimposeCamera=async(e,t)=>{let{camera:n,currentBestFeature:i}=e,{view:a}=this.viewModel;if(a?.type!==`3d`)return;let o=i.attributes.location,s=o.spatialReference.equals(a.spatialReference)?o:await d(o,a.spatialReference,t);if(r(t),!s)return;let c=n.clone();c.position=s.clone(),a.camera=c,this._enablePanoramicSuperimposeNavigation(s)},this.updateDefaultSuperimposeCamera=async(e,t)=>{let{currentBestFeature:i,target:l}=e,{view:u}=this.viewModel;if(u?.type!==`3d`)return;let{cameraHeading:p,cameraPitch:m,cameraRoll:h,horizontalFieldOfView:g,location:y,verticalFieldOfView:b}=i.attributes,x=y.spatialReference.equals(u.spatialReference)?y.clone():await d(y,u.spatialReference,t);if(r(t),!x)return;let C=E(u,g,b,h??0),w=u.camera.clone();if(w.position=x,w.fov=n(w.fov,O,D),p!=null&&p!==S&&(w.heading=p),m!=null&&(w.tilt=m),C!=null&&(w.fov=C),l){let e=_(u,w),t=c();if(e&&f(l,t,u.renderSpatialReference)&&(a(t,t,e.eye),o(t)>0)){s(t,t);let{heading:n,tilt:r}=v(u,e.eye,t,e.up);w.heading=n,w.tilt=r}}u.camera=w},this.enableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel;if(e?.type!==`3d`)return;let t=e.navigation.actionMap;this._defaultSuperimposeSecondaryDragAction??=t.dragSecondary,t.dragSecondary!==`none`&&(t.dragSecondary=`none`),this._defaultSuperimposeNavigationHandles.length||(this._defaultSuperimposeNavigationHandles=[e.on(`drag`,this._handleDefaultSuperimposeDrag)])},this.disableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel,t=this._defaultSuperimposeSecondaryDragAction;this._defaultSuperimposeNavigationHandles.forEach(e=>e.remove()),this._defaultSuperimposeNavigationHandles=[],e?.type!==`3d`||t==null||(e.navigation.actionMap.dragSecondary=t),this._defaultSuperimposeSecondaryDragAction=null},this.disablePanoramicSuperimposeNavigation=()=>{this._panoramicSuperimposeNavigationHandles.forEach(e=>e.remove()),this._panoramicSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null},this._handleDefaultSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`)return;let n=y(`rotate`,t.navigation.actionMap);b(e,n)&&e.stopPropagation()},this._handlePanoramicSuperimposeDoubleClick=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone(),i=e.native.ctrlKey?k:A;r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*i,O,D),t.camera=r},this._handlePanoramicSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(t&&t.type===`3d`&&this._panoramicSuperimposeAnchor)switch(e.stopPropagation(),e.action){case`start`:this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return;case`update`:{let r=this._panoramicSuperimposeLastScreenPoint;if(!r){this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return}let i=r.x-e.x,a=e.y-r.y;this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};let o=t.camera.clone(),{horizontal:s,vertical:c}=j(t);o.position=this._panoramicSuperimposeAnchor.clone(),o.heading+=s*i/Math.max(t.width,1),o.tilt=n(o.tilt+c*a/Math.max(t.height,1),N,M),t.camera=o;return}case`end`:this._panoramicSuperimposeLastScreenPoint=null;return}},this._handlePanoramicSuperimposeKeyDown=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;let r=t.camera.clone(),i=!0;switch(r.position=this._panoramicSuperimposeAnchor.clone(),e.key){case`ArrowLeft`:r.heading-=P;break;case`ArrowRight`:r.heading+=P;break;case`ArrowUp`:r.tilt=n(r.tilt-P,N,M);break;case`ArrowDown`:r.tilt=n(r.tilt+P,N,M);break;default:i=!1}i&&(e.stopPropagation(),t.camera=r)},this._handlePanoramicSuperimposeWheel=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone();r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*(e.deltaY>0?k:A),O,D),t.camera=r}}async _computeFeatureFootprint(e,t){let{currentBestFeature:n,view:i}=this.viewModel,a=n?.elevationSample;if(a?.extent&&!a.extent.contains(e.geometry)&&(a=await this.viewModel.processFeatureElevation([e],e.geometry.clone(),t)??a),a){let n=await g(e.geometry.clone(),{elevationSample:a},t);r(t),e.attributes.elevation=n.z}return L(e,i.spatialReference,t)}_enablePanoramicSuperimposeNavigation(e){let{view:t}=this.viewModel;t&&t.type===`3d`&&(this.disablePanoramicSuperimposeNavigation(),this._panoramicSuperimposeAnchor=e.clone(),this._panoramicSuperimposeNavigationHandles=[t.on(`drag`,this._handlePanoramicSuperimposeDrag),t.on(`mouse-wheel`,this._handlePanoramicSuperimposeWheel),t.on(`double-click`,this._handlePanoramicSuperimposeDoubleClick),t.on(`key-down`,this._handlePanoramicSuperimposeKeyDown)])}}async function I(e,t,n,r){return Float64Array.from((await Promise.all(e.reduce((e,t,n)=>{let r=Math.floor(n/3);return e[r]=e[r]??[],e[r].push(t),e},[]).map(async e=>(await d(new u(e,t),n,r)).toArray()))).flat())}const L=async(t,n,i)=>{let{frustum:a}=C(t.attributes),o=a.clone();if(!n.equals(o.spatialReference)){let{components:e,spatialReference:t,origin:a,vertexAttributes:s,vertexSpace:c}=o;if(c.type===`local`){let e=await d(a,n,i);r(i),o.centerAt(e)}else{let a=s.position,c=Float64Array.from(await m([...a],t.clone(),n.clone(),i));r(i),o=new l({vertexAttributes:new p({position:c}),components:e,spatialReference:n.clone()})}}return new e({attributes:{imageID:a.imageID},geometry:o,symbol:w.clone(),visible:!1})},R=e=>{let t=e.vertexAttributes.position,n=0,r=0,i=0,a=t.length/3;for(let e=0;e<t.length;e+=3)n+=t[e],r+=t[e+1],i+=t[e+2];return new u({x:n/a,y:r/a,z:i/a,spatialReference:e.spatialReference})};export{F as default};
|
|
2
|
+
import e from"../../../../Graphic.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{clamp as n}from"../../../../core/mathUtils.js";import{throwIfAborted as r,waitTick as i}from"../../../../core/promiseUtils.js";import{subtract as a,length as o,normalize as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import l from"../../../../geometry/Mesh.js";import u from"../../../../geometry/Point.js";import{projectAsync as d}from"../../../../geometry/projectionUtils.js";import{projectPointToVector as f}from"../../../../geometry/projection/projectPointToVector.js";import p from"../../../../geometry/support/MeshVertexAttributes.js";import{projectVertices as m,updateFrustum as h}from"../../../../layers/orientedImagery/core/coverageUtils.js";import g from"../../../../layers/orientedImagery/transformations/updateElevation.js";import{toRenderCamera as _}from"../../../../views/3d/webgl.js";import{directionToHeadingTilt as v}from"../../../../views/3d/support/viewingModeUtils.js";import{getPointerActions as y,eventMatchesMousePointerActions as b}from"../../../../views/input/handlers/support.js";import{fixedImageSize as x,invalidCameraHeading as S}from"../../constants.js";import{createFeatureCoverage as C}from"../../featureCoverage.js";import{activeFrustumSymbol as w,additionalFrustumSymbol as T}from"../../symbols.js";import{getDefaultSuperimposeFov as E,panoramicSuperimposeMaxFov as D,panoramicSuperimposeMinFov as O,panoramicSuperimposeZoomOutFactor as k,panoramicSuperimposeZoomInFactor as A,getViewCameraFieldOfView as j,panoramicSuperimposeMaxTilt as M,panoramicSuperimposeMinTilt as N,panoramicSuperimposeKeyboardAngleStep as P}from"../../support/superimposeUtils.js";class F{constructor(u){this.viewModel=u,this._defaultSuperimposeSecondaryDragAction=null,this._defaultSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null,this._panoramicSuperimposeNavigationHandles=[],this.createFootprints=async n=>{let{coverageFrustums:i,currentBestFeature:a,isAdditionalCoverageVisible:o,view:s}=this.viewModel,c=i.filter(t);for(let t of c){let i=t.clone();if(!s.spatialReference.equals(i.spatialReference)){let{components:e,spatialReference:t,origin:a,vertexAttributes:o,vertexSpace:c}=i;if(c.type===`local`){let e=await d(a,s.spatialReference,n);r(n),i.centerAt(e)}else{let a=o.position,c=Float64Array.from(await m([...a],t.clone(),s.spatialReference.clone(),n));r(n),i=new l({vertexAttributes:new p({position:c}),components:e,spatialReference:s.spatialReference.clone()})}}t.imageID===a.attributes.objectId?this.viewModel.bestFeatureFootprint=new e({attributes:{imageID:t.imageID},geometry:i,symbol:w.clone(),visible:!1}):this.viewModel.additionalFootprints.push(new e({attributes:{imageID:t.imageID},geometry:i,symbol:T.clone(),visible:o}))}},this.updateFootprint=async(n,i,a)=>{let{bestFeatureFootprint:o,currentBestFeature:s,activeViewer:c,footprintExtent:l,view:u,mode:f}=this.viewModel,p=f===`video`?x:c?.imageSize,m=i??s;if(!s||!o?.geometry||!p||!l||!m||!u?.spatialReference){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:g,location:_,cameraPitch:v,horizontalFieldOfView:y,verticalFieldOfView:b,cameraRoll:S}}=m,C=null;i&&(C=await this._computeFeatureFootprint(i,a));let T=m.attributes.location.toArray(),{vertexAttributes:{position:E},spatialReference:D}=(i&&C?C:o).geometry,O=await I(E,D,_.spatialReference),k=await this.viewModel.getMapPoint(n);r(a);let A=k.filter(t);if(!A.length)return;A[0].spatialReference.equals(_.spatialReference)||(A=await Promise.all(A.map(async e=>{let t=await d(e,_.spatialReference,a);return r(a),t})));let j=await h(n.map(({x:e,y:t})=>[e,t]),A.map(e=>e.toArray()),{cameraHeight:g,cameraLocation:T,cameraPitch:v,frustumVertices:O,horizontalFieldOfView:y,imageHeight:p[1],imageWidth:p[0],inSRS:{wkid:_.spatialReference.wkid},outSRS:{wkid:u.spatialReference.wkid},verticalFieldOfView:b,cameraRoll:S??0,options:a});this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:m.attributes.objectId},geometry:j,symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateVideoFootprint=async n=>{let{points:i,feature:a,scale:o,options:s}=n,{bestFeatureFootprint:c,currentBestFeature:l,activeViewer:u,footprintExtent:f,view:p,mode:m}=this.viewModel,g=m===`video`?x:u?.imageSize,_=a??l;if(!l||!c?.geometry||!g||!f||!_||!p?.spatialReference||m===`none`){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:v,location:y,cameraPitch:b,horizontalFieldOfView:S,verticalFieldOfView:C,cameraRoll:T}}=_,E=null;a&&(E=await this._computeFeatureFootprint(a,s));let D=_.attributes.location.toArray(),{vertexAttributes:{position:O},spatialReference:k}=(a&&E?E:c).geometry,A=await I(O,k,y.spatialReference),j={feature:_,mode:m,imageSize:g,footprintExtent:f},M=await this.viewModel.getMapPointForFeature(i,j,s);r(s);let N=M.filter(t);if(!N.length)return;N[0].spatialReference.equals(y.spatialReference)||(N=await Promise.all(N.map(async e=>{let t=await d(e,y.spatialReference,s);return r(s),t})));let P=await h(i.map(({x:e,y:t})=>[e,t]),N.map(e=>e.toArray()),{cameraHeight:v,cameraLocation:D,cameraPitch:b,frustumVertices:A,horizontalFieldOfView:S,imageHeight:g[1],imageWidth:g[0],inSRS:{wkid:y.spatialReference.wkid},outSRS:{wkid:p.spatialReference.wkid},verticalFieldOfView:C,cameraRoll:T??0,options:s});if(o&&P){let e=R(P);P.scale(o,{origin:e})}this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:_.attributes.objectId},geometry:P,symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateFootprintPanorama=async(t,n)=>{await i(n);let{horizontalFieldOfView:r,pitch:a,verticalFieldOfView:o,yaw:s,feature:c}=t,l=c?.clone()??this.viewModel.currentBestFeature?.clone();if(!l)return;let{attributes:u}=l;u.orientedImageryType=null,u.cameraHeading=s,u.cameraPitch=a,u.horizontalFieldOfView=r,u.verticalFieldOfView=o,u.cameraRoll=0;let{frustum:d}=C(u);!d||!this.viewModel.view?.spatialReference.equals(d.spatialReference)?this.viewModel.updateCurrentCoveragePolygon(null):this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:u.objectId},geometry:d.clone(),symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updatePanoramicSuperimposeCamera=async(e,t)=>{let{camera:n,currentBestFeature:i}=e,{view:a}=this.viewModel;if(a?.type!==`3d`)return;let o=i.attributes.location,s=o.spatialReference.equals(a.spatialReference)?o:await d(o,a.spatialReference,t);if(r(t),!s)return;let c=n.clone();c.position=s.clone(),a.camera=c,this._enablePanoramicSuperimposeNavigation(s)},this.updateDefaultSuperimposeCamera=async(e,t)=>{let{currentBestFeature:i,target:l}=e,{view:u}=this.viewModel;if(u?.type!==`3d`)return;let{cameraHeading:p,cameraPitch:m,cameraRoll:h,horizontalFieldOfView:g,location:y,verticalFieldOfView:b}=i.attributes,x=y.spatialReference.equals(u.spatialReference)?y.clone():await d(y,u.spatialReference,t);if(r(t),!x)return;let C=E(u,g,b,h??0),w=u.camera.clone();if(w.position=x,w.fov=n(w.fov,O,D),p!=null&&p!==S&&(w.heading=p),m!=null&&(w.tilt=m),C!=null&&(w.fov=C),l){let e=_(u,w),t=c();if(e&&f(l,t,u.renderSpatialReference)&&(a(t,t,e.eye),o(t)>0)){s(t,t);let{heading:n,tilt:r}=v(u,e.eye,t,e.up);w.heading=n,w.tilt=r}}u.camera=w},this.enableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel;if(e?.type!==`3d`)return;let t=e.navigation?.actionMap;t&&(this._defaultSuperimposeSecondaryDragAction??=t.dragSecondary,t.dragSecondary!==`none`&&(t.dragSecondary=`none`),this._defaultSuperimposeNavigationHandles.length||(this._defaultSuperimposeNavigationHandles=[e.on(`drag`,this._handleDefaultSuperimposeDrag)]))},this.disableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel,t=this._defaultSuperimposeSecondaryDragAction;this._defaultSuperimposeNavigationHandles.forEach(e=>e.remove()),this._defaultSuperimposeNavigationHandles=[],this._defaultSuperimposeSecondaryDragAction=null;let n=e?.type===`3d`?e.navigation?.actionMap:null;n&&t!=null&&(n.dragSecondary=t)},this.disablePanoramicSuperimposeNavigation=()=>{this._panoramicSuperimposeNavigationHandles.forEach(e=>e.remove()),this._panoramicSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null},this._handleDefaultSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`)return;let n=t.navigation?.actionMap;if(!n)return;let r=y(`rotate`,n);b(e,r)&&e.stopPropagation()},this._handlePanoramicSuperimposeDoubleClick=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone(),i=e.native.ctrlKey?k:A;r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*i,O,D),t.camera=r},this._handlePanoramicSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(t&&t.type===`3d`&&this._panoramicSuperimposeAnchor)switch(e.stopPropagation(),e.action){case`start`:this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return;case`update`:{let r=this._panoramicSuperimposeLastScreenPoint;if(!r){this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return}let i=r.x-e.x,a=e.y-r.y;this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};let o=t.camera.clone(),{horizontal:s,vertical:c}=j(t);o.position=this._panoramicSuperimposeAnchor.clone(),o.heading+=s*i/Math.max(t.width,1),o.tilt=n(o.tilt+c*a/Math.max(t.height,1),N,M),t.camera=o;return}case`end`:this._panoramicSuperimposeLastScreenPoint=null;return}},this._handlePanoramicSuperimposeKeyDown=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;let r=t.camera.clone(),i=!0;switch(r.position=this._panoramicSuperimposeAnchor.clone(),e.key){case`ArrowLeft`:r.heading-=P;break;case`ArrowRight`:r.heading+=P;break;case`ArrowUp`:r.tilt=n(r.tilt-P,N,M);break;case`ArrowDown`:r.tilt=n(r.tilt+P,N,M);break;default:i=!1}i&&(e.stopPropagation(),t.camera=r)},this._handlePanoramicSuperimposeWheel=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone();r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*(e.deltaY>0?k:A),O,D),t.camera=r}}async _computeFeatureFootprint(e,t){let{currentBestFeature:n,view:i}=this.viewModel,a=n?.elevationSample;if(a?.extent&&!a.extent.contains(e.geometry)&&(a=await this.viewModel.processFeatureElevation([e],e.geometry.clone(),t)??a),a){let n=await g(e.geometry.clone(),{elevationSample:a},t);r(t),e.attributes.elevation=n.z}return L(e,i.spatialReference,t)}_enablePanoramicSuperimposeNavigation(e){let{view:t}=this.viewModel;t&&t.type===`3d`&&(this.disablePanoramicSuperimposeNavigation(),this._panoramicSuperimposeAnchor=e.clone(),this._panoramicSuperimposeNavigationHandles=[t.on(`drag`,this._handlePanoramicSuperimposeDrag),t.on(`mouse-wheel`,this._handlePanoramicSuperimposeWheel),t.on(`double-click`,this._handlePanoramicSuperimposeDoubleClick),t.on(`key-down`,this._handlePanoramicSuperimposeKeyDown)])}}async function I(e,t,n,r){return Float64Array.from((await Promise.all(e.reduce((e,t,n)=>{let r=Math.floor(n/3);return e[r]=e[r]??[],e[r].push(t),e},[]).map(async e=>(await d(new u(e,t),n,r)).toArray()))).flat())}const L=async(t,n,i)=>{let{frustum:a}=C(t.attributes),o=a.clone();if(!n.equals(o.spatialReference)){let{components:e,spatialReference:t,origin:a,vertexAttributes:s,vertexSpace:c}=o;if(c.type===`local`){let e=await d(a,n,i);r(i),o.centerAt(e)}else{let a=s.position,c=Float64Array.from(await m([...a],t.clone(),n.clone(),i));r(i),o=new l({vertexAttributes:new p({position:c}),components:e,spatialReference:n.clone()})}}return new e({attributes:{imageID:a.imageID},geometry:o,symbol:w.clone(),visible:!1})},R=e=>{let t=e.vertexAttributes.position,n=0,r=0,i=0,a=t.length/3;for(let e=0;e<t.length;e+=3)n+=t[e],r+=t[e+1],i+=t[e+2];return new u({x:n/a,y:r/a,z:i/a,spatialReference:e.spatialReference})};export{F as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{rad2deg as e}from"../../core/mathUtils.js";import{throwIfAborted as t}from"../../core/promiseUtils.js";import{createArea as n,createLength as r}from"../../core/quantity.js";import{formatArea as i,formatLength as a}from"../../core/quantityFormatUtils.js";import{set as o,determinant as s}from"../../core/libs/gl-matrix-2/math/mat3.js";import{create as c}from"../../core/libs/gl-matrix-2/factories/mat3f64.js";import{zeros as l}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{distance as u}from"../../core/libs/gl-matrix-2/math/vec2.js";import{set as d,cross as f}from"../../core/libs/gl-matrix-2/math/vec3.js";import{isSupported as p,geodesicLengths as m,geodesicAreas as h}from"../../geometry/geodesicUtils.js";import g from"../../geometry/Point.js";import _ from"../../geometry/Polygon.js";import v from"../../geometry/Polyline.js";import{projectAsync as y,project as b}from"../../geometry/projectionUtils.js";import x from"../../geometry/SpatialReference.js";import{areaExecute as S}from"../../geometry/operators/areaOperator.js";import{geodeticAreaLoad as C,geodeticAreaExecute as w}from"../../geometry/operators/geodeticAreaOperator.js";import{geodeticDensifyLoad as T,geodeticDensifyExecute as E}from"../../geometry/operators/geodeticDensifyOperator.js";import{geodeticLengthLoad as D,geodeticLengthExecute as O}from"../../geometry/operators/geodeticLengthOperator.js";import{lengthExecute as k}from"../../geometry/operators/lengthOperator.js";import{simplifyExecute as A}from"../../geometry/operators/simplifyOperator.js";import{imageToWorldPanoramic as j,imageToWorld as M}from"../../layers/orientedImagery/transformations/imageToWorld.js";import{createRotationMatrixFromHPR as ee,getUpdateElevationProps as N,convertSphereVertexToPixelLocation as P,getImageToWorldProperties as te}from"../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as F,worldToImage as I}from"../../layers/orientedImagery/transformations/worldToImage.js";import{getPanoramicImageProperties as ne}from"./panoramicImageProperties.js";const re=1e5,L=`meters`,R=`square-meters`;function z(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function ie(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function B(e,t,n){if(!e?.length||!t?.length||!n)return;let[r,i]=e,[,a]=t,o=a-i;return[r+o*Math.cos(n),i+o*Math.sin(n)]}async function V(e,t,n){if(await T(),p(e)){let e=m([t],L)[0];return{area:h([n],R)[0],perimeter:e}}let r=x.WGS84,i=b(t,r),a=b(n,r),o=E(a,re);if(o=o?A(o):null,!o)return null;let s=m([i],L)[0];return{area:h([o],R)[0],perimeter:s}}function ae(e,t,n=1){let r=J(e,!1);return r?.length?u([r[0].x,r[0].y],[r.at(-1).x,r.at(-1).y])*20*n/t:void 0}async function oe(e){await D();let t=e.spatialReference;if(t.isGeographic){if(p(t))return m([e],L)[0];let n=b(e,x.WGS84);return m([n],L)[0]}return t.isWebMercator?O(e,{unit:L}):k(e,{unit:L})}function se(e){if(!e?.length)throw Error(`Invalid deviations array`);let[t,n,r]=[0,1,2].map(t=>e.map(e=>e[t]).filter(e=>e!==null)).map(e=>e.length?X(e):0);return[t,n,r]}function H(e,t){let n=A(t);if(!n)return null;let r=k(e,{unit:L});return{area:S(n,{unit:R}),perimeter:r}}function ce(e,t){return[(e[1][0]-e[0][0])/t,(e[1][1]-e[0][1])/t,(e[1][2]-e[0][2])/t]}async function U(e,t){await Promise.all([C(),T(),D()]);let n=E(t,re);if(n=n?A(n):null,!n)return null;let r=O(e,{unit:L});return{area:w(n,{unit:R}),perimeter:r}}async function le(e,n,r){if(!n||!e)throw Error(`Missing required parameters`);let i=await M(e,n);t(r);let a=i.clone();a.z?a.z+=20:a.z=20;let{averageElevation:o,cameraPitch:s,cameraRoll:c,farDistance:l,...u}=n;return I(a,u)}async function ue(e,n,r,i){let{attributes:a}=r,{location:o}=a,{updateElevationProps:s,...c}=n;if(!e||!n)throw Error(`Missing parameters`);let l=o.clone();l.spatialReference.isGeographic&&(l=await y(l,x.WebMercator));let u=await j(e,{...c,cameraLocation:l},s);t(i);let d=u.clone();return d.z?d.z+=20:d.z=20,F(d,c)}function W(e,t,n,r,i=0,a=1,o){let{averageElevation:s,cameraPitch:c,cameraRoll:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=I(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return W(y,t,n,r,i+1,b)}function G(e,t,n,r,i=0,a=1,o){let{averageElevation:s,horizontalFieldOfView:c,verticalFieldOfView:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=F(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return G(y,t,n,r,i+1,b)}async function K(e,t,n){return e.spatialReference&&!t.spatialReference.equals(e.spatialReference)&&(t=await y(t,e.spatialReference)),new v({paths:[[[e.x,e.y,e.z??0],[t.x,t.y,t.z??0]]],spatialReference:n})}function de(e){return 1/Math.cos(Math.PI/2-2*Math.atan(Math.exp(-1*e/6378137)))}function fe(e,t){return Math.sqrt((Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t)**2+(e[0][2]-e[1][2])**2)}function pe(e,t){return Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t}function me(t){return e(Math.atan((t[1][2]-t[0][2])/Math.sqrt((t[1][0]-t[0][0])**2+(t[1][1]-t[0][1])**2)))}function he(t){let n=90-e(Math.atan2(t[1][1]-t[0][1],t[1][0]-t[0][0]));return n<0&&(n+=360),n}function q(e,t){return new g({x:(e.pointOnA[0]+e.pointOnB[0])/2,y:(e.pointOnA[1]+e.pointOnB[1])/2,z:(e.pointOnA[2]+e.pointOnB[2])/2,spatialReference:t})}async function ge(e){if(e?.length===2){let t=[],n=1,[r,i]=e,a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let o=await Q(await K(r.camera,r.measurePoints[e],a),await K(i.camera,i.measurePoints[e],a));if(!o)return null;let s=q(o,a);s.spatialReference.isWebMercator&&(n=de(s.y)),t.push([s.x,s.y,s.z??0])}if(t?.length>1)return{distance:fe(t,n),horizontalDistance:pe(t,n),verticalDistance:Math.abs(t[0][2]-t[1][2]),slope:me(t),aspect:he(t)}}return null}async function _e(e){let t=e[0].camera.spatialReference;if(e?.length!==2)return null;let[n,r]=e,{camera:i,measurePoints:a}=n,{camera:o,measurePoints:s}=r,c=await Q(await K(i,a[0],t),await K(o,s[0],t));return c?q(c,t)??null:null}async function ve(e,t){if(!e?.length)return null;let n=[],r=e[0],i=e[1],a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let t=await Q(await K(r.camera,r.measurePoints[e],a),await K(i.camera,i.measurePoints[e],a));if(!t)return null;let o=q(t,a);n.push([o.x,o.y,o.z??0])}if(n?.length<2)return null;let s=new v({paths:[n],spatialReference:t}),c=new _({rings:[n],spatialReference:t});return t.isGeographic?(await V(t,s,c))?.area??null:t.isWebMercator?(await U(s,c))?.area??null:H(s,c)?.area??null}function ye(e,t){return e?{camera:t.geometry.clone(),measurePoints:Array.isArray(e)?e:[e]}:null}async function be(e,t){let{updateElevationProps:n,...r}=t;return await M(e,r,n)}async function xe(e,t){let{updateElevationProps:n,...r}=t;return j(e,r,n)}function Se(e){navigator.clipboard.writeText(e).catch(e=>{throw e})}function Ce(e){let t=e.map(e=>[e.x,e.y]),n=e[0].spatialReference;return new v({paths:[t],spatialReference:n})}function J(e,t){return e.map(e=>({x:t?.5+e[0]:e[0],y:t?.5-e[1]:e[1]}))}function we(e,t,n,i,o){let s=e===`measurement`?t:n;if(o&&s)return a(i,r(s,L),o,3)||null}function Y(e){return e>0?[-e,0,e]:[0]}function Te(e,t,n){let{cameraPitch:r,cameraRoll:i,cameraLocation:a}=e,{x:o,y:s,z:c,spatialReference:l}=a;if(t.every(e=>e===0)||!t||!t.length||!l)throw Error(`Invalid parameters`);let[u,d,f,p,m]=t,h=Y(f),g=Y(p),_=Y(m),v=Y(u),y=Y(d),b=[];for(let t of g)for(let a of _)for(let u of v)for(let d of v)for(let f of y)for(let p of h){let m={...e};m.cameraPitch=r+t,m.cameraRoll=i+a,m.rotationMatrix=ee([n+p,m.cameraPitch,m.cameraRoll]),m.cameraLocation={x:o+u,y:s+d,z:c?c+f:0,spatialReference:{wkid:l.wkid}},b.push(m)}return b}function Ee(e,t){let{cameraHeading:n,cameraLocation:r}=e,{x:i,y:a,z:o,spatialReference:s}=r;if(!t||t.every(e=>e===0)||!t.length||!s)throw Error(`Invalid parameters`);let[c,l,u]=t,d=Y(u),f=Y(c),p=Y(l),m=[];for(let t of d)for(let r of f)for(let c of f)for(let l of p){let u={...e};u.cameraHeading=n+t,u.cameraLocation={x:i+r,y:a+c,z:o?o+l:0,spatialReference:{wkid:s.wkid}},m.push(u)}return m}function De(e,t,n,i,o){let s=e===`measurement`?t:X(n);if(o&&s)return a(i,r(s,L),o,3)||null}function Oe(e,t,r,a,o){let s=e===`measurement`?t:r;if(o&&s)return i(a,n(s,R),o,3)||null}function X(e){return Math.sqrt(e.reduce((e,t)=>e+t**2,0))}function ke(e,t,n){if(!e||!t)return;let{elevationSample:r,attributes:i}=e,{elevationSource:a,cameraHeight:o}=i,s={...te(i,t[0],t[1]),cameraLocation:i.location},c=s.cameraLocation;return(c.spatialReference.isGeographic?y(c,x.WebMercator):Promise.resolve(c)).then(e=>(c=e,N(c.spatialReference,c.z??0,o,{elevationSample:r,elevationSource:a,extent:n}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...s,cameraLocation:c,updateElevationProps:t}))}function Ae(e,t,n){if(!e||!t)return;let{elevationSample:r,attributes:i}=e,{elevationSource:a,cameraHeight:o}=i,s=ne(i,t[0],t[1]),c=s.cameraLocation;return(c.spatialReference.isGeographic?y(c,x.WebMercator):Promise.resolve(c)).then(e=>(c=e,N(c.spatialReference,c.z??0,o,{elevationSample:r,elevationSource:a,extent:n}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...s,cameraLocation:c,updateElevationProps:t}))}function je(e,t,n){if(t==="default")return e;let r={x:e[0],y:e[1],z:e[2]},i=P(r,n[0],n[1]);return[i.x,i.y]}function Z(e){return e.metersPerUnit}function Me(e,t,n,r){let i=[];return i=t===`panoramic`?e.map(([e,t,i])=>{let{x:a,y:o}=P({x:e,y:t,z:i},n[0],n[1],r);return[a-.5,-.5-o]}):e.map(([e,t])=>[e-.5,-.5-t]),i}function Ne(e,t,n){return e.map(e=>P({x:e[0],y:e[1],z:e[2]},t[0],t[1],n))}async function Pe(e,n,r,i=!1,a=!1,o){if(!e||!n||e.length<2)return null;let s=J(e,i);if(!s||s.length<2)return null;let[c,l]=[s[0],s.at(-1)];if(!l)return null;let d=[c],f=await M(c,n);t(o);let p=f.clone();p.z?p.z+=20:p.z=20;let{averageElevation:m,cameraPitch:h,cameraRoll:g,farDistance:_,...v}=n,y=I(p,v),b=u([c.x,c.y],[y.x,y.y]),x=z(c,y);if(!x)return;let S=B([c.x,c.y],[l.x,l.y],x);if(!S?.length)return;d.push({x:S[0],y:S[1]});let C=u([d[0].x,d[0].y],[d[1].x,d[1].y]),w=n.cameraLocation,T=Z(w.spatialReference),E=C*20*T/b;return a?W(E,f,d,n,0,1)?.value:E}async function Fe(e,n,r,i,a=!1,o=!1,s){let{attributes:c}=i,{location:l}=c,{updateElevationProps:d,...f}=n;if(!e||!n||e.length<2)throw Error(`Invalid parameters`);let p=J(e,a),[m,h]=[p[0],p.at(-1)],g=[m],_=l.clone();_.spatialReference.isGeographic&&(_=await y(_,x.WebMercator));let v=await j(m,{...f,cameraLocation:_},d);t(s);let b=v.clone();b.z?b.z+=20:b.z=20;let S=F(b,f),C=u([m.x,m.y],[S.x,S.y]),w=z(m,S);if(!w)return;let T=B([m.x,m.y],[h.x,h.y],w);if(!T?.length)return;g.push({x:T[0],y:T[1]});let E=u([g[0].x,g[0].y],[g[1].x,g[1].y]),D=n.cameraLocation,O=Z(D.spatialReference),k=E*20*O/C;return o?G(k,v,g,n,0,1)?.value:k}async function Ie(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await M(e,i,r);return I(s,o)}async function Le(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await j(e,i,r);return F(s,o)}async function Re(e,t,n=!1){if(e.length<3)return null;let r=await be(J(e,n),t),i=r.map(({x:e,y:t})=>[e,t]);i.push(i[0]);let a=r[0].spatialReference,o=new v({paths:[i],spatialReference:a}),s=new _({rings:[i],spatialReference:a});return a.isGeographic?V(a,o,s):a.isWebMercator?U(o,s):H(o,s)}async function ze(e,n,r=!1,i){if(e.length<3)return null;let a=await xe(J(e,r),n);t(i);let o=a.map(({x:e,y:t})=>[e,t]);o.push(o[0]);let s=a[0].spatialReference,c=new v({paths:[o],spatialReference:s}),l=new _({rings:[o],spatialReference:s});return s.isGeographic?V(s,c,l):s.isWebMercator?U(c,l):H(c,l)}async function Be(e,t,n=!1){return oe(Ce(await be(J(e,n),t)))}async function Ve(e,n,r=!1,i){let a=await xe(J(e,r),n);return t(i),oe(Ce(a))}async function Q(e,t){let n=c(),r=e.paths[0][0],i=t.paths[0][0],a,l;e.spatialReference.isWGS84||e.spatialReference.isWebMercator?(await D(),a=O(e),l=O(t)):(a=k(e),l=k(t));let u=ce(e.paths[0],a),d=ce(t.paths[0],l),f=He(u,d),[p,m,h]=u,[g,_,v]=d.map(e=>-e),[y,b,x]=f,[S,C,w]=[i[0]-r[0],i[1]-r[1],i[2]-r[2]];o(n,p,g,y,m,_,b,h,v,x);let T=s(n);if(T===0)return null;o(n,S,g,y,C,_,b,w,v,x);let E=s(n);o(n,p,S,y,m,C,b,h,w,x);let A=s(n);o(n,p,g,S,m,_,C,h,v,w);let j=s(n),M=E/T,ee=A/T,N=j/T;return{distance:Math.abs(N/Math.sqrt(f[0]*f[0]+f[1]*f[1]+f[2]*f[2])),pointOnA:$(r,M,u),pointOnB:$(i,ee,d)}}function He(e,t){let n=l(),r=d(l(),e[0],e[1],e[2]),i=d(l(),t[0],t[1],t[2]),a=f(n,r,i);return[a[0],a[1],a[2]]}function $(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1],e[2]+t*n[2]]}export{z as calculateAngle,ie as calculateAnglePano,B as calculateCorrectedPixel,ae as calculateHeightFromTemporaryDistance,se as calculateLocationAccuracyFromDeviations,ue as calculateReferenceImagePointPanoramic,le as calculateTempImagePoint,de as calculateUpdatedWmsf,W as computeHeightIteratively,G as computeHeightIterativelyPanoramic,ve as computeTriangulatedAreaMeasurement,ge as computeTriangulatedDistanceMeasurement,_e as computeTriangulatedPoint,ye as computeTriangulatedVector,Se as copyToClipboard,J as formatPixels,Te as generateCombinations,Ee as generateCombinationsPanoramic,Oe as getConvertedArea,De as getConvertedDistance,we as getConvertedHeight,ke as getMeasurementProperties,Ae as getMeasurementPropertiesPanoramic,je as getModeCorrectedPoint,Me as getModeCorrectedPoints,Ne as getPixelLocationFromSphereVertices,X as getRootOfSumOfSquaredErrors,Z as getUnitRateFromSpatialReference,Pe as heightMeasurement2D,Fe as heightMeasurementPanoramic,Ie as imageToImageTransform,Le as imageToImageTransformPanoramic,Re as pixelAreaMeasurement2D,ze as pixelAreaMeasurementPanoramic,Be as pixelDistanceMeasurement2D,Ve as pixelDistanceMeasurementPanoramic,Q as solveSkewLinesIntersection};
|
|
2
|
+
import{rad2deg as e}from"../../core/mathUtils.js";import{throwIfAborted as t}from"../../core/promiseUtils.js";import{createArea as n,createLength as r}from"../../core/quantity.js";import{formatArea as i,formatLength as a}from"../../core/quantityFormatUtils.js";import{set as o,determinant as s}from"../../core/libs/gl-matrix-2/math/mat3.js";import{create as c}from"../../core/libs/gl-matrix-2/factories/mat3f64.js";import{zeros as l}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{distance as u}from"../../core/libs/gl-matrix-2/math/vec2.js";import{set as d,cross as f}from"../../core/libs/gl-matrix-2/math/vec3.js";import{isSupported as p,geodesicLengths as m,geodesicAreas as h}from"../../geometry/geodesicUtils.js";import g from"../../geometry/Point.js";import _ from"../../geometry/Polygon.js";import v from"../../geometry/Polyline.js";import{projectAsync as y,project as b}from"../../geometry/projectionUtils.js";import x from"../../geometry/SpatialReference.js";import{areaExecute as S}from"../../geometry/operators/areaOperator.js";import{geodeticAreaLoad as C,geodeticAreaExecute as w}from"../../geometry/operators/geodeticAreaOperator.js";import{geodeticDensifyLoad as T,geodeticDensifyExecute as E}from"../../geometry/operators/geodeticDensifyOperator.js";import{geodeticLengthLoad as D,geodeticLengthExecute as O}from"../../geometry/operators/geodeticLengthOperator.js";import{lengthExecute as k}from"../../geometry/operators/lengthOperator.js";import{simplifyExecute as A}from"../../geometry/operators/simplifyOperator.js";import{imageToWorldPanoramic as j,imageToWorld as M}from"../../layers/orientedImagery/transformations/imageToWorld.js";import{getUpdateElevationProps as N,convertSphereVertexToPixelLocation as P,getImageToWorldProperties as ee}from"../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as F,worldToImage as I}from"../../layers/orientedImagery/transformations/worldToImage.js";import{getPanoramicImageProperties as te}from"./panoramicImageProperties.js";const ne=1e5,L=`meters`,R=`square-meters`;function z(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function re(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function B(e,t,n){if(!e?.length||!t?.length||!n)return;let[r,i]=e,[,a]=t,o=a-i;return[r+o*Math.cos(n),i+o*Math.sin(n)]}async function V(e,t,n){if(await T(),p(e)){let e=m([t],L)[0];return{area:h([n],R)[0],perimeter:e}}let r=x.WGS84,i=b(t,r),a=b(n,r),o=E(a,ne);if(o=o?A(o):null,!o)return null;let s=m([i],L)[0];return{area:h([o],R)[0],perimeter:s}}function ie(e,t,n=1){let r=Y(e,!1);return r?.length?u([r[0].x,r[0].y],[r.at(-1).x,r.at(-1).y])*20*n/t:void 0}async function H(e){await D();let t=e.spatialReference;if(t.isGeographic){if(p(t))return m([e],L)[0];let n=b(e,x.WGS84);return m([n],L)[0]}return t.isWebMercator?O(e,{unit:L}):k(e,{unit:L})}function ae(e){if(!e?.length)throw Error(`Invalid deviations array`);let[t,n,r]=[0,1,2].map(t=>e.map(e=>e[t]).filter(e=>e!==null)).map(e=>e.length?X(e):0);return[t,n,r]}function U(e,t){let n=A(t);if(!n)return null;let r=k(e,{unit:L});return{area:S(n,{unit:R}),perimeter:r}}function oe(e,t){return[(e[1][0]-e[0][0])/t,(e[1][1]-e[0][1])/t,(e[1][2]-e[0][2])/t]}async function W(e,t){await Promise.all([C(),T(),D()]);let n=E(t,ne);if(n=n?A(n):null,!n)return null;let r=O(e,{unit:L});return{area:w(n,{unit:R}),perimeter:r}}async function se(e,n,r){if(!n||!e)throw Error(`Missing required parameters`);let i=await M(e,n);t(r);let a=i.clone();a.z?a.z+=20:a.z=20;let{averageElevation:o,cameraPitch:s,cameraRoll:c,farDistance:l,...u}=n;return I(a,u)}async function ce(e,n,r,i){let{attributes:a}=r,{location:o}=a,{updateElevationProps:s,...c}=n;if(!e||!n)throw Error(`Missing parameters`);let l=o.clone();l.spatialReference.isGeographic&&(l=await y(l,x.WebMercator));let u=await j(e,{...c,cameraLocation:l},s);t(i);let d=u.clone();return d.z?d.z+=20:d.z=20,F(d,c)}function G(e,t,n,r,i=0,a=1,o){let{averageElevation:s,cameraPitch:c,cameraRoll:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=I(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return G(y,t,n,r,i+1,b)}function K(e,t,n,r,i=0,a=1,o){let{averageElevation:s,horizontalFieldOfView:c,verticalFieldOfView:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=F(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return K(y,t,n,r,i+1,b)}async function q(e,t,n){return e.spatialReference&&!t.spatialReference.equals(e.spatialReference)&&(t=await y(t,e.spatialReference)),new v({paths:[[[e.x,e.y,e.z??0],[t.x,t.y,t.z??0]]],spatialReference:n})}function le(e){return 1/Math.cos(Math.PI/2-2*Math.atan(Math.exp(-1*e/6378137)))}function ue(e,t){return Math.sqrt((Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t)**2+(e[0][2]-e[1][2])**2)}function de(e,t){return Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t}function fe(t){return e(Math.atan((t[1][2]-t[0][2])/Math.sqrt((t[1][0]-t[0][0])**2+(t[1][1]-t[0][1])**2)))}function pe(t){let n=90-e(Math.atan2(t[1][1]-t[0][1],t[1][0]-t[0][0]));return n<0&&(n+=360),n}function J(e,t){return new g({x:(e.pointOnA[0]+e.pointOnB[0])/2,y:(e.pointOnA[1]+e.pointOnB[1])/2,z:(e.pointOnA[2]+e.pointOnB[2])/2,spatialReference:t})}async function me(e){if(e?.length===2){let t=[],n=1,[r,i]=e,a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let o=await Q(await q(r.camera,r.measurePoints[e],a),await q(i.camera,i.measurePoints[e],a));if(!o)return null;let s=J(o,a);s.spatialReference.isWebMercator&&(n=le(s.y)),t.push([s.x,s.y,s.z??0])}if(t?.length>1)return{distance:ue(t,n),horizontalDistance:de(t,n),verticalDistance:Math.abs(t[0][2]-t[1][2]),slope:fe(t),aspect:pe(t)}}return null}async function he(e){let t=e[0].camera.spatialReference;if(e?.length!==2)return null;let[n,r]=e,{camera:i,measurePoints:a}=n,{camera:o,measurePoints:s}=r,c=await Q(await q(i,a[0],t),await q(o,s[0],t));return c?J(c,t)??null:null}async function ge(e,t){if(!e?.length)return null;let n=[],r=e[0],i=e[1],a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let t=await Q(await q(r.camera,r.measurePoints[e],a),await q(i.camera,i.measurePoints[e],a));if(!t)return null;let o=J(t,a);n.push([o.x,o.y,o.z??0])}if(n?.length<2)return null;let s=new v({paths:[n],spatialReference:t}),c=new _({rings:[n],spatialReference:t});return t.isGeographic?(await V(t,s,c))?.area??null:t.isWebMercator?(await W(s,c))?.area??null:U(s,c)?.area??null}function _e(e,t){return e?{camera:t.geometry.clone(),measurePoints:Array.isArray(e)?e:[e]}:null}async function ve(e,t){let{updateElevationProps:n,...r}=t;return await M(e,r,n)}async function ye(e,t){let{updateElevationProps:n,...r}=t;return j(e,r,n)}function be(e){navigator.clipboard.writeText(e).catch(e=>{throw e})}function xe(e){let t=e.map(e=>[e.x,e.y]),n=e[0].spatialReference;return new v({paths:[t],spatialReference:n})}function Y(e,t){return e.map(e=>({x:t?.5+e[0]:e[0],y:t?.5-e[1]:e[1]}))}function Se(e,t,n,i,o){let s=e===`measurement`?t:n;if(o&&s)return a(i,r(s,L),o,3)||null}function Ce(e,t,n,i,o){let s=e===`measurement`?t:X(n);if(o&&s)return a(i,r(s,L),o,3)||null}function we(e,t,r,a,o){let s=e===`measurement`?t:r;if(o&&s)return i(a,n(s,R),o,3)||null}function X(e){return Math.sqrt(e.reduce((e,t)=>e+t**2,0))}function Te(e,t,n,r){if(!e||!t)return;let{elevationSample:i,attributes:a}=e,{elevationSource:o,cameraHeight:s}=a,c={...ee(a,t[0],t[1]),cameraLocation:a.location},l=c.cameraLocation;return(l.spatialReference.isGeographic?y(l,x.WebMercator,{signal:r}):Promise.resolve(l)).then(e=>(l=e,N(l.spatialReference,l.z??0,s,{elevationSample:i,elevationSource:o,extent:n},{signal:r}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...c,cameraLocation:l,updateElevationProps:t}))}function Ee(e,t,n,r){if(!e||!t)return;let{elevationSample:i,attributes:a}=e,{elevationSource:o,cameraHeight:s}=a,c=te(a,t[0],t[1]),l=c.cameraLocation;return(l.spatialReference.isGeographic?y(l,x.WebMercator,{signal:r}):Promise.resolve(l)).then(e=>(l=e,N(l.spatialReference,l.z??0,s,{elevationSample:i,elevationSource:o,extent:n},{signal:r}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...c,cameraLocation:l,updateElevationProps:t}))}function De(e,t,n){if(t==="default")return e;let r={x:e[0],y:e[1],z:e[2]},i=P(r,n[0],n[1]);return[i.x,i.y]}function Z(e){return e.metersPerUnit}function Oe(e,t,n,r){let i=[];return i=t===`panoramic`?e.map(([e,t,i])=>{let{x:a,y:o}=P({x:e,y:t,z:i},n[0],n[1],r);return[a-.5,-.5-o]}):e.map(([e,t])=>[e-.5,-.5-t]),i}function ke(e,t,n){return e.map(e=>P({x:e[0],y:e[1],z:e[2]},t[0],t[1],n))}async function Ae(e,n,r,i=!1,a=!1,o){if(!e||!n||e.length<2)return null;let s=Y(e,i);if(!s||s.length<2)return null;let[c,l]=[s[0],s.at(-1)];if(!l)return null;let d=[c],f=await M(c,n);t(o);let p=f.clone();p.z?p.z+=20:p.z=20;let{averageElevation:m,cameraPitch:h,cameraRoll:g,farDistance:_,...v}=n,y=I(p,v),b=u([c.x,c.y],[y.x,y.y]),x=z(c,y);if(!x)return;let S=B([c.x,c.y],[l.x,l.y],x);if(!S?.length)return;d.push({x:S[0],y:S[1]});let C=u([d[0].x,d[0].y],[d[1].x,d[1].y]),w=n.cameraLocation,T=Z(w.spatialReference),E=C*20*T/b;return a?G(E,f,d,n,0,1)?.value:E}async function je(e,n,r,i,a=!1,o=!1,s){let{attributes:c}=i,{location:l}=c,{updateElevationProps:d,...f}=n;if(!e||!n||e.length<2)throw Error(`Invalid parameters`);let p=Y(e,a),[m,h]=[p[0],p.at(-1)],g=[m],_=l.clone();_.spatialReference.isGeographic&&(_=await y(_,x.WebMercator));let v=await j(m,{...f,cameraLocation:_},d);t(s);let b=v.clone();b.z?b.z+=20:b.z=20;let S=F(b,f),C=u([m.x,m.y],[S.x,S.y]),w=z(m,S);if(!w)return;let T=B([m.x,m.y],[h.x,h.y],w);if(!T?.length)return;g.push({x:T[0],y:T[1]});let E=u([g[0].x,g[0].y],[g[1].x,g[1].y]),D=n.cameraLocation,O=Z(D.spatialReference),k=E*20*O/C;return o?K(k,v,g,n,0,1)?.value:k}async function Me(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await M(e,i,r);return I(s,o)}async function Ne(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await j(e,i,r);return F(s,o)}async function Pe(e,t,n=!1){if(e.length<3)return null;let r=await ve(Y(e,n),t),i=r.map(({x:e,y:t})=>[e,t]);i.push([...i[0]]);let a=r[0].spatialReference,o=new v({paths:[i],spatialReference:a}),s=new _({rings:[i],spatialReference:a});return a.isGeographic?V(a,o,s):a.isWebMercator?W(o,s):U(o,s)}async function Fe(e,n,r=!1,i){if(e.length<3)return null;let a=await ye(Y(e,r),n);t(i);let o=a.map(({x:e,y:t})=>[e,t]);o.push([...o[0]]);let s=a[0].spatialReference,c=new v({paths:[o],spatialReference:s}),l=new _({rings:[o],spatialReference:s});return s.isGeographic?V(s,c,l):s.isWebMercator?W(c,l):U(c,l)}async function Ie(e,t,n=!1){return H(xe(await ve(Y(e,n),t)))}async function Le(e,n,r=!1,i){let a=await ye(Y(e,r),n);return t(i),H(xe(a))}async function Q(e,t){let n=c(),r=e.paths[0][0],i=t.paths[0][0],a,l;e.spatialReference.isWGS84||e.spatialReference.isWebMercator?(await D(),a=O(e),l=O(t)):(a=k(e),l=k(t));let u=oe(e.paths[0],a),d=oe(t.paths[0],l),f=Re(u,d),[p,m,h]=u,[g,_,v]=d.map(e=>-e),[y,b,x]=f,[S,C,w]=[i[0]-r[0],i[1]-r[1],i[2]-r[2]];o(n,p,g,y,m,_,b,h,v,x);let T=s(n);if(T===0)return null;o(n,S,g,y,C,_,b,w,v,x);let E=s(n);o(n,p,S,y,m,C,b,h,w,x);let A=s(n);o(n,p,g,S,m,_,C,h,v,w);let j=s(n),M=E/T,N=A/T,P=j/T;return{distance:Math.abs(P/Math.sqrt(f[0]*f[0]+f[1]*f[1]+f[2]*f[2])),pointOnA:$(r,M,u),pointOnB:$(i,N,d)}}function Re(e,t){let n=l(),r=d(l(),e[0],e[1],e[2]),i=d(l(),t[0],t[1],t[2]),a=f(n,r,i);return[a[0],a[1],a[2]]}function $(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1],e[2]+t*n[2]]}export{z as calculateAngle,re as calculateAnglePano,B as calculateCorrectedPixel,ie as calculateHeightFromTemporaryDistance,ae as calculateLocationAccuracyFromDeviations,ce as calculateReferenceImagePointPanoramic,se as calculateTempImagePoint,le as calculateUpdatedWmsf,G as computeHeightIteratively,K as computeHeightIterativelyPanoramic,ge as computeTriangulatedAreaMeasurement,me as computeTriangulatedDistanceMeasurement,he as computeTriangulatedPoint,_e as computeTriangulatedVector,be as copyToClipboard,Y as formatPixels,we as getConvertedArea,Ce as getConvertedDistance,Se as getConvertedHeight,Te as getMeasurementProperties,Ee as getMeasurementPropertiesPanoramic,De as getModeCorrectedPoint,Oe as getModeCorrectedPoints,ke as getPixelLocationFromSphereVertices,X as getRootOfSumOfSquaredErrors,Z as getUnitRateFromSpatialReference,Ae as heightMeasurement2D,je as heightMeasurementPanoramic,Me as imageToImageTransform,Ne as imageToImageTransformPanoramic,Pe as pixelAreaMeasurement2D,Fe as pixelAreaMeasurementPanoramic,Ie as pixelDistanceMeasurement2D,Le as pixelDistanceMeasurementPanoramic,Q as solveSkewLinesIntersection};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
+
import{createRotationMatrixFromHPR as e}from"../../layers/orientedImagery/transformations/rotationUtils.js";function t(e){return e>0?[-e,0,e]:[0]}function n(n,r,i){let{cameraPitch:a,cameraRoll:o,cameraLocation:s}=n,{x:c,y:l,z:u,spatialReference:d}=s;if(r.every(e=>e===0)||!r||!r.length||!d)throw Error(`Invalid parameters`);let[f,p,m,h,g]=r,_=t(m),v=t(h),y=t(g),b=t(f),x=t(p),S=[];for(let t of v)for(let r of y)for(let s of b)for(let f of b)for(let p of x)for(let m of _){let h={...n};h.cameraPitch=a+t,h.cameraRoll=o+r,h.rotationMatrix=e([i+m,h.cameraPitch,h.cameraRoll]),h.cameraLocation={x:c+s,y:l+f,z:u?u+p:0,spatialReference:{wkid:d.wkid}},S.push(h)}return S}function r(e,n){let{cameraHeading:r,cameraLocation:i}=e,{x:a,y:o,z:s,spatialReference:c}=i;if(!n||n.every(e=>e===0)||!n.length||!c)throw Error(`Invalid parameters`);let[l,u,d]=n,f=t(d),p=t(l),m=t(u),h=[];for(let t of f)for(let n of p)for(let i of p)for(let l of m){let u={...e};u.cameraHeading=r+t,u.cameraLocation={x:a+n,y:o+i,z:s?s+l:0,spatialReference:{wkid:c.wkid}},h.push(u)}return h}export{n as generateCombinations,r as generateCombinationsPanoramic};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{throwIfAborted as
|
|
2
|
+
import e from"../../../core/Logger.js";import{throwIfAborted as t}from"../../../core/promiseUtils.js";import{open as n}from"../../../core/workers.js";import r from"../../../geometry/Point.js";import{projectAsync as i}from"../../../geometry/projectionUtils.js";import{imageToWorld as a,imageToWorldPanoramic as o}from"../../../layers/orientedImagery/transformations/imageToWorld.js";import{convertSphereVertexToPixelLocation as s}from"../../../layers/orientedImagery/transformations/utils.js";import{getMeasurementProperties as c,pixelAreaMeasurement2D as l,pixelDistanceMeasurement2D as u,getRootOfSumOfSquaredErrors as d,heightMeasurementPanoramic as f,heightMeasurement2D as p,getMeasurementPropertiesPanoramic as m,calculateLocationAccuracyFromDeviations as h,pixelAreaMeasurementPanoramic as g,pixelDistanceMeasurementPanoramic as _,computeTriangulatedAreaMeasurement as v,computeTriangulatedDistanceMeasurement as y,getModeCorrectedPoints as b,computeTriangulatedVector as x}from"../imageMeasurementUtils.js";import{extractHorizonAnglesFromMedia as S}from"../utils.js";class C{constructor(t){this.referenceTransformationService=null,this.measurementVectors=[],this._connection=null,this._loadPromise=null,this.transformationService=t.transformationService,this.referenceTransformationService=t.referenceTransformationService,this._load().catch(t=>{e.getLogger(`esri.widgets.OrientedImageryViewer.services.ImageMeasurementService`).warn(`oriented-imagery-viewer:measurement-worker-warmup-failed`,t)})}async _load(){return this._connection||=(this._loadPromise??=n(`ImageMeasurementWorker`).catch(e=>{throw this._loadPromise=null,e}),await this._loadPromise),this._connection}getCachedMeasurementProperties(e,t,n=!1){if(!t)return null;let r=n?this.referenceTransformationService:this.transformationService,{imageToWorldProperties:i,imageSize:a,updateElevationProps:o}=r??{};return!r||!i||!a||r.mode!==e||a[0]!==t[0]||a[1]!==t[1]?null:{...i,updateElevationProps:o}}async calculateAccuracy(e){let{measurementArray:n,measurementType:i,currentBestFeature:a,currentBestFeatureMeasurementImage:o,activeViewer:s,imageSize:f,triangularMeasurementActive:p,footprintExtent:m,signal:h}=e,g=p&&o&&f?o:a,_=g?.attributes.orientationAccuracy,v=!_||_.every(e=>e===0);if(i===`area`&&n.length<3||i===`distance`&&n.length<2||!a||!s?.imageSize||v)return null;await this._load(),t(h);let y=p&&!!o&&!!f,b=y?o:a,x=y?f:s.imageSize,S=this.getCachedMeasurementProperties(`default`,x,y)??await c(b,x,m,h);if(t(h),!S)return null;let C=i===`area`?await l(n,S,!0):await u([n.at(0),n.at(-1)],S,!0);t(h);let{updateElevationProps:w}=S,T=this.getWorkerMethodProps(S,_,g.attributes.cameraHeading),E=await this._connection?.invoke(`generateCombinationsWorker`,T,{signal:h});if(t(h),!E?.length)return null;let D=E.map(async e=>{let a={...e,cameraLocation:new r(e.cameraLocation),updateElevationProps:w},o=i===`area`?await l(n,a,!0):await u([n.at(0),n.at(-1)],a,!0);if(t(h),o&&C){if(i===`area`){let e=typeof o==`number`?null:o.area;return e?Math.abs(e-C.area):null}return Math.abs(o-C)}return null}),O=await Promise.all(D);t(h);let k=O.filter(e=>e!==null);return k.length===0?null:d(k)}async calculateHeightAccuracy(e){let{mode:t,pixelObj:n,accuracyParameters:r,height:i,properties:a,currentBestFeature:o,signal:s}=e;return t===`panoramic`?this.calculateHeightAccuracyPanoramic(r,n,a,i,o,s):this.calculateHeightAccuracy2D(r,n,a,i,o.attributes.cameraHeading,s)}async calculateHeightAccuracyPanoramic(e,n,i,a,o,s){if(n.length<2||!a||!i||!e||!o)throw Error(`Missing parameters`);await this._load(),t(s);let c=this.getWorkerMethodProps(i,e,i.cameraHeading),l=await this._connection?.invoke(`generateCombinationsPanoramicWorker`,c,{signal:s});if(t(s),!l?.length)return null;let u=n.map(e=>[e.x,e.y]),d=u.at(0),p=u.at(-1),m=l.map(t=>(t.cameraLocation=new r(t.cameraLocation),f([d,p],t,e,o,!0,!1,s))),h=await Promise.all(m);t(s);let g=0;for(let e of h){if(!e)return 0;let t=Math.abs(e-a);g=Math.max(t,g)}return g}async calculateHeightAccuracy2D(e,n,i,a,o,s){if(n.length<2||!a||!i||!e)throw Error(`Missing parameters`);await this._load(),t(s);let c=this.getWorkerMethodProps(i,e,o),l=await this._connection?.invoke(`generateCombinationsWorker`,c,{signal:s});if(t(s),!l?.length)return null;let u=n.map(e=>[e.x,e.y]),d=u.at(0),f=u.at(-1);if(!d||!f)return null;let m=l.map(t=>(t.cameraLocation=new r(t.cameraLocation),p([d,f],t,e,!0,!1,s))),h=await Promise.all(m);t(s);let g=0;for(let e of h){if(!e)return 0;let t=Math.abs(e-a);g=Math.max(t,g)}return g}async calculateLocationAccuracy(e){let{pixel:n,currentResult:s,currentBestFeature:l,mode:u,activeViewer:d,footprintExtent:f,accuracyParameters:p,viewSpatialReference:g,signal:_}=e,v=u??`default`,y=g??null,b=v==="default"?await c(l,d?.imageSize,f,_):await m(l,d?.imageSize,f,_);if(t(_),!b)return null;await this._load(),t(_);let{updateElevationProps:x}=b,S=v==="default"?`generateCombinationsWorker`:`generateCombinationsPanoramicWorker`,C=this.getWorkerMethodProps(b,p,l.attributes.cameraHeading),w=await this._connection?.invoke(S,C,{signal:_});if(t(_),!w?.length)return null;let T=w.map(async e=>{let{...c}={...e,cameraLocation:new r(e.cameraLocation)},l=v==="default"?await a(n,c,x):await o(n,c,x);return t(_),y&&!l.spatialReference.equals(y)&&(l=await i(l,y),t(_)),l&&s?[Math.abs(l.x-s.x),Math.abs(l.y-s.y),l.z&&s.z?Math.abs(l.z-s.z):0]:null}),E=await Promise.all(T);if(t(_),!E?.length)return null;let D=E.map(e=>[e?.[0]??0,e?.[1]??0,e?.[2]??0]),[O,k,A]=h(D);return{x:O,y:k,z:A}}async calculateAccuracyPanoramic(e){let{measurementArray:n,measurementType:i,secondaryViewer:a,currentBestFeature:o,currentBestFeatureMeasurementImage:s,activeViewer:c,activeTriangulatedViewer:l,footprintExtent:u,signal:f}=e,p=a??!1,h=(p&&s&&l?.imageSize?s:o)?.attributes.orientationAccuracy,v=!h||h.every(e=>e===0);if(i===`area`&&n.length<3||i===`distance`&&n.length<2||!o||!c?.imageSize||v)return null;await this._load(),t(f);let y=l?.imageSize,b=p&&!!s&&!!y,x=b?s:o,S=b?y:c.imageSize,C=this.getCachedMeasurementProperties(`panoramic`,S,b)??await m(x,S,u,f);if(t(f),!C)return null;let w=i===`area`?await g(n,C,!0):await _([n.at(0),n.at(-1)],C,!0);t(f);let{updateElevationProps:T}=C,E=this.getWorkerMethodProps(C,h,C.cameraHeading),D=await this._connection?.invoke(`generateCombinationsPanoramicWorker`,E,{signal:f});if(t(f),!D?.length)return null;let O=D.map(async e=>{let a={...e,cameraLocation:new r(e.cameraLocation),updateElevationProps:T},o=i===`area`?await g(n,a,!0):await _([n.at(0),n.at(-1)],a,!0);if(t(f),o&&w){if(i===`area`){let e=typeof o==`number`?null:o.area;return e?Math.abs(e-w.area):null}return Math.abs(o-w)}return null}),k=await Promise.all(O);t(f);let A=k.filter(e=>e!==null);return A.length===0?null:d(A)}async calculateTriangulatedMeasurements(e){let{pixels:t,measureType:n,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:o,mode:c,imageSize:l,footprintExtent:u}=e;if(!o?.imageSize)return;let[d,f]=o.imageSize;switch(n){case`distance`:{let e=await y(this.measurementVectors),n=t.map(([e,t,n])=>s({x:e,y:t,z:n},d,f)).map(({x:e,y:t})=>[e,t]),p={measurementArray:t,measurementType:`distance`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,imageSize:l,triangularMeasurementActive:!0,footprintExtent:u},m={measurementArray:n,measurementType:`distance`,secondaryViewer:!0,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:o,footprintExtent:u},h=c==="default"?await this.calculateAccuracy(p):await this.calculateAccuracyPanoramic(m);if(h&&e?.distance)return{distance:e,accuracy:{distanceAccuracy:h,angleAccuracy:Math.atan(h/e.distance)}};break}case`area`:if(i?.geometry.spatialReference){let e=await v(this.measurementVectors,i.geometry.spatialReference),n=null;if(c==="default"){let e={measurementArray:t,measurementType:`area`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,imageSize:l,triangularMeasurementActive:!0,footprintExtent:u},o=await this.calculateAccuracy(e);o&&(n=o)}else if(c===`panoramic`){let e={measurementArray:t.map(([e,t,n])=>s({x:e,y:t,z:n},d,f)).map(({x:e,y:t})=>[e,t]),measurementType:`area`,secondaryViewer:!0,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:o,footprintExtent:u},c=await this.calculateAccuracyPanoramic(e);c&&(n=c)}return{area:e,accuracy:n}}}c===`panoramic`&&o.viewModel.restoreNavigationHandles()}async computeMeasurementVector(e){let{pixels:t,activeFeature:n,activeViewer:r,mode:a,spatialReference:o}=e,s=r?.imageSize,c=S(r?.media);if(!t||!n||!s)return;let l=b(t,a,s,c).map(async e=>{let t={x:e[0],y:e[1]},n=null;return n=this.measurementVectors.length===0?await this.transformationService.pixelToMapPoint(t):await this.referenceTransformationService?.pixelToMapPoint(t),n?(o&&!n.spatialReference.equals(o)&&(n=await i(n,o)),n):null}),u=(await Promise.all(l)).filter(e=>e!==null);return x(u,n)}resetMeasurementVectors(){this.measurementVectors=[]}async updateMeasurementVectorsArray(e){let{activeFeature:t}=e;if(t){let t=await this.computeMeasurementVector(e);t&&this.measurementVectors.push(t)}}getWorkerMethodProps(e,t,n){let{updateElevationProps:r,...i}=e;return{imageToWorldProps:{...i,cameraLocation:i.cameraLocation.toJSON()},accuracyParameters:t,cameraHeading:n}}}export{C as ImageMeasurementService};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Logger.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{EsriPromise as r}from"../../../core/Promise.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a}from"../../../core/accessorSupport/decorators/property.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";let s=class extends r{constructor(e){super(e),this.autoLoad=!1,this.customParameters=null,this.datasetFormat=null,this.url=null,this.rotation=null}destroy(){this._cache=n(this._cache)}get layer(){return this._cache}get size(){if(!this._cache?.loaded||!this._cache.serviceRasterInfo)return;let{serviceRasterInfo:e}=this._cache;return[e.width,e.height]}async load(e){if(this._cache?.loaded)return await this._cache.load(e),{layer:this._cache,size:this.size};let{url:n,customParameters:r}=this,a=this.datasetFormat;if(!n)throw Error(`URL is required to load NonPanoramicMedia.`);let o=await import(`./urlUtils.js`);if(i(e),a||=o.guessExtensionFromURI(n),!a){try{a=await o.getDatasetFormat(n)}catch(e){t.getLogger(this).warn(`non-panoramic-media:dataset-format`,e)}i(e)}a??=`UNKNOWN FORMAT`,this.datasetFormat=a;let s=(await import(`../../../layers/ImageryTileLayer.js`)).default;i(e),this._cache=new s({url:n,ioConfig:{skipExtensions:[`aux.xml`,`jgw`],skipMapInfo:!0,datasetFormat:a},customParameters:r??void 0});let c=this._cache.load(e);return this.addResolvingPromise(c),await c,i(e),{layer:this._cache,size:this.size}}};e([a()],s.prototype,`_cache`,void 0),e([a()],s.prototype,`autoLoad`,void 0),e([a()],s.prototype,`customParameters`,void 0),e([a()],s.prototype,`datasetFormat`,void 0),e([a()],s.prototype,`url`,void 0),e([a()],s.prototype,`layer`,null),e([a()],s.prototype,`rotation`,void 0),e([a()],s.prototype,`size`,null),s=e([o(`esri.widgets.OrientedImageryViewer.support.NonPanoramicMedia`)],s);const c=s;export{c as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Logger.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{EsriPromise as r}from"../../../core/Promise.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a}from"../../../core/accessorSupport/decorators/property.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";let s=class extends r{constructor(e){super(e),this.autoLoad=!1,this.customParameters=null,this.datasetFormat=null,this.url=null,this.rotation=null}destroy(){this._cache=n(this._cache)}get layer(){return this._cache}get size(){if(!this._cache?.loaded||!this._cache.serviceRasterInfo)return;let{serviceRasterInfo:e}=this._cache;return[e.width,e.height]}async load(e){if(this._cache?.loaded)return await this._cache.load(e),{layer:this._cache,size:this.size};let{url:n,customParameters:r}=this,a=this.datasetFormat;if(!n)throw Error(`URL is required to load NonPanoramicMedia.`);let o=await import(`./urlUtils.js`);if(i(e),a||=o.guessExtensionFromURI(n),!a){try{a=await o.getDatasetFormat(n)}catch(e){t.getLogger(this).warn(`non-panoramic-media:dataset-format`,e)}i(e)}a??=`UNKNOWN FORMAT`,this.datasetFormat=a;let s=(await import(`../../../layers/ImageryTileLayer.js`)).default;i(e),this._cache=new s({url:n,ioConfig:{skipExtensions:[`aux.xml`,`jgw`],skipMapInfo:!0,datasetFormat:a,tileGeneration:`immediate`},customParameters:r??void 0});let c=this._cache.load(e);return this.addResolvingPromise(c),await c,i(e),{layer:this._cache,size:this.size}}};e([a()],s.prototype,`_cache`,void 0),e([a()],s.prototype,`autoLoad`,void 0),e([a()],s.prototype,`customParameters`,void 0),e([a()],s.prototype,`datasetFormat`,void 0),e([a()],s.prototype,`url`,void 0),e([a()],s.prototype,`layer`,null),e([a()],s.prototype,`rotation`,void 0),e([a()],s.prototype,`size`,null),s=e([o(`esri.widgets.OrientedImageryViewer.support.NonPanoramicMedia`)],s);const c=s;export{c as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../Graphic.js";import t from"../../../core/Error.js";import n from"../../../geometry/Polygon.js";import{fromJSON as r}from"../../../geometry/support/jsonUtils.js";import{convertPixelLocationToSphereVertex as i,convertSphereVertexToPixelLocation as a}from"../../../layers/orientedImagery/transformations/utils.js";import{defaultImageGeometryField as o,defaultOIObjectIDField as s}from"../constants.js";import{createGraphicSymbol as c,dataCaptureFeatureSymbol as l}from"../symbols.js";import{checkNameOrAlias as u}from"./typeUtils.js";function d(e,t,n){if(!e)return;let{renderer:r}=e,i=l(t),a=r?`symbol`in r?r.symbol:`defaultSymbol`in r?r.defaultSymbol:r.getSymbol():null,o=i(a?.color);n[`${t}Symbol`]=(t===e.geometryType?a:null)??o}function f(e,n,r){let i=e.fields.find(({name:e,alias:t,type:r})=>u(n?.length?n:o,e,t)&&r===`blob`),a=e.fields.find(({name:e,alias:t})=>u(r?.length?r:s,e,t));if(!i||!a)throw new t(`orientedimageryviewer:invalid-data-capture-layer`,`Data capture layer is not configured correctly.`,{layer:e,imageGeometryField:i,oiObjectIdField:a});return{imageGeometryField:i,oiObjectIdField:a}}function p(n,r,i,a,o,s,l,u){let d=m(n,r);if(!d)throw new t(`orientedimageryviewer:invalid-geometry`,`InvalidGeometry`);return d=v(d,s,o,u),new e({attributes:n,layer:i,symbol:c(d.type,i.geometryType,l),geometry:d,visible:i.visible&&a})}function m(e,t){let{geometry:n}=JSON.parse(atob(e[t]));return r(n)}function h(e,t,n,r){switch(t){case`default`:return g(e);case`panoramic`:case`panoramic-video`:return _(e,n,r)}}function g(e){switch(e.type){case`point`:e.x+=.5,e.y=.5-e.y;break;case`polyline`:e.paths=e.paths.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`polygon`:e.rings=e.rings.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`multipoint`:e.points=e.points.map(([e,t])=>[e+.5,.5-t]);break;case`extent`:e.xmin+=.5,e.xmax+=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function _(e,t,r){switch(e.type){case`point`:{let{x:n,y:i}=a(e,...t,r);e.x=n,e.y=i,
|
|
2
|
+
import e from"../../../Graphic.js";import t from"../../../core/Error.js";import n from"../../../geometry/Polygon.js";import{fromJSON as r}from"../../../geometry/support/jsonUtils.js";import{convertPixelLocationToSphereVertex as i,convertSphereVertexToPixelLocation as a}from"../../../layers/orientedImagery/transformations/utils.js";import{defaultImageGeometryField as o,defaultOIObjectIDField as s}from"../constants.js";import{createGraphicSymbol as c,dataCaptureFeatureSymbol as l}from"../symbols.js";import{checkNameOrAlias as u}from"./typeUtils.js";function d(e,t,n){if(!e)return;let{renderer:r}=e,i=l(t),a=r?`symbol`in r?r.symbol:`defaultSymbol`in r?r.defaultSymbol:r.getSymbol():null,o=i(a?.color);n[`${t}Symbol`]=(t===e.geometryType?a:null)??o}function f(e,n,r){let i=e.fields.find(({name:e,alias:t,type:r})=>u(n?.length?n:o,e,t)&&r===`blob`),a=e.fields.find(({name:e,alias:t})=>u(r?.length?r:s,e,t));if(!i||!a)throw new t(`orientedimageryviewer:invalid-data-capture-layer`,`Data capture layer is not configured correctly.`,{layer:e,imageGeometryField:i,oiObjectIdField:a});return{imageGeometryField:i,oiObjectIdField:a}}function p(n,r,i,a,o,s,l,u){let d=m(n,r);if(!d)throw new t(`orientedimageryviewer:invalid-geometry`,`InvalidGeometry`);return d=v(d,s,o,u),new e({attributes:n,layer:i,symbol:c(d.type,i.geometryType,l),geometry:d,visible:i.visible&&a})}function m(e,t){let{geometry:n}=JSON.parse(atob(e[t]));return r(n)}function h(e,t,n,r){switch(t){case`default`:return g(e);case`panoramic`:case`panoramic-video`:return _(e,n,r)}}function g(e){switch(e.type){case`point`:e.x+=.5,e.y=.5-e.y;break;case`polyline`:e.paths=e.paths.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`polygon`:e.rings=e.rings.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`multipoint`:e.points=e.points.map(([e,t])=>[e+.5,.5-t]);break;case`extent`:e.xmin+=.5,e.xmax+=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function _(e,t,r){switch(e.type){case`point`:{let{x:n,y:i}=a(e,...t,r);e.x=n,e.y=i,e.z=void 0;break}case`polyline`:e.paths=e.paths.map(e=>e.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]}));break;case`polygon`:e.rings=e.rings.map(e=>e.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]}));break;case`multipoint`:e.points=e.points.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]});break;case`extent`:{let{xmin:i,xmax:a,ymin:o,ymax:s}=_(n.fromExtent(e),t,r).extent;e.xmax=a,e.xmin=i,e.ymax=s,e.ymin=o;break}}return e}function v(e,t,n,r){switch(t){case`default`:return y(e);case`panoramic`:case`panoramic-video`:return b(e,n,r)}}function y(e){switch(e.type){case`point`:e.x-=.5,e.y=.5-e.y;break;case`polyline`:e.paths=e.paths.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case`polygon`:e.rings=e.rings.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case`multipoint`:e.points=e.points.map(([e,t])=>[e-.5,.5-t]);break;case`extent`:e.xmin-=.5,e.xmax-=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function b(e,t,r){switch(e.type){case`point`:{let[n,a,o]=i(e,...t,r);e.x=n,e.y=a,e.z=o;break}case`polyline`:e.paths=e.paths.map(e=>e.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]}));break;case`polygon`:e.rings=e.rings.map(e=>e.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]}));break;case`multipoint`:e.points=e.points.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]});break;case`extent`:{let{xmin:i,xmax:a,ymin:o,ymax:s}=b(n.fromExtent(e),t,r).extent;e.xmax=a,e.xmin=i,e.ymax=s,e.ymin=o}}return e}export{d as configureSketchTool,p as constructGraphicFromImageGeometry,f as extractFieldsFromDataCaptureLayer,h as mapSpaceToImageSpace,g as mapSpaceToImageSpaceDefault,_ as mapSpaceToImageSpacePanoramic,m as parseAndExtractField,v as pixelToMapSpace,y as pixelToMapSpaceDefault,b as pixelToMapSpacePanoramic};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{throwIfAborted as e}from"../../../core/promiseUtils.js";import{getMetersPerUnitForSR as t}from"../../../core/units.js";import n from"../../../geometry/Point.js";import r from"../../../geometry/Polygon.js";import i from"../../../geometry/SpatialReference.js";import{intersectionExecute as a}from"../../../geometry/operators/intersectionOperator.js";import{computeFarplaneVertices as o
|
|
2
|
+
import{throwIfAborted as e}from"../../../core/promiseUtils.js";import{getMetersPerUnitForSR as t}from"../../../core/units.js";import n from"../../../geometry/Point.js";import r from"../../../geometry/Polygon.js";import i from"../../../geometry/SpatialReference.js";import{intersectionExecute as a}from"../../../geometry/operators/intersectionOperator.js";import{computeFarplaneVertices as o}from"../../../layers/orientedImagery/transformations/utils.js";import{calculateUpdatedWmsf as s}from"../imageMeasurementUtils.js";import{createRotationMatrixFromHPR as c}from"../../../layers/orientedImagery/transformations/rotationUtils.js";const l=15,u=120,d=.9,f=1.1,p=1,m=179,h=3,g=.05;function _(e,n){let{radiusOffset:r=0,minimumRadiusInMeters:i=0}=n;if(r===0)return;let a=t(e.spatialReference),o=a?r/a:r,{position:s}=e.vertexAttributes,c=Math.floor(s.length/3),l=0,u=0,d=0;for(let e=0;e<c;e++)l+=s[e*3],u+=s[e*3+1],d+=s[e*3+2];l/=c,u/=c,d/=c;let f=0;for(let e=0;e<c;e++){let t=s[e*3]-l,n=s[e*3+1]-u,r=s[e*3+2]-d;f+=Math.sqrt(t*t+n*n+r*r)}f/=c;let p=a?i/a:i,m=Math.max(p,f+o),h=f>0?m/f:1;for(let e=0;e<c;e++){let t=s[e*3]-l,n=s[e*3+1]-u,r=s[e*3+2]-d;t*=h,n*=h,r*=h,s[e*3]=l+t,s[e*3+1]=u+n,s[e*3+2]=d+r}e.vertexAttributesChanged()}function v(e,t,n){let{columns:r,rows:i}=I(e,t,n),[a,o]=e,s=t?.xmin??0,c=t?.ymin??0,l=t?Math.max(1,t.xmax-t.xmin):a,u=t?Math.max(1,t.ymax-t.ymin):o,d=[];for(let e=0;e<=i;e+=1){let t=c+e/i*u;for(let e=0;e<=r;e+=1)d.push({x:s+e/r*l,y:t})}return d}function y(e,t,n,r){let{columns:i,rows:a}=I(t,n,r),o=i+1,s=new Float64Array(e.length*3),c=new Float32Array(e.length*2),l=[];e.forEach((e,t)=>{let n=t*3,r=t*2,l=t%o,u=Math.floor(t/o);s[n]=e.x,s[n+1]=e.y,s[n+2]=e.z??0,c[r]=l/i,c[r+1]=u/a});for(let e=0;e<a;e+=1)for(let t=0;t<i;t+=1){let n=e*o+t,r=n+1,i=n+o,a=i+1;l.push(n,r,a,n,a,i)}return{faces:l,position:s,uv:c}}function b(e,t,n,r=2){return{width:Math.ceil(e/r**n),height:Math.ceil(t/r**n)}}function x(e,t,n){let{width:r,height:i,storageInfo:a}=e.rasterInfo,{pyramidScalingFactor:o}=a,s=b(r,i,t,o??void 0);if(!n)return{offset:{x:0,y:0},size:s};let c=(o??2)**t,l={x:Math.max(0,Math.floor(n.xmin/c)),y:Math.max(0,Math.floor(n.ymin/c))},u=Math.min(s.width,Math.ceil(n.xmax/c)),d=Math.min(s.height,Math.ceil(n.ymax/c));return{offset:l,size:{width:Math.max(1,u-l.x),height:Math.max(1,d-l.y)}}}function S(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(1,(n?.xmax??e.rasterInfo.width)-(n?.xmin??0)),s=Math.max(1,(n?.ymax??e.rasterInfo.height)-(n?.ymin??0)),c=Math.max(1,t.width),l=Math.max(1,t.height),u=Math.max(1,o/c,s/l),d=Math.ceil(Math.log(u)/Math.log(a));return Math.max(0,Math.min(r,Number.isFinite(d)?d:r))}function C(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(1,(n?.xmax??e.rasterInfo.width)-(n?.xmin??0)),s=Math.max(1,(n?.ymax??e.rasterInfo.height)-(n?.ymin??0)),c=Math.max(1,t.width),l=Math.max(1,t.height),u=r;for(let e=r;e>=0&&(u=e,!(e===0||o/a**e>c||s/a**e>l));--e);return u}function w(e,t,n=4096){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(0,Math.min(r,t));for(;o<r;){let t=b(e.rasterInfo.width,e.rasterInfo.height,o,a);if(t.width<=n&&t.height<=n)break;o+=1}return o}function T(e){let{camera:t,width:n,height:r}=e;if(n<=0||r<=0)return{horizontal:t.fov,vertical:t.fov};let i=Math.sqrt(n*n+r*r);return{horizontal:2*Math.atan(Math.tan(t.fov*Math.PI/360)*n/i)*180/Math.PI,vertical:2*Math.atan(Math.tan(t.fov*Math.PI/360)*r/i)*180/Math.PI}}function E(e,t,n){if(e==null||t==null||!Number.isFinite(e)||!Number.isFinite(t))return{horizontal:e??null,vertical:t??null};let r=Math.sin(n*Math.PI/180),i=Math.cos(n*Math.PI/180),a=[[e,0],[e,t],[0,t]].map(([e,t])=>[i*e-r*t,r*e+i*t]),o=Math.min(0,...a.map(([e])=>e)),s=Math.max(0,...a.map(([e])=>e)),c=Math.min(0,...a.map(([,e])=>e)),l=Math.max(0,...a.map(([,e])=>e));return{horizontal:Math.min(Math.abs(s-o),150),vertical:Math.min(Math.abs(l-c),150)}}function D(e,t,n,r){let{width:i,height:a}=e,o=E(t,n,r),s=Math.sqrt(i*i+a*a);if(s<=0)return o.vertical??o.horizontal??null;if(i>=a){let e=o.vertical;return e==null||a<=0?null:2*Math.atan(Math.tan(e*Math.PI/360)*s/a)*180/Math.PI}let c=o.horizontal;return c==null||i<=0?null:2*Math.atan(Math.tan(c*Math.PI/360)*s/i)*180/Math.PI}function O(e,t,r=16,i=0){let a=e.camera.position,{horizontal:l,vertical:u}=T(e),d=a.spatialReference.isWebMercator?s(a.y):1,f=o({cameraLocation:a,farDistance:t,horizontalFieldOfView:l,rotationMatrix:c([e.camera.heading,e.camera.tilt,i]),scalingFactor:d,verticalFieldOfView:u}),p=[];for(let e=0;e<f.length;e+=1){let t=f[e],i=f[(e+1)%f.length];for(let e=0;e<r;e+=1){let o=e/r;p.push(new n({x:t[0]+(i[0]-t[0])*o,y:t[1]+(i[1]-t[1])*o,z:t[2]+(i[2]-t[2])*o,spatialReference:a.spatialReference}))}}return p}async function k(t,n,o,s,c){if(n.type!==`3d`)return null;let{cameraRoll:l,farDistance:u}=t.attributes;if(typeof u!=`number`||!Number.isFinite(u)||u<=0)return null;let d=await s(O(n,u,32,l??0),c);e(c);let f=d.filter(({x:e,y:t})=>Number.isFinite(e)&&Number.isFinite(t));if(f.length<4)return null;let[p,m]=o,h=new r({rings:[[[0,0],[p,0],[p,m],[0,m],[0,0]]],spatialReference:i.WebMercator}),g=new r({rings:[[...f.map(({x:e,y:t})=>[e,t]),[f[0].x,f[0].y]]],spatialReference:i.WebMercator}),_=a(g,h),v=_?_.rings.flatMap(e=>e.map(([e,t])=>({x:e,y:t}))):f;if(!v.length)return null;let y=v.map(({x:e})=>Math.max(0,Math.min(p,e))),b=v.map(({y:e})=>Math.max(0,Math.min(m,e)));return j({xmin:Math.floor(Math.max(0,Math.min(...y))),xmax:Math.ceil(Math.min(p,Math.max(...y))),ymin:Math.floor(Math.max(0,Math.min(...b))),ymax:Math.ceil(Math.min(m,Math.max(...b)))},p,m)}async function A(t,n,r,i,a){if(n.type!==`3d`)return null;let{farDistance:o}=t.attributes;if(typeof o!=`number`||!Number.isFinite(o)||o<=0)return null;let s=o,[c,l]=r,u=await i(O(n,s),a);e(a);let d=u.filter(({x:e,y:t})=>Number.isFinite(e)&&Number.isFinite(t));if(d.length<4)return null;let f=M(d,l);if(!f)return null;let p=P(d.map(({x:e})=>N(e,c)),c),m=c-p.gap;return m<=0?null:m>=c-1?[{xmin:0,xmax:c,ymin:f.ymin,ymax:f.ymax}]:F(p,c,f)}function j(e,t,n){let r=Math.max(1,e.xmax-e.xmin),i=Math.max(1,e.ymax-e.ymin),a=Math.max(8,Math.round(r*g)),o=Math.max(8,Math.round(i*g)),s=Math.floor(Math.max(0,e.xmin-a)),c=Math.ceil(Math.min(t,e.xmax+a)),l=Math.floor(Math.max(0,e.ymin-o)),u=Math.ceil(Math.min(n,e.ymax+o));return c>s&&u>l?{xmin:s,xmax:c,ymin:l,ymax:u}:null}function M(e,t){let n=e.map(({y:e})=>Math.max(0,Math.min(t,e))),r=Math.floor(Math.max(0,Math.min(...n))),i=Math.ceil(Math.min(t,Math.max(...n)));return i>r?{ymin:r,ymax:i}:null}function N(e,t){return(e%t+t)%t}function P(e,t){let n=e.slice().sort((e,t)=>e-t),r=-1,i=0,a=0;for(let e=0;e<n.length;e+=1){let o=n[e],s=e===n.length-1?n[0]+t:n[e+1],c=s-o;c>r&&(r=c,i=o,a=s)}return{gap:r,start:i,end:a}}function F(e,t,n){let r=N(e.end,t),i=N(e.start,t);return r<=i?[{xmin:Math.floor(r),xmax:Math.ceil(i),...n}]:[{xmin:0,xmax:Math.ceil(i),...n},{xmin:Math.floor(r),xmax:t,...n}].filter(({xmin:e,xmax:t})=>t>e)}function I(e,t,n=20){let[r,i]=e,a=t?Math.max(1,t.xmax-t.xmin):r,o=t?Math.max(1,t.ymax-t.ymin):i;if(a<=0||o<=0)return{columns:2,rows:2};let s=a/o;return s>=1?{columns:n,rows:Math.max(2,Math.round(n/s))}:{columns:Math.max(2,Math.round(n*s)),rows:n}}export{_ as applySphereMeshOffsetInMeters,w as clampRasterLevelForTextureSize,k as computeDefaultAreaOfInterest,A as computePanoramicAreasOfInterest,O as createFarplaneSamplePoints,y as createSuperimposeGridVertexAttributes,v as createSuperimposeSamplePixels,C as getBaseRasterLevel,D as getDefaultSuperimposeFov,E as getEffectiveImageFieldOfView,x as getRasterFetchParameters,b as getRasterLevelSize,T as getViewCameraFieldOfView,S as getViewDependentRasterLevel,h as panoramicSuperimposeKeyboardAngleStep,u as panoramicSuperimposeMaxFov,m as panoramicSuperimposeMaxTilt,l as panoramicSuperimposeMinFov,p as panoramicSuperimposeMinTilt,d as panoramicSuperimposeZoomInFactor,f as panoramicSuperimposeZoomOutFactor};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../Graphic.js";import t from"../../core/Collection.js";import n from"../../core/Error.js";import{rad2deg as r,deg2rad as i}from"../../core/mathUtils.js";import{throwIfAborted as a}from"../../core/promiseUtils.js";import o from"../../geometry/support/MeshMaterialMetallicRoughness.js";import s from"../../geometry/support/MeshTexture.js";import{createSphere as c}from"../../geometry/support/meshUtils.js";import l from"../../symbols/FillSymbol3DLayer.js";import u from"../../symbols/MeshSymbol3D.js";import{defaultImageSphereCenter as d,defaultImageSphereSize as f}from"./constants.js";import{loadRasterFactory as p,loadPanoramicTilePyramid as m}from"./support/importUtils.js";function h({data:e,center:t=d,size:n=f,horizonPitch:r=0,horizonYaw:i=0,horizonRoll:a=0}){let l=t.clone();l.z=-n/2;let u=c(l,{size:n,densificationFactor:2,vertexSpace:`georeferenced`,material:new o({colorTexture:new s({data:e}),unlit:!0})});if(u.components[0].trustSourceNormals=!0,u.vertexAttributes.uv){let e=u.vertexAttributes.uv.length??0;for(let t=0;t<e;t++)u.vertexAttributes.uv[t*2+0]=1-u.vertexAttributes.uv[t*2+0]}return u.rotate(r,a,i,{origin:u.extent.center}),u.centerAt(l),u}function g(n){return new e({geometry:n,symbol:new u({symbolLayers:new t([new l])})})}function _(e,t){return 2*r(Math.atan(Math.tan(i(e/2))*Math.sqrt((1/t)**2+1)))}async function v(e,t){let n=await(await p()).open({url:e,ioConfig:{skipExtensions:[`jgw`,`aux.xml`],skipMapInfo:!0},...t});return a(t),y(n,{url:e})}const y=(e,t)=>{if(!e)throw new n(`panoramic-viewer:missing-raster`,`Raster data could not be loaded`,t);return e};async function b(e,t,n){let r=await m();return a(n),new r({raster:e,horizonPitch:t.pitch,horizonYaw:t.yaw,horizonRoll:t.roll})}async function x(e,t){return e?.length?await Promise.all(e.map(e=>e.loadMesh(t))):[]}export{h as createImageSphere,_ as findDiagonalFOV,x as loadMeshes,b as loadPyramid,v as loadRaster,g as meshToGraphic};
|
|
2
|
+
import e from"../../Graphic.js";import t from"../../core/Collection.js";import n from"../../core/Error.js";import{rad2deg as r,deg2rad as i}from"../../core/mathUtils.js";import{throwIfAborted as a}from"../../core/promiseUtils.js";import o from"../../geometry/support/MeshMaterialMetallicRoughness.js";import s from"../../geometry/support/MeshTexture.js";import{createSphere as c}from"../../geometry/support/meshUtils.js";import l from"../../symbols/FillSymbol3DLayer.js";import u from"../../symbols/MeshSymbol3D.js";import{defaultImageSphereCenter as d,defaultImageSphereSize as f}from"./constants.js";import{loadRasterFactory as p,loadPanoramicTilePyramid as m}from"./support/importUtils.js";function h({data:e,center:t=d,size:n=f,horizonPitch:r=0,horizonYaw:i=0,horizonRoll:a=0}){let l=t.clone();l.z=-n/2;let u=c(l,{size:n,densificationFactor:2,vertexSpace:`georeferenced`,material:new o({colorTexture:new s({data:e}),unlit:!0})});if(u.components[0].trustSourceNormals=!0,u.vertexAttributes.uv){let e=u.vertexAttributes.uv.length??0;for(let t=0;t<e;t++)u.vertexAttributes.uv[t*2+0]=1-u.vertexAttributes.uv[t*2+0]}return u.rotate(r,a,i,{origin:u.extent.center}),u.centerAt(l),u}function g(n){return new e({geometry:n,symbol:new u({symbolLayers:new t([new l])})})}function _(e,t){return 2*r(Math.atan(Math.tan(i(e/2))*Math.sqrt((1/t)**2+1)))}async function v(e,t){let n=await(await p()).open({url:e,ioConfig:{skipExtensions:[`jgw`,`aux.xml`],skipMapInfo:!0,tileGeneration:`immediate`},...t});return a(t),y(n,{url:e})}const y=(e,t)=>{if(!e)throw new n(`panoramic-viewer:missing-raster`,`Raster data could not be loaded`,t);return e};async function b(e,t,n){let r=await m();return a(n),new r({raster:e,horizonPitch:t.pitch,horizonYaw:t.yaw,horizonRoll:t.roll})}async function x(e,t){return e?.length?await Promise.all(e.map(e=>e.loadMesh(t))):[]}export{h as createImageSphere,_ as findDiagonalFOV,x as loadMeshes,b as loadPyramid,v as loadRaster,g as meshToGraphic};
|
|
@@ -84,7 +84,7 @@ export default class LayerSearchSource<Layer extends LayerBase = LayerBase> exte
|
|
|
84
84
|
* The supported modes are:
|
|
85
85
|
*
|
|
86
86
|
* - `"simple"`: Matches the entire search term exactly.
|
|
87
|
-
* - `"starts-with"`:
|
|
87
|
+
* - `"starts-with"`: Matches values that start with the search term.
|
|
88
88
|
* - `"full-text-starts-with"`: Uses a full-text prefix search and falls back to
|
|
89
89
|
* `"starts-with"` when a full-text index is unavailable.
|
|
90
90
|
* - `"full-text-simple"`: Uses a full-text simple search and falls back to
|
|
@@ -22,6 +22,7 @@ export interface VisibleElementsProperties extends Partial<Pick<VisibleElements,
|
|
|
22
22
|
selectionTools?: SelectionToolVisibilityMapProperties;
|
|
23
23
|
/**
|
|
24
24
|
* The available [SnappingControls](https://developers.arcgis.com/javascript/latest/references/core/widgets/support/SnappingControls/) elements within the widget.
|
|
25
|
+
* These visibility properties are preserved but ignored while [Sketch.useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#useViewOptions) is `true`.
|
|
25
26
|
*
|
|
26
27
|
* @since 5.0
|
|
27
28
|
*/
|
|
@@ -132,6 +133,7 @@ export default class VisibleElements extends Accessor {
|
|
|
132
133
|
accessor singlePluginBackButton: boolean;
|
|
133
134
|
/**
|
|
134
135
|
* Indicates whether to display the `SnappingControls` widget. Default is `true`.
|
|
136
|
+
* This property is preserved but ignored while [Sketch.useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#useViewOptions) is `true`.
|
|
135
137
|
*
|
|
136
138
|
* @default true
|
|
137
139
|
* @since 5.0
|
|
@@ -139,6 +141,7 @@ export default class VisibleElements extends Accessor {
|
|
|
139
141
|
accessor snappingControls: boolean;
|
|
140
142
|
/**
|
|
141
143
|
* The available [SnappingControls](https://developers.arcgis.com/javascript/latest/references/core/widgets/support/SnappingControls/) elements within the widget.
|
|
144
|
+
* These visibility properties are preserved but ignored while [Sketch.useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#useViewOptions) is `true`.
|
|
142
145
|
*
|
|
143
146
|
* @since 5.0
|
|
144
147
|
*/
|
|
@@ -146,6 +149,7 @@ export default class VisibleElements extends Accessor {
|
|
|
146
149
|
set snappingControlsElements(value: SnappingControlsVisibleElementsProperties);
|
|
147
150
|
/**
|
|
148
151
|
* Indicates whether to display the tooltips toggle. Default value is `true`.
|
|
152
|
+
* This property is preserved but ignored while [Sketch.useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#useViewOptions) is `true`.
|
|
149
153
|
*
|
|
150
154
|
* @default true
|
|
151
155
|
* @since 5.0
|
package/widgets/Sketch.d.ts
CHANGED
|
@@ -677,6 +677,8 @@ export default class Sketch extends Widget<SketchProperties> {
|
|
|
677
677
|
* - Snapping and tooltip options are inherited from the view. The widget's
|
|
678
678
|
* [snappingOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#snappingOptions) and [tooltipOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#tooltipOptions) are preserved but ignored.
|
|
679
679
|
* - Snapping controls and the tooltip toggle are hidden from the widget's Settings menu.
|
|
680
|
+
* The [VisibleElements.snappingControls](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/VisibleElements/#snappingControls), [VisibleElements.snappingControlsElements](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/VisibleElements/#snappingControlsElements),
|
|
681
|
+
* and [VisibleElements.tooltipsToggle](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/VisibleElements/#tooltipsToggle) visibility properties are preserved but ignored.
|
|
680
682
|
* - Units set through [valueOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#valueOptions) override the corresponding units on the view,
|
|
681
683
|
* such as length or area, without changing the view's options. Setting a unit to `null` or `undefined` restores
|
|
682
684
|
* inheritance for that measurement type.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
const e={danger:`exclamation-mark-circle`,info:`information`,neutral:void 0,success:`check`,warning:`exclamation-mark-triangle`,brand:void 0};function t(e){if(typeof e!=`object`||!e)return`layer`;if(`isTable`in e&&e.isTable)return`table`;if(!(`type`in e))return`layer`;switch(e.type){case`feature`:return`feature-layer`;case`graphics`:return`layer-graphics`;case`group`:return`layers`;case`subtype-group`:return`subtype`;case`csv`:return`layer-csv`;case`geojson`:return`layer-geojson`;case`map-notes`:case`sketch`:return`layer-map-notes`;case`knowledge-graph`:return`knowledge-layer`;case`link-chart`:return`knowledge-graph`;case`annotation-feature`:return`layer-annotation`;case`dimension-feature`:return`layer-dimension`;case`wfs`:return`layer-wfs`;default:return`layer`}}function n(e){let t=e.layer,n=t&&`geometryType`in t?t.geometryType:void 0,r=e.geometry?.type;return r===`polyline`||n===`polyline`?`line`:r===`mesh`||n===`mesh`||n===`multipatch`?`cube`:r===`multipoint`||n===`multipoint`?`point`:r||n||`table`}export{n as getIconForFeature,t as getIconForLayer,e as iconByKind};
|
|
2
|
+
const e={danger:`exclamation-mark-circle`,info:`information`,neutral:void 0,success:`check`,warning:`exclamation-mark-triangle`,brand:void 0};function t(e){if(typeof e!=`object`||!e)return`layer`;if(`isTable`in e&&e.isTable)return`table`;if(!(`type`in e))return`layer`;switch(e.type){case`feature`:return`feature-layer`;case`graphics`:return`layer-graphics`;case`group`:return`layers`;case`subtype-group`:return`subtype`;case`csv`:return`layer-csv`;case`geojson`:return`layer-geojson`;case`map-notes`:case`sketch`:return`layer-map-notes`;case`knowledge-graph`:case`knowledge-graph-sublayer`:return`knowledge-layer`;case`link-chart`:return`knowledge-graph`;case`annotation-feature`:return`layer-annotation`;case`dimension-feature`:return`layer-dimension`;case`imagery`:return`image-layer`;case`oriented-imagery`:return`oriented-imagery-layer`;case`parquet`:return`parquet-feature-layer`;case`wfs`:return`layer-wfs`;default:return`layer`}}function n(e){let t=e.layer,n=t&&`geometryType`in t?t.geometryType:void 0,r=e.geometry?.type;return r===`polyline`||n===`polyline`?`line`:r===`mesh`||n===`mesh`||n===`multipatch`?`cube`:r===`multipoint`||n===`multipoint`?`point`:r||n||`table`}export{n as getIconForFeature,t as getIconForLayer,e as iconByKind};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[8457],{38457(e,t,n){n.d(t,{default:()=>s});var a=n(49186),i=n(17676),o=n(83027);class s{constructor(){this._connection=null,this.convertPixelBlockToImageData=async e=>{if(!this._connection)throw new a.A("panoramic-mesh-manager:convertPixelBlockToImageData","Panoramic mesh manager is not loaded");let{pixelBlock:t,transferList:n}=e.clone().getTransferableObject();return await this._connection.invoke("convertPixelBlockToImageData",t,{transferList:n})},this.getFacesWithVertexAttributes=async e=>{if(!this._connection)throw new a.A("panoramic-mesh-manager:getFacesWithVertexAttributes","Panoramic mesh manager is not loaded");return await this._connection.invoke("getFacesWithVertexAttributes",e)}}destroy(){this._connection?.close()}async _startWorker(e){this._connection=await(0,o.h)("PanoramicMeshWorker",e)}static getInstance(){return s._instance||=new s,s._instance}async load(e){return(0,i.Te)(e),await this._startWorker(e),this}async recomputePositions(e,t,n,i){if(!this._connection)throw new a.A("panoramic-mesh-manager:recomputePositions","Panoramic mesh manager is not loaded");return await this._connection.invoke("recomputePositions",{oldDistance:e,newDistance:t,position:n},{...i,transferList:[n.buffer.slice()]})}}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[1359],{1359(e,t,i){i.d(t,{createSampler:()=>_,query:()=>E});var l=i(60999),a=i(49186),n=i(44208),s=i(97768),r=i(17676),o=i(86211),u=i(99917),c=i(19419),h=i(4576),p=i(72802);class f{constructor(e,t){this.layer=e,this.parameters=t}}class m extends f{constructor(e,t,i){super(e,i),this.outSpatialReference=t,this.type="geometry"}selectTilesAtLOD(e){if(e<0)this.geometry.coordinates.forEach(e=>e.tile=null);else{let{tileInfo:t,tilemapCache:i}=this.layer,l=x(t,i)[e].level;this.geometry.coordinates.forEach(e=>e.tile=t.tileAt(l,e.x,e.y))}}allElevationTilesFetched(){return!this.geometry.coordinates.some(e=>!e.elevationTile)}clearElevationTiles(){for(let e of this.geometry.coordinates)e.elevationTile!==this.outsideExtentTile&&(e.elevationTile=null)}populateElevationTiles(e){for(let t of this.geometry.coordinates)!t.elevationTile&&t.tile?.id&&(t.elevationTile=e[t.tile.id])}remapTiles(e){for(let t of this.geometry.coordinates){let i=t.tile?.id;t.tile=i?e[i]:null}}getTilesToFetch(){return(0,h.Am)(this.geometry.coordinates.filter(({tile:e,elevationTile:t})=>e?.id&&!t),(e,t)=>e.tile?.id===t.tile?.id).map(({tile:e})=>e)}forEachTileToFetch(e){for(let t of this.geometry.coordinates)t.tile&&!t.elevationTile&&e(t.tile,()=>t.tile=null)}}class d extends f{constructor(e,t,i,l){super(e,i),this.maskExtents=l,this.type="extent",this.elevationTiles=[],this._candidateTiles=[],this._fetchedCandidates=new Set,this.extent=t.clone().intersection(e.fullExtent)}selectTilesAtLOD(e,t){let i=this._maximumLodForRequests(t),l=Math.min(i,e);l<0?this._candidateTiles.length=0:this._selectCandidateTilesCoveringExtentAt(l)}_maximumLodForRequests(e){let{tileInfo:t,tilemapCache:i}=this.layer,l=x(t,i);if(!e)return l.length-1;let a=this.extent;if(null==a)return-1;for(let i=l.length-1;i>=0;i--){let n=l[i],s=n.resolution*t.size[0],r=n.resolution*t.size[1];if(Math.ceil(a.width/s)*Math.ceil(a.height/r)<=e)return i}return-1}allElevationTilesFetched(){return this._candidateTiles.length===this.elevationTiles.length}clearElevationTiles(){this.elevationTiles.length=0,this._fetchedCandidates.clear()}populateElevationTiles(e){for(let t of this._candidateTiles){let i=t.id&&e[t.id];i&&(this._fetchedCandidates.add(t),this.elevationTiles.push(i))}}remapTiles(e){this._candidateTiles=v(this._candidateTiles.map(t=>e[t.id]))}getTilesToFetch(){return this._candidateTiles}forEachTileToFetch(e,t){let i=this._candidateTiles;this._candidateTiles=[],i.forEach(i=>{if(this._fetchedCandidates.has(i))return void t?.(i);let l=!1;e(i,()=>l=!0),l?t?.(i):this._candidateTiles.push(i)}),this._candidateTiles=v(this._candidateTiles,t)}_selectCandidateTilesCoveringExtentAt(e){this._candidateTiles.length=0;let t=this.extent;if(null==t)return;let{tileInfo:i,tilemapCache:l}=this.layer,a=x(i,l)[e],n=i.tileAt(a.level,t.xmin,t.ymin),s=n.extent,r=a.resolution*i.size[0],o=a.resolution*i.size[1],u=Math.ceil((t.xmax-s[0])/r),c=Math.ceil((t.ymax-s[1])/o);for(let e=0;e<c;e++)for(let t=0;t<u;t++){let l=new p.U(n.level,n.row-e,n.col+t);i.updateTileInfo(l),this._tileIsMasked(l)||this._candidateTiles.push(l)}}_tileIsMasked(e){return this.maskExtents?.some(t=>(0,c.gR)(t,e.extent))??!1}}function y(e){return null!=e?.tileInfo}function x(e,t){let i=e.lods;if(y(t)){let{effectiveMinLOD:e,effectiveMaxLOD:l}=t;return i.filter(t=>t.level>=e&&t.level<=l)}return i}function v(e,t){let i={},l=[];for(let a of e){let e=a.id;e&&!i[e]?(i[e]=a,l.push(a)):t?.(a)}let a=l.sort((e,t)=>e.level-t.level);return a.filter((e,i)=>{for(let l=0;l<i;l++){let i=a[l].extent;if(i&&(0,c.gR)(i,e.extent))return t?.(e),!1}return!0})}class w{constructor(e,t){this.data=e,this.safeWidth=.99999999*(e.width-1),this.dx=(e.width-1)/(t[2]-t[0]),this.dy=(e.width-1)/(t[3]-t[1]),this.x0=t[0],this.y1=t[3]}}class g{constructor(e,t=null){if(this.key=e,null!=t){let i=e.extent;this._samplerData=new w(t,i)}}get zmin(){return null==this._samplerData?0:this._samplerData.data.minValue}get zmax(){return null==this._samplerData?0:this._samplerData.data.maxValue}get hasNoDataValues(){return!!this._samplerData?.data.hasNoDataValues}sample(e,t){if(null==this._samplerData)return;let{safeWidth:i,data:l,dx:a,dy:n,y1:s,x0:r}=this._samplerData,{width:o,values:u,noDataValue:c}=l,h=T(n*(s-t),0,i),p=T(a*(e-r),0,i),f=Math.floor(h),m=Math.floor(p),d=f*o+m,y=d+o,x=u[d],v=u[y],w=u[d+1],g=u[y+1];if(x!==c&&v!==c&&w!==c&&g!==c){let e=p-m,t=x+(w-x)*e;return t+(v+(g-v)*e-t)*(h-f)}}}function T(e,t,i){return e<t?t:e>i?i:e}var R=i(87378),A=i(10292),D=i(57984);async function E(e,t,i){if(!e)throw new a.A(L,"Elevation queries require an elevation layer to fetch tiles from");if(!t||!(t instanceof A.q)&&"point"!==t.type&&"multipoint"!==t.type&&"polyline"!==t.type)throw new a.A("elevation-query:invalid-geometry","Only point, polyline and multipoint geometries can be used to query elevation");let l={...k,...i},r=l.signal;if("integrated-mesh-3dtiles"===e.type){let a=A.q.fromGeometry(t);if(e.queryElevationCallback&&((0,n.A)("enable-feature:im-as-ground")?e.isUsedAsGroundLayer:e.replacesTerrain)){let n=12.9*(i?.minDemResolution||0)+.71,s=await(await e.queryElevationCallback(a,{signal:r,maxGeometricError:n})).project(t.spatialReference,r);if(s){if(void 0!==l.noDataValue&&l.noDataValue!==Number.MAX_VALUE)for(let e of s.coordinates)e.z===Number.MAX_VALUE&&(e.z=l.noDataValue);let t=l.noDataValue??Number.MAX_VALUE,i=s.coordinates.map(i=>({demResolution:i.z===t?-1:1,source:e}));return{geometry:s.export(),noDataValue:t,sampleInfo:i}}}let s=a.coordinates.map(()=>({demResolution:-1,source:e}));return{geometry:a.export(),noDataValue:Number.MAX_VALUE,sampleInfo:s}}if("integrated-mesh"===e.type){let i=A.q.fromGeometry(t),l=i.coordinates.map(()=>({demResolution:-1,source:e}));return{geometry:i.export(),noDataValue:Number.MAX_VALUE,sampleInfo:l}}let c=new m(e,t.spatialReference,l);return await e.load({signal:r}),await async function(e,t,i){let l,n=e.layer.tileInfo.spatialReference;if(t instanceof A.q?l=await t.project(n,i):(await(0,u.initializeProjection)([{source:t.spatialReference,dest:n}],{signal:i}),l=(0,u.project)(t,n)),!l)throw new a.A("elevation-query:spatial-reference-mismatch",`Cannot query elevation in '${t.spatialReference.wkid}' on an elevation service in '${n.wkid}'`);e.geometry=A.q.fromGeometry(l)}(c,t,r),await q(c,r),await b(c,r),function(e){e.geometry.coordinates.forEach(t=>{let i=t.elevationTile,l=e.parameters.noDataValue;if(i){let e=i.sample(t.x,t.y);null==e?t.elevationTile=null:l=e}t.z=l})}(c),async function(e,t){let i=await e.geometry.project(e.outSpatialReference,t);(0,s.Lw)(i);let l={geometry:i.export(),noDataValue:e.parameters.noDataValue};return e.parameters.returnSampleInfo&&(l.sampleInfo=function(e){let t=e.layer.tileInfo,i=(0,o.GA)(t.spatialReference);return e.geometry.coordinates.map(l=>{let a=-1;return l.elevationTile&&l.elevationTile!==e.outsideExtentTile&&(a=t.lodAt(l.elevationTile.key.level).resolution*i),{demResolution:a,source:-1===a?void 0:e.layer}})}(e)),e.geometry.coordinates.forEach(e=>{e.tile=null,e.elevationTile=null}),l}(c,r)}async function _(e,t,i){if(e=Array.isArray(e)?e:[e],0===(e=i?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice()).length)throw new a.A(L,"Elevation queries require at least one elevation layer to fetch tiles from");if(!t||"extent"!==t.type)throw new a.A("elevation-query:invalid-extent","Invalid or undefined extent");let l={...k,...i,returnSampleInfo:!0},n=I(e[e.length-1],t,l);return 1===e.length?n:V(e,t,await n,l)}async function I(e,t,i,l){let a=i.signal;await e.load({signal:a});let n=t.spatialReference,s=e.tileInfo.spatialReference;n.equals(s)||(await(0,u.initializeProjection)([{source:n,dest:s}],{signal:a}),t=(0,u.project)(t,s));let r=new d(e,t,i,l);await q(r,a),await b(r,a);let o=r.elevationTiles,c=r.layer.tileInfo,h=r.parameters.noDataValue;return new D.C({noDataValue:h,tiles:o,tileInfo:c})}async function V(e,t,i,l){if(e.pop(),!e.length)return i;let a=i.samplers.filter(e=>!e.tile.hasNoDataValues).map(e=>(0,c.VY)(e.extent)),n=await I(e[e.length-1],t,l,a);if(0===n.samplers.length)return i;let s=i.samplers.concat(n.samplers),r=l.noDataValue;return V(e,t,new D.C({samplers:s,noDataValue:r}),l)}async function q(e,t){"geometry"===e.type&&function(e){if(null==e.layer.fullExtent)return;let t=new g(new p.U(-1,-1,-1));t.sample=()=>e.parameters.noDataValue,e.outsideExtentTile=t;let i=e.layer.fullExtent;e.geometry.coordinates.forEach(e=>{let l=e.x,a=e.y;(l<i.xmin||l>i.xmax||a<i.ymin||a>i.ymax)&&(e.elevationTile=t)})}(e);let i=e.parameters.demResolution;if("number"==typeof i)!function(e,t){let i=function(e,t){let{tileInfo:i,tilemapCache:l}=e.layer,a=t/(0,o.GA)(i.spatialReference),n=x(i,l),s=n[0],r=0;for(let e=1;e<n.length;e++){let t=n[e];Math.abs(t.resolution-a)<Math.abs(s.resolution-a)&&(s=t,r=e)}return r}(e,t);e.selectTilesAtLOD(i)}(e,i);else if("finest-contiguous"===i)await async function(e,t){let{tileInfo:i,tilemapCache:l}=e.layer;await C(e,z(i,l,e.parameters.minDemResolution),t)}(e,t);else{if("auto"!==i)throw new a.A("elevation-query:invalid-dem-resolution",`Invalid dem resolution value '${i}', expected a number, "finest-contiguous" or "auto"`);await async function(e,t){(function(e){let{tileInfo:t,tilemapCache:i}=e.layer,l=z(t,i,e.parameters.minDemResolution);e.selectTilesAtLOD(l,e.parameters.maximumAutoTileRequests)})(e),function(e){let t=e.layer.tileInfo,i=0,l={},a=e=>{null!=e.id&&(e.id in l?l[e.id]++:(l[e.id]=1,i++))},n=e=>{if(null==e.id)return;let t=l[e.id];1===t?(delete l[e.id],i--):l[e.id]=t-1};e.forEachTileToFetch(a,n);let s=!0;for(;s&&(s=!1,e.forEachTileToFetch(l=>{i<=e.parameters.maximumAutoTileRequests||(n(l),t.upsampleTile(l)&&(s=!0),a(l))},n),s););}(e);let i=e.layer.tilemapCache;if(!i||y(i))return M(e,t);let a=e.getTilesToFetch(),n={},s=a.map(async e=>{let a=new p.U(0,0,0),s=await(0,l.Ke)(i.fetchAvailabilityUpsample(e.level,e.row,e.col,a,{signal:t}));!1===s.ok?(0,r.QP)(s.error):null!=e.id&&(n[e.id]=a)});await(0,r.qr)(Promise.all(s),t),e.remapTiles(n)}(e,t)}}async function C(e,t,i){let l=e.layer;if(e.selectTilesAtLOD(t),t<0)return;let n=l.tilemapCache,s=e.getTilesToFetch();try{if(n&&!y(n))await(0,r.qr)(Promise.all(s.map(e=>n.fetchAvailability(e.level,e.row,e.col,{signal:i}))),i);else if(await b(e,i),!e.allElevationTilesFetched())throw e.clearElevationTiles(),new a.A("elevation-query:has-unavailable-tiles","Some elevation tiles are unavailable")}catch(l){(0,r.QP)(l),await C(e,t-1,i)}}async function M(e,t){let i=e.layer.tileInfo;await b(e,t);let l=!1;e.forEachTileToFetch((e,t)=>{i.upsampleTile(e)?l=!0:t()}),l&&await M(e,t)}function z(e,t,i=0){let l=x(e,t),a=l.length-1;if(i>0){let t=i/(0,o.GA)(e.spatialReference),n=l.findIndex(e=>e.resolution<t);0===n?a=0:n>0&&(a=n-1)}return a}const k={maximumAutoTileRequests:20,noDataValue:0,returnSampleInfo:!1,demResolution:"auto",minDemResolution:0,signal:null};async function b(e,t){let i=e.getTilesToFetch(),l={},a=e.parameters.cache,n=e.parameters.noDataValue,s={noDataValue:n,signal:t},o=i.map(async t=>{if(null==t.id)return;let i=`${e.layer.uid}:${t.id}:${n}`,r=a?.get(i)??R.A.from(await e.layer.fetchTile(t.level,t.row,t.col,s));a?.put(i,r),l[t.id]=new g(t,r)});await(0,r.qr)(Promise.allSettled(o),t),e.populateElevationTiles(l)}const L="elevation-query:invalid-layer"},7236(e,t,i){i.d(t,{A:()=>u});var l=i(32198),a=i(65529),n=i(53966),s=i(91429),r=i(86738),o=i(28735);let u=class extends a.nJ{queryElevation(e){let t=this.projectIfRequired(e,this.spatialReference);if(!t)return null;switch(e.type){case"point":return function(e,t,i){return e.hasZ=!0,e.z=i.elevationAt(t.x,t.y),e}(e,t,this);case"polyline":return function(e,t,i){c.spatialReference=t.spatialReference;let l=e.hasM&&!e.hasZ;for(let a=0;a<e.paths.length;a++){let n=e.paths[a],s=t.paths[a];for(let e=0;e<n.length;e++){let t=n[e],a=s[e];c.x=a[0],c.y=a[1],l&&(t[3]=t[2]),t[2]=i.elevationAt(c.x,c.y)}}return e.hasZ=!0,e}(e,t,this);case"multipoint":return function(e,t,i){c.spatialReference=t.spatialReference;let l=e.hasM&&!e.hasZ;for(let a=0;a<e.points.length;a++){let n=e.points[a],s=t.points[a];c.x=s[0],c.y=s[1],l&&(n[3]=n[2]),n[2]=i.elevationAt(c.x,c.y)}return e.hasZ=!0,e}(e,t,this);default:return null}}projectIfRequired(e,t){if(null==e)return null;let i=e.spatialReference;if(i.equals(t))return e;let l=(0,o.Cv)(e,t);return l||n.A.getLogger(this).error(`Cannot project geometry spatial reference (wkid:${i.wkid}) to elevation sampler spatial reference (wkid:${t.wkid})`),l}};u=(0,l.Cg)([(0,s.$K)("esri.layers.support.ElevationSampler")],u);const c=new r.A},10292(e,t,i){i.d(t,{q:()=>r});var l=i(48526),a=i(86738),n=i(82799),s=i(99917);class r{constructor(e){this.geometry=e,this.spatialReference=e.spatialReference}export(){return this._exporter(this.coordinates,this.spatialReference)}clone(e){let t=new r(this.geometry);return t.spatialReference=this.spatialReference,t.coordinates=e??this.coordinates.map(e=>e.clone()),t._exporter=this._exporter,t}async project(e,t){if(this.spatialReference.equals(e))return this.clone();await(0,s.initializeProjection)([{source:this.spatialReference,dest:e}],{signal:t});let i=new l.A({spatialReference:this.spatialReference,points:this.coordinates.map(e=>[e.x,e.y])}),a=(0,s.project)(i,e);if(!a)return null;let n=this.coordinates.map((e,t)=>{let i=e.clone(),l=a.points[t];return i.x=l[0],i.y=l[1],i}),r=this.clone(n);return r.spatialReference=e,r}projectSync(e){if(this.spatialReference.equals(e))return this.clone();let t=new l.A({spatialReference:this.spatialReference,points:this.coordinates.map(e=>[e.x,e.y])}),i=(0,s.project)(t,e);if(!i)return null;let a=this.coordinates.map((e,t)=>{let l=e.clone(),a=i.points[t];return l.x=a[0],l.y=a[1],l}),n=this.clone(a);return n.spatialReference=e,n}static fromGeometry(e){let t=new r(e);if(e instanceof r)return t.coordinates=e.coordinates.map(e=>e.clone()),t._exporter=(t,i)=>{let l=e.clone(t);return l.spatialReference=i,l},t;switch(e.type){case"point":{let i=e,{hasZ:l,hasM:n}=i;return t.coordinates=l&&n?[new o(i.x,i.y,i.z,i.m)]:l?[new o(i.x,i.y,i.z)]:n?[new o(i.x,i.y,null,i.m)]:[new o(i.x,i.y)],t._exporter=(t,i)=>e.hasM?new a.A(t[0].x,t[0].y,t[0].z,t[0].m,i):new a.A(t[0].x,t[0].y,t[0].z,i),t}case"multipoint":{let i=e,{hasZ:a,hasM:n}=i;return t.coordinates=a&&n?i.points.map(e=>new o(e[0],e[1],e[2],e[3])):a?i.points.map(e=>new o(e[0],e[1],e[2])):n?i.points.map(e=>new o(e[0],e[1],null,e[2])):i.points.map(e=>new o(e[0],e[1])),t._exporter=(t,i)=>e.hasM?new l.A({points:t.map(e=>[e.x,e.y,e.z??0,e.m??0]),hasZ:!0,hasM:!0,spatialReference:i}):new l.A({points:t.map(e=>[e.x,e.y,e.z??0]),spatialReference:i}),t}case"polyline":{let i=e,l=[],a=[],{hasZ:s,hasM:r}=e,u=0;for(let e of i.paths)if(a.push([u,u+e.length]),u+=e.length,s&&r)for(let t of e)l.push(new o(t[0],t[1],t[2],t[3]));else if(s)for(let t of e)l.push(new o(t[0],t[1],t[2]));else if(r)for(let t of e)l.push(new o(t[0],t[1],null,t[2]));else for(let t of e)l.push(new o(t[0],t[1]));return t.coordinates=l,t._exporter=(t,i)=>{let l=e.hasM?t.map(e=>[e.x,e.y,e.z??0,e.m??0]):t.map(e=>[e.x,e.y,e.z??0]),s=a.map(e=>l.slice(e[0],e[1]));return new n.A({paths:s,hasM:e.hasM,hasZ:!0,spatialReference:i})},t}}}}class o{constructor(e,t,i=null,l=null,a=null,n=null){this.x=e,this.y=t,this.z=i,this.m=l,this.tile=a,this.elevationTile=n}clone(){return new o(this.x,this.y,this.z,this.m)}}},57984(e,t,i){i.d(t,{C:()=>c});var l=i(32198),a=i(53966),n=i(86211),s=i(91429),r=i(16930),o=i(19419),u=i(7236);let c=class extends u.A{get spatialReference(){return this.extent.spatialReference}constructor(e){let t=e.noDataValue,i="tiles"in e?e.tiles.map(i=>new h({tile:i,tileInfo:e.tileInfo,noDataValue:t})):e.samplers;super({noDataValue:t,samplers:i});let l=i[0];if(l){this.extent=l.extent.clone();let{min:e,max:t}=l.demResolution;this.demResolution={min:e,max:t};for(let e=1;e<i.length;e++){let t=i[e];this.extent.union(t.extent),this.demResolution.min=Math.min(this.demResolution.min,t.demResolution.min),this.demResolution.max=Math.max(this.demResolution.max,t.demResolution.max)}}else{let t="tileInfo"in e?e.tileInfo:null;this.extent=(0,o.w1)((0,o.vt)(),t?.spatialReference??r.A.WGS84),this.demResolution={min:0,max:0}}}elevationAt(e,t){let i;for(let l of this.samplers)if(l.containsAt(e,t)&&(i=l.elevationAt(e,t),i!==l.noDataValue))return i;return i??(a.A.getLogger(this).warn("#elevationAt()",`Point used to sample elevation (${e}, ${t}) is outside of the sampler`),this.noDataValue)}};(0,l.Cg)([(0,s.MZ)({constructOnly:!0})],c.prototype,"noDataValue",void 0),(0,l.Cg)([(0,s.MZ)({constructOnly:!0})],c.prototype,"samplers",void 0),c=(0,l.Cg)([(0,s.$K)("esri.layers.support.TileElevationSampler")],c);let h=class extends u.A{get spatialReference(){return this.extent.spatialReference}constructor(e){super(e);let t=e.tile.key.extent;this.extent=(0,o.w1)(t,e.tileInfo.spatialReference),this.extent.zmin=e.tile.zmin,this.extent.zmax=e.tile.zmax;let i=(0,n.GA)(e.tileInfo.spatialReference),l=e.tileInfo.lodAt(e.tile.key.level).resolution*i;this.demResolution={min:l,max:l}}contains(e){let t=this.projectIfRequired(e,this.spatialReference);return null!=t&&this.containsAt(t.x,t.y)}containsAt(e,t){return(0,o.Rj)(this.tile.key.extent,e,t)}elevationAt(e,t){return this.containsAt(e,t)?this.tile.sample(e,t)??this.noDataValue:this.noDataValue}};(0,l.Cg)([(0,s.MZ)({constructOnly:!0})],h.prototype,"tile",void 0),(0,l.Cg)([(0,s.MZ)({constructOnly:!0})],h.prototype,"noDataValue",void 0),(0,l.Cg)([(0,s.MZ)({constructOnly:!0})],h.prototype,"tileInfo",void 0),h=(0,l.Cg)([(0,s.$K)("esri.layers.support.TileElevationSampler.SingleTileElevationSampler")],h)}}]);
|