@arcgis/core 5.2.0-next.47 → 5.2.0-next.48
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/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/003a87b16f8a4b476e14.js +1 -0
- package/assets/esri/core/workers/chunks/{2a4868acd546312aa6d8.js → 05f6887805d92da03122.js} +1 -1
- package/assets/esri/core/workers/chunks/069b6d8bdb34ee88d437.js +1 -0
- package/assets/esri/core/workers/chunks/{68f7eaa3122de7c00adb.js → 0ea374f7b16745b9bbc7.js} +1 -1
- package/assets/esri/core/workers/chunks/12e0c5b7cc5c3f9e6f0f.js +1 -0
- package/assets/esri/core/workers/chunks/1843a762f7051f61af43.js +1 -0
- package/assets/esri/core/workers/chunks/20c363a113dc068de9e0.js +1 -0
- package/assets/esri/core/workers/chunks/{f2c8122d31aedc2604ee.js → 24d936d459c538187af6.js} +1 -1
- package/assets/esri/core/workers/chunks/{4d4710d57c72ec75cccc.js → 26f1fd3f2be5102aae1d.js} +1 -1
- package/assets/esri/core/workers/chunks/285a5bd708f0fe1c620c.js +1 -0
- package/assets/esri/core/workers/chunks/2e121eac97ae72a8b49a.js +1 -0
- package/assets/esri/core/workers/chunks/{7777a79f26a06a6c5240.js → 304a22c580ce103480cb.js} +1 -1
- package/assets/esri/core/workers/chunks/327899182a4dace428eb.js +1 -0
- package/assets/esri/core/workers/chunks/32ca15d928d51b380068.js +1 -0
- package/assets/esri/core/workers/chunks/{383392c63202ac044b6c.js → 33bd9785bd0b6ccef21b.js} +1 -1
- package/assets/esri/core/workers/chunks/{0f19bc532be24ca64755.js → 36fe6adf6517d8f80125.js} +1 -1
- package/assets/esri/core/workers/chunks/3e1a7e4c674057807e3a.js +1 -0
- package/assets/esri/core/workers/chunks/{d36f17d32c654b1ac7fa.js → 3f1a7f8a9ead64bf0b7b.js} +1 -1
- package/assets/esri/core/workers/chunks/{cc637aec16918052548e.js → 47af3525396f890f2a6b.js} +1 -1
- package/assets/esri/core/workers/chunks/4d9433f127aef76f3449.js +1 -0
- package/assets/esri/core/workers/chunks/4e2baa60c5d5197b2271.js +1 -0
- package/assets/esri/core/workers/chunks/4ee900e5dbb130fa0c7b.js +1 -0
- package/assets/esri/core/workers/chunks/519c0b51b1ba42fb71d7.js +1 -0
- package/assets/esri/core/workers/chunks/{c4b13124a9cfc78c42a6.js → 57fa3c0e7892c2eef3ee.js} +1 -1
- package/assets/esri/core/workers/chunks/68b615bbd27fadcfcb66.js +1 -0
- package/assets/esri/core/workers/chunks/68d898037feb0aee3138.js +1 -0
- package/assets/esri/core/workers/chunks/69b9a327f23e052fced7.js +1 -0
- package/assets/esri/core/workers/chunks/69d740ab18510156f5d6.js +1 -0
- package/assets/esri/core/workers/chunks/6c2b5087a9df65267f4e.js +1 -0
- package/assets/esri/core/workers/chunks/6fbcf1b85461c6c6c127.js +1 -0
- package/assets/esri/core/workers/chunks/7659391f952d134164cf.js +1 -0
- package/assets/esri/core/workers/chunks/7759a489205a874e13bb.js +1 -0
- package/assets/esri/core/workers/chunks/78918035144c3c76df71.js +1 -0
- package/assets/esri/core/workers/chunks/{2b669473aa2c7cfb63c7.js → 7b0ed52363704cfce129.js} +1 -1
- package/assets/esri/core/workers/chunks/{98f575c038da74ced2a6.js → 7d0ff52748fd4eb0334d.js} +1 -1
- package/assets/esri/core/workers/chunks/{8f9fb4e8a7d73db41664.js → 851bcc75acac4a2f199b.js} +1 -1
- package/assets/esri/core/workers/chunks/{6010b7be978698a642d0.js → 8977c85aecc7e08ab13c.js} +1 -1
- package/assets/esri/core/workers/chunks/8c5726c7ce40a92901e6.js +1 -0
- package/assets/esri/core/workers/chunks/{f2adf1227a795604d3b8.js → 90ae80b797642bff0efa.js} +1 -1
- package/assets/esri/core/workers/chunks/{dee4019338a79c1ecd26.js → 9d0a9d465ec3a8ba1ed2.js} +1 -1
- package/assets/esri/core/workers/chunks/aa3abc07de2921ef6ca1.js +1 -0
- package/assets/esri/core/workers/chunks/b03f09ee2224f0cc526a.js +1 -0
- package/assets/esri/core/workers/chunks/{728ea88e7d4733230e1f.js → b30237361d87cf982e41.js} +23 -24
- package/assets/esri/core/workers/chunks/{ee58f4bbc0a1f7d03df0.js → b32ede7805c7c6644e4c.js} +1 -1
- package/assets/esri/core/workers/chunks/b5d23efa584c74955d5b.js +1 -0
- package/assets/esri/core/workers/chunks/b83f2bbd634f57a5e8f9.js +1 -0
- package/assets/esri/core/workers/chunks/b8bdacebd4d24ba90f3f.js +1 -0
- package/assets/esri/core/workers/chunks/bab71e1b8b93d09d4809.js +1 -0
- package/assets/esri/core/workers/chunks/bb8e9b8343b83dd1ba3c.js +1 -0
- package/assets/esri/core/workers/chunks/bd8b180c61a80e60568c.js +1 -0
- package/assets/esri/core/workers/chunks/be6caade351e89f84251.js +680 -0
- package/assets/esri/core/workers/chunks/{8026cc0065f6520c4161.js → bef1990159c0e49e7d27.js} +1 -1
- package/assets/esri/core/workers/chunks/{b3cd17daf5a297b96705.js → c3766d98f0a70897647f.js} +1 -1
- package/assets/esri/core/workers/chunks/cd1f1a72483b7c80bd9a.js +1 -0
- package/assets/esri/core/workers/chunks/{744f34e379484e63277c.js → cdb331b58e22f8c1c988.js} +2 -2
- package/assets/esri/core/workers/chunks/{b23d1e10fc4161d1f3eb.js → d021775cf747556660a5.js} +1 -1
- package/assets/esri/core/workers/chunks/d49e42f36bc3dc256b9f.js +1 -0
- package/assets/esri/core/workers/chunks/{7c2784ebbe17d79f669c.js → de50a19944617cd426b8.js} +1 -1
- package/assets/esri/core/workers/chunks/e232459f0b00110e07ac.js +1 -0
- package/assets/esri/core/workers/chunks/e7e3ea7af928b49b226c.js +1 -0
- package/assets/esri/core/workers/chunks/ee6bb6cd16f99421c76b.js +1 -0
- package/assets/esri/core/workers/chunks/fd2ba6f76645ba503cbb.js +1 -0
- package/assets/esri/core/workers/chunks/{85cd0cd721b27c497b18.js → fed6c75485601cd3afa1.js} +1 -1
- package/assets/esri/core/workers/chunks/ff2c4f648f77850922d5.js +1 -0
- package/assets/esri/libs/basisu/basis_encoder.wasm +0 -0
- package/assets/esri/libs/basisu/basis_transcoder.wasm +0 -0
- package/chunks/DefaultMaterial.glsl.js +1 -1
- package/chunks/basis_encoder.js +1 -1
- package/chunks/basis_transcoder.js +1 -1
- package/config.js +1 -1
- package/core/has.js +1 -1
- package/core/libs/gl-matrix-2/math/vec3.js +1 -1
- package/core/promiseUtils.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/geometry/Mesh.d.ts +4 -4
- package/geometry/support/MeshMaterialMetallicRoughness.d.ts +13 -1
- package/geometry/support/MeshMaterialMetallicRoughness.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/gltf.js +1 -1
- package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
- package/geometry/support/meshUtils.d.ts +33 -5
- package/geometry/support/plane.js +1 -1
- package/kernel.js +1 -1
- package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
- package/layers/raster/formats/JpgPlus.js +1 -1
- package/layers/raster/formats/RasterCodec.js +1 -1
- package/layers/raster/formats/TiffDecoder.js +1 -1
- package/layers/raster/formats/Zlib.js +2 -0
- package/package.json +2 -2
- package/rest/featureService/FeatureService.d.ts +74 -1
- package/rest/featureService/FeatureService.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/ObjectSymbol3DLayer.d.ts +10 -8
- package/symbols/support/ObjectSymbol3DLayerResource.d.ts +9 -4
- package/views/2d/analysis/AreaMeasurement/AreaMeasurementAreaVisualization.js +1 -1
- package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
- package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
- package/views/2d/engine/webgl/mesh/MultiTileMeshData.js +1 -1
- package/views/2d/layers/features/Processor.js +1 -1
- package/views/2d/layers/features/processor/AProcessorStrategy.js +1 -1
- package/views/2d/layers/features/processor/AggregateStrategy.js +2 -0
- package/views/2d/layers/features/processor/bins/BinAdapter.js +2 -0
- package/views/2d/layers/features/processor/bins/BinLevelState.js +2 -0
- package/views/2d/layers/features/processor/bins/BinState.js +2 -0
- package/views/2d/layers/features/processor/bins/createBinningStrategy.js +2 -0
- package/views/2d/layers/features/processor/clusters/ClusterAdapter.js +2 -0
- package/views/2d/layers/features/processor/clusters/ClusterLevelState.js +2 -0
- package/views/2d/layers/features/processor/clusters/ClusterSendState.js +2 -0
- package/views/2d/layers/features/processor/clusters/createClusterStrategy.js +2 -0
- package/views/2d/layers/features/processor/createAggregateStrategy.js +2 -0
- package/views/2d/layers/features/processor/tracks/Track.js +2 -0
- package/views/2d/layers/features/processor/tracks/TrackAdapter.js +2 -0
- package/views/2d/layers/features/processor/tracks/TrackLevelState.js +2 -0
- package/views/2d/layers/features/processor/tracks/TrackSendState.js +2 -0
- package/views/2d/layers/features/processor/tracks/createTrackStrategy.js +2 -0
- package/views/2d/layers/features/support/FeatureSetReaderIndirect.js +1 -1
- package/views/3d/glTF/LoaderResult.js +1 -1
- package/views/3d/glTF/internal/Resource.js +1 -1
- package/views/3d/glTF/loader.js +1 -1
- package/views/3d/interactive/editingTools/transform/extentTransform/ExtentScale.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
- package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js +19 -20
- package/views/3d/webgl-engine/lib/Intersector.js +1 -1
- package/views/3d/webgl-engine/lib/NavigationDepthCache.js +1 -1
- package/views/3d/webgl-engine/lib/NavigationDepthCacheStore.js +2 -0
- package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
- package/views/3d/webgl-engine/lib/intersectorUtils.js +1 -1
- package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
- package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/TerrainTechniqueConfiguration.js +1 -1
- package/views/PopupView.js +1 -1
- package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
- package/views/interactive/snapping/SnappingAlgorithm.js +1 -1
- package/views/support/AnalysisViewManager.js +1 -1
- package/assets/esri/core/workers/chunks/0115681a3de6df0aebdf.js +0 -1
- package/assets/esri/core/workers/chunks/025caafc70ac26f0a4ed.js +0 -1
- package/assets/esri/core/workers/chunks/08e18fb12533fc76e49c.js +0 -1
- package/assets/esri/core/workers/chunks/176c5eaaa23a479c88e0.js +0 -1
- package/assets/esri/core/workers/chunks/1f118d85d8271ad7690b.js +0 -1
- package/assets/esri/core/workers/chunks/268637fd6c50264acfc3.js +0 -1
- package/assets/esri/core/workers/chunks/296fa9fb80e521c30cb1.js +0 -1
- package/assets/esri/core/workers/chunks/354199a41de44902de84.js +0 -1
- package/assets/esri/core/workers/chunks/384b619854ef8a3f6e94.js +0 -1
- package/assets/esri/core/workers/chunks/3af923abeb6e65c4468f.js +0 -1
- package/assets/esri/core/workers/chunks/46d3ddf62fa7a76dd57d.js +0 -1
- package/assets/esri/core/workers/chunks/4b24f72b56edc28bb15e.js +0 -1
- package/assets/esri/core/workers/chunks/4f09f208ece2ec1db727.js +0 -1
- package/assets/esri/core/workers/chunks/57374213084bef59b776.js +0 -1
- package/assets/esri/core/workers/chunks/5f9c4dad6952c4c58ebf.js +0 -1
- package/assets/esri/core/workers/chunks/706230b70a36d2e038f7.js +0 -1
- package/assets/esri/core/workers/chunks/7cc729b57a6a52c8ac68.js +0 -1
- package/assets/esri/core/workers/chunks/804ab5f614efa12a131b.js +0 -1
- package/assets/esri/core/workers/chunks/81d55594cee124040565.js +0 -1
- package/assets/esri/core/workers/chunks/8d90bef1091204fba0f1.js +0 -1
- package/assets/esri/core/workers/chunks/8ec5e470583b75fceae1.js +0 -1
- package/assets/esri/core/workers/chunks/9114a575b78a7ea18d0f.js +0 -1
- package/assets/esri/core/workers/chunks/93e705c1147cc8ceca02.js +0 -1
- package/assets/esri/core/workers/chunks/a8033e606b2db1ee332d.js +0 -1
- package/assets/esri/core/workers/chunks/a9c641bcdef161c754bf.js +0 -1
- package/assets/esri/core/workers/chunks/ad5c2b0de6713d0a93a4.js +0 -680
- package/assets/esri/core/workers/chunks/ae50b2d5e63f62c088d2.js +0 -1
- package/assets/esri/core/workers/chunks/aea247138617e12b699b.js +0 -1
- package/assets/esri/core/workers/chunks/b03dcf3d55266745f3d1.js +0 -1
- package/assets/esri/core/workers/chunks/c01a121ebe571a848452.js +0 -1
- package/assets/esri/core/workers/chunks/c3cd38ca8690286d40d7.js +0 -1
- package/assets/esri/core/workers/chunks/c6042825f61cd70d54d8.js +0 -1
- package/assets/esri/core/workers/chunks/d8b67ca02cdc1e8191e3.js +0 -1
- package/assets/esri/core/workers/chunks/dadefe369f49e89a2610.js +0 -1
- package/assets/esri/core/workers/chunks/db416ba3132034e20642.js +0 -1
- package/assets/esri/core/workers/chunks/dfbdc72c7ea137e3841d.js +0 -1
- package/assets/esri/core/workers/chunks/e3e966777f18164afcd8.js +0 -1
- package/assets/esri/core/workers/chunks/e9c48630757bea465b7e.js +0 -1
- package/assets/esri/core/workers/chunks/f8f0de841be17cd05c8f.js +0 -1
- package/assets/esri/core/workers/chunks/ff089723a27859fe18d1.js +0 -1
- package/chunks/Zlib.js +0 -2
- package/views/2d/layers/features/processor/AAggregateStrategy.js +0 -2
- package/views/2d/layers/features/processor/BinningStrategy.js +0 -2
- package/views/2d/layers/features/processor/ClusterStrategy.js +0 -2
- package/views/2d/layers/features/processor/TrackStrategy.js +0 -2
- /package/assets/esri/core/workers/chunks/{744f34e379484e63277c.js.LICENSE.txt → cdb331b58e22f8c1c988.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{equals as e}from"../../../../../core/SetUtils.js";import t from"../../../../../geometry/SpatialReference.js";import{convertToFeature as s,unquantizeOptimizedGeometryInPlace as a}from"../../../../../layers/graphics/featureConversionUtils.js";import{OptimizedFeature as r}from"../../../../../layers/graphics/OptimizedFeature.js";import{checkProjectionSupport as i}from"../../../../../layers/graphics/data/projectionSupport.js";import o from"../../../../../layers/support/FieldsIndex.js";import{ComputedAggregateField as n}from"../aggregation/ComputedAggregateField.js";import{AAggregateStrategy as l}from"./AAggregateStrategy.js";import{UpdateBatch as d,ASendState as c}from"./AProcessorStrategy.js";import{FeatureTileUpdateMessage as u}from"../sources/FeatureSourceMessage.js";import{ComputedAttributeStorage as f}from"../support/ComputedAttributeStorage.js";import p from"../support/FeatureFilterEvaluator.js";import{FeatureMetadata as h}from"../support/FeatureMetadata.js";import{FeatureSetReaderJSON as m}from"../support/FeatureSetReaderJSON.js";import{Hashed as g}from"../support/Hashed.js";class y extends c{constructor(e,t){super(e),this.bins=new Map,this.featureCache=new Map,this.done=!1,this._store=t}take(){const e=this.bins,t=this.featureCache;return this.bins=new Map,this.featureCache=new Map,{bins:e,featureCache:t}}destroy(){const e=this.subscription.tile.key.level;for(const t of this.featureCache.keys())this._store.releaseDisplayIdForObjectId(`${t}.${e}`);this.bins.clear(),this.featureCache.clear(),this.handledChunks.clear()}get tile(){return this.subscription.tile}*featuresWorldSpace(){for(const e of this.featureCache.values()){const t=e.clone();t.geometry&&a(t.geometry,this.subscription.tile.transform),yield t}}}class I extends l{static async create(e,s,a,r,o){const l=s.metadata.outSpatialReference,d=new f({spatialReference:l}),c=await Promise.all(e.fields.map(async e=>n.create(d,e))),u=e.featureFilter?await p.create({geometryType:s.metadata.geometryType,hasM:!1,hasZ:!1,timeInfo:s.metadata.timeInfo,fieldsIndex:s.metadata.fieldsIndex,spatialReference:l,filterJSON:e.featureFilter}):null;return"geohash"===e.index.type&&await i(l,t.WGS84),new I(e,u,r,c,l,s,a,o)}constructor(e,t,s,a,r,i,n,l){super(i,n,r,a,l),this._schema=e,this._featureFilter=t,this._arcadeContextInfo=s,this._handled=new Set,this._invalidated=!1,this._metadata=h.createFeature({geometryType:"esriGeometryPolygon",hasZ:!1,hasM:!1,featureIdInfo:{type:"object-id",fieldName:"aggregateId"},fieldsIndex:new o(e.fields).toJSON(),globalIdField:null,spatialReference:i.metadata.spatialReference,outSpatialReference:i.metadata.outSpatialReference,attributeSpatialReference:null,subtypeField:null,subtypes:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:null,typeIdField:null,types:null}),this._getIndex=this._createGetIndex()}requiresInvalidation(t){for(const e of this._sendStates.values())if(!e.done)return!0;const s=new Set;for(const e of t)s.add(e.chunkId);return!e(s,this._handled)&&(this._handled=s,!0)}invalidate(){this._invalidated=!0}createState(e){return new y(e,this._attributeStore)}async applyOverrideUpdate(e){return null}displayMap(e,t,s){const a=new Map(e.map(e=>[t(e),e])),r=[];for(const i of this._sendStates.values())for(const e of i.featuresWorldSpace()){const{objectId:t,displayId:i}=e,o=a.get(t);if(null!=o){const e=s(i,o,t);r.push(e),a.delete(t)}}return r}getDisplayFeatures(e){const t=new Set(e),a=new Set,r=[];for(const i of this._sendStates.values())for(const e of i.featuresWorldSpace())t.has(e.displayId)&&!a.has(e.objectId)&&(e.geometry&&r.push({...s(e,this._metadata.geometryType,!1,!1),displayId:e.displayId}),a.add(e.objectId));return{features:[],aggregates:r,tracks:[]}}getFeatureObjectIdsForAggregate(e){for(const t of this._sendStates.values())for(const s of t.bins.values())if(s.id===e){const e=[];for(const t of s.containedObjectIds)for(const s of t.values())e.push(s);return e}return[]}async updateChunks(e,t){if(!this._invalidated)return null;this._invalidated=!1;const s=new d;for(const a of this._sendStates.values())s.messages.push(this._update(a,e,t));return s}forEachAggregateWorldSpace(e){const t=new Set;for(const s of this._sendStates.values())for(const a of s.featuresWorldSpace())t.has(a.objectId)||(e(a),t.add(a.objectId))}_createGetIndex(){return(e,t)=>{switch(this._schema.index.type){case"geohash":return e.getGeohashIndex(new g({type:"geohash",fields:this.aggregateFields,featureFilter:this._featureFilter,geohashLevel:this._schema.index.fixBinLevel,spatialReference:this.spatialReference,arcadeContextInfo:this._arcadeContextInfo,scale:t.scale,sqlOptions:this._sqlOptions}));case"grid":{const s=this._schema.index.fixedBinLevel,a=null!=s?t.tileInfoView.getLODInfoAt(s).scale:t.scale;return e.getGridIndex(new g({type:"grid",fields:this.aggregateFields,cellSize:this._schema.index.size,featureFilter:this._featureFilter,spatialReference:this.spatialReference,arcadeContextInfo:this._arcadeContextInfo,scale:a,sqlOptions:this._sqlOptions}))}}}}_update(e,t,s){const{subscription:a}=e,i=e.take(),{bins:o,featureCache:n}=e,l=a.tile,d=new Set;for(const r of t){this._getIndex(r,l).putBounded(o,d,e.tile.extent,e.tile.resolution)}const c=[],f=a.tile.transform,p=a.tile.key.level;for(const u of o.values()){const e=u.getGeometry(this.spatialReference,f),t=new r(e,u.getAttributes(),null,u.id);e||(t.centroid=u.getGeometricCentroid(this.spatialReference,f)),t.displayId=this._attributeStore.createDisplayIdForObjectId(`${t.objectId}.${p}`),n.set(u.id,t),c.push(t)}this.events.emit("changed"),e.done||=!s;const h=m.fromOptimizedFeatures(c,this._metadata,f),g=h.getCursor(),y=e.subscription.tile.createArcadeEvaluationOptions(this._arcadeContextInfo);for(;g.next();)this._attributeStore.setAttributeData(g.getDisplayId(),g,y,this._sqlOptions);const I=new u(e.subscription,h,[],e.done,{});for(const r of i.featureCache.keys())this._attributeStore.releaseDisplayIdForObjectId(`${r}.${p}`);return I}}export{y as BinningState,I as BinningStrategy};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../core/has.js";import{convertToFeature as e}from"../../../../../layers/graphics/featureConversionUtils.js";import{OptimizedFeature as t}from"../../../../../layers/graphics/OptimizedFeature.js";import s from"../../../../../layers/graphics/OptimizedGeometry.js";import i from"../../../../../layers/support/FieldsIndex.js";import{tileSize as r}from"../../../engine/webgl/definitions.js";import{ComputedAggregateField as a}from"../aggregation/ComputedAggregateField.js";import{GridCell as n}from"../aggregation/GridCell.js";import{pixelsPerMapUnit as l}from"../aggregation/GridSpatialIndex.js";import{AAggregateStrategy as o}from"./AAggregateStrategy.js";import{LevelReplaceBatch as d,ASendState as u}from"./AProcessorStrategy.js";import{WithDisplayId as c}from"./support/WithDisplayId.js";import{FeatureTileAppendMessage as p}from"../sources/FeatureSourceMessage.js";import{ComputedAttributeStorage as f}from"../support/ComputedAttributeStorage.js";import h from"../support/FeatureFilterEvaluator.js";import{FeatureMetadata as g}from"../support/FeatureMetadata.js";import{FeatureSetReaderJSON as m}from"../support/FeatureSetReaderJSON.js";import{Hashed as _}from"../support/Hashed.js";const y=128;class I extends u{constructor(e){super(e),this.didSend=!1,this.done=!1}}class x{constructor(e,t,s,i,r){this.level=e,this._scale=t,this._indexOptions=s,this._clusterRadius=i,this._store=r,this._statistics=new Map,this._handledChunks=new Set,this._handledIds=new Set,this._cells=new Map,this._clusters=new Map}destroy(){this._clearClusters()}_clearClusters(){for(const e of this._clusters.values())this._store.releaseDisplayIdForObjectId(e.inner.id);this._clusters.clear()}invalidate(){this._cells.clear(),this._handledChunks.clear(),this._handledIds.clear()}*aggregatesWorldSpace(){for(const e of this._clusters.values()){const s=e.inner.getCentroid(null),i=new t(s,e.inner.getAttributes(),null,e.inner.id,e.displayId);yield i}}clusters(){return this._clusters.values()}update(e,t){let s=!1;const i=new _({...this._indexOptions,scale:this._scale});for(const l of e){if(this._handledChunks.has(l.normalizedChunkId))continue;if(this._handledChunks.add(l.normalizedChunkId),null!=l.lodInfo&&l.lodInfo.level!==this.level)continue;l.getGridIndex(i).put(this._cells,this._handledIds),s=!0}const r=l(this._indexOptions.spatialReference,this._scale),a=this._indexOptions.cellSize,n={xMin:1/0,yMin:1/0,xMax:-1/0,yMax:-1/0};for(const{subscription:l}of t){const e=l.tile.bounds,t=Math.floor(e[0]*r/a),s=Math.floor(e[1]*r/a),i=Math.ceil(e[2]*r/a),o=Math.ceil(e[3]*r/a);n.xMin=Math.min(n.xMin,t),n.yMin=Math.min(n.yMin,s),n.xMax=Math.max(n.xMax,i),n.yMax=Math.max(n.yMax,o)}return null!=this._lastCellBounds&&n.xMin===this._lastCellBounds.xMin&&n.xMax===this._lastCellBounds.xMax&&n.yMin===this._lastCellBounds.yMin&&n.yMax===this._lastCellBounds.yMax||(this._lastCellBounds=n,s=!0),s&&this._clusterCells(n),s}_clusterCells(e){const t=this._clusters;this._clusters=new Map;const s=this._clusterRadius*(1/l(this._indexOptions.spatialReference,this._scale));let i=Array.from(this._cells.values());i=i.sort((e,t)=>t.count-e.count);const r=new Set;for(const a of i){if(r.has(a.id))continue;if(a.gridX<e.xMin||a.gridX>e.xMax||a.gridY<e.yMin||a.gridY>e.yMax)continue;const t=1+this._clusterRadius/this._indexOptions.cellSize,i=this._store.createDisplayIdForObjectId(a.id),l=new c(a.clone(),i);r.add(a.id),this._clusters.set(a.id,l);const o=a.centroidXWorld,d=a.centroidYWorld;for(let e=a.gridY-t;e<=a.gridY+t;e++)for(let i=a.gridX-t;i<=a.gridX+t;i++){if(e===a.gridY&&i===a.gridX)continue;const t=this._cells.get(n.createId(i,e));if(!t||r.has(t.id))continue;const u=Math.abs(t.centroidXWorld-o),c=Math.abs(t.centroidYWorld-d);u<s&&c<s&&(l.inner.merge(t),r.add(t.id))}}for(const a of t.values())this._store.releaseDisplayIdForObjectId(a.inner.id)}async updateStatistics(e){let t=!1;for(const s of this._clusters.values())s.inner.count>1&&(t=this._updateAggregateStatistics(this._statistics,s.inner)||t);if(t){const t=Array.from(this._statistics.entries()).map(([e,t])=>({fieldName:e,minValue:t.minValue,maxValue:t.maxValue}));await e.container.updateStatistics(this.level,t)}}createAggregateFeatures(e,i){const a=e.subscription,n=[],l=a.tile.transform,o=Array.from(this._clusters.values()),d=o.length;for(const c of o){const e=c.inner.getCentroidX(l),i=c.inner.getCentroidY(l),a=1===c.inner.count?c.inner.firstObjectId:c.inner.id,o=c.displayId;if(e<r+y&&e>=-y&&i<r+y&&i>=-y){const r=new s([],[e,i]),l=new t(r,c.inner.getAttributes(),null,a,o);n.push(l)}}const u=m.fromOptimizedFeatures(n,i,a.tile.transform);return has("esri-2d-update-debug")&&console.debug(`Tile[${e.subscription.tile.id}] ClusterStrategy.createAggregateFeatures`,{clusters:u,levelClusterCount:d}),u}_updateAggregateStatistics(e,t){let s=!1;for(const i of t.statistics.values()){if("esriFieldTypeString"===i.field.type)continue;const t=i.value,r=i.field,a=e.get(r.name);if(a){const{minValue:e,maxValue:i}=a,r=Math.min(a.minValue,t),n=Math.max(a.maxValue,t);e===r&&i===n||(a.minValue=r,a.maxValue=n,s=!0);continue}e.set(r.name,{minValue:t,maxValue:t}),s=!0}return s}}class S extends o{static async create(e,t,s,i,r,n){const l=s.metadata.outSpatialReference,o=new f({spatialReference:l}),d={type:"grid",fields:await Promise.all(t.fields.map(async e=>a.create(o,e))),spatialReference:l,featureFilter:t.featureFilter?await h.create({geometryType:s.metadata.geometryType,hasM:!1,hasZ:!1,timeInfo:s.metadata.timeInfo,fieldsIndex:s.metadata.fieldsIndex,spatialReference:l,filterJSON:t.featureFilter}):null,cellSize:t.clusterRadius/4,arcadeContextInfo:r,sqlOptions:n};return new S(e,t.clusterRadius,d,t.fields,s,i,n)}constructor(e,t,s,r,a,n,l){super(a,n,s.spatialReference,s.fields,l),this._connection=e,this._clusterRadius=t,this._indexOptions=s,this._cellsPerLevel=new Map,this._metadata=g.createFeature({geometryType:"esriGeometryPoint",hasZ:!1,hasM:!1,featureIdInfo:{type:"object-id",fieldName:"aggregateId"},fieldsIndex:new i([...r,...this._source.metadata.fieldsIndex.fields,{name:"aggregateId",alias:"aggregateId",type:"esriFieldTypeOID"}]).toJSON(),globalIdField:null,spatialReference:a.metadata.spatialReference,outSpatialReference:a.metadata.outSpatialReference,attributeSpatialReference:null,subtypeField:null,subtypes:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:null,typeIdField:null,types:null})}get enablePixelBuffering(){return!0}onSubscribe(e){super.onSubscribe(e);const{scale:t,level:s}=e.tile;this._lastSubscribedLodInfo={level:s,scale:t}}requiresInvalidation(e){return!1}invalidate(){for(const e of this._cellsPerLevel.values())e.invalidate()}createState(e){return new I(e)}async applyOverrideUpdate(e){for(const t of this._cellsPerLevel.values())t.invalidate();return null}displayMap(e,t,s){const i=new Map(e.map(e=>[t(e),e])),r=[],a=this._getActiveClusterState();if(a)for(const n of a.clusters()){const e=i.get(n.inner.id);if(null!=e){const t=s(n.displayId,e,n.inner.id);r.push(t),i.delete(n.inner.id);continue}if(1===n.inner.count){const{firstObjectId:e}=n.inner,t=e?i.get(e):null;if(null!=t){const a=s(n.displayId,t,e);r.push(a),i.delete(e)}}}return r}getDisplayFeatures(t){const s=new Set(t),i=new Set,r=[],a=[],n=this._getActiveClusterState();if(n)for(const l of n.aggregatesWorldSpace())if(s.has(l.displayId)&&!i.has(l.displayId)){const t=e(l,this._metadata.geometryType,!1,!1);if(i.add(l.displayId),1===t.attributes.cluster_count){r.push({...t,displayId:l.displayId});continue}a.push({...t,displayId:l.displayId})}return{features:r,aggregates:a,tracks:[]}}getFeatureObjectIdsForAggregate(e){const t=this._getActiveClusterState();if(t)for(const s of t.clusters())if(s.inner.id===e){const e=[];for(const t of s.inner.containedObjectIds)for(const s of t.values())e.push(s);return e}return[]}async updateChunks(e,t){const s=this._lastSubscribedLodInfo;if(!s)return null;const i=this._getOrCreateClusterState(s),r=Array.from(this._sendStates.values()).filter(e=>e.subscription.tile.level===s.level);i.update(e,r);const a=new d(s.level);for(const n of r)a.messages.push(this._update(n,i,t));return await i.updateStatistics(this._connection),a}forEachAggregateWorldSpace(e){const t=this._getActiveClusterState();if(t)for(const s of t.aggregatesWorldSpace())e(s)}_getActiveClusterState(){return this._lastSubscribedLodInfo?this._cellsPerLevel.get(this._lastSubscribedLodInfo.level):null}_getOrCreateClusterState(e){if(null==e.level)throw new Error("InternalError: Level and scale must be defined");let t=this._cellsPerLevel.get(e.level);return t||(t=new x(e.level,e.scale,this._indexOptions,this._clusterRadius,this._attributeStore),this._cellsPerLevel.set(e.level,t)),t}_update(e,t,s){const i=t.createAggregateFeatures(e,this._metadata);this.events.emit("changed"),e.done=e.done||!s;const r=i.getCursor(),a=e.subscription.tile.createArcadeEvaluationOptions(this._indexOptions.arcadeContextInfo);for(;r.next();)this._attributeStore.setAttributeData(r.getDisplayId(),r,a,this._sqlOptions);return has("esri-2d-update-debug")&&console.debug(`Tile[${e.subscription.tile.id}] ClusterStrategy._update`,{done:e.done}),new p(e.subscription,i,e.done,{})}}export{I as ClusterSendState,S as ClusterStrategy};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{isSome as t}from"../../../../../core/arrayUtils.js";import e from"../../../../../core/Logger.js";import{assertIsSome as s}from"../../../../../core/maybe.js";import{isLoaded as r,load as a,execute as i}from"../../../../../geometry/operators/gx/operatorGeodeticDensify.js";import{geodeticCurveType as o}from"../../../../../geometry/operators/support/geodeticCurveType.js";import{intersectsWithMargin as n,fromValues as l,intersects as c,empty as u,expandPointInPlace as d}from"../../../../../geometry/support/aaBoundingRect.js";import{getClosestDenormalizedXToReference as h}from"../../../../../geometry/support/normalizeUtils.js";import{normalizeCentralMeridianForDisplay as p}from"../../../../../geometry/support/normalizeUtilsSync.js";import{quantizeOptimizedGeometry as m,convertToGeometry as f,convertFromPolyline as _}from"../../../../../layers/graphics/featureConversionUtils.js";import{OptimizedFeature as g}from"../../../../../layers/graphics/OptimizedFeature.js";import b from"../../../../../layers/graphics/OptimizedGeometry.js";import{internalTrackPartField as y,externalTrackLineOidPrefix as I,internalTimeReceivedField as v}from"../../../../../layers/support/streamLayerUtils.js";import{tileSize as k}from"../../../engine/webgl/definitions.js";import{AccumulatedStatistics as F}from"../aggregation/AccumulatedStatistics.js";import{ComputedAggregateField as O}from"../aggregation/ComputedAggregateField.js";import{AAggregateStrategy as j}from"./AAggregateStrategy.js";import{AppendBatch as x,ASendState as S}from"./AProcessorStrategy.js";import{FeatureTileAppendMessage as T}from"../sources/FeatureSourceMessage.js";import{createArcadeEvaluationOptions as R}from"../support/arcadeUtils.js";import{ComputedAttributeStorage as w}from"../support/ComputedAttributeStorage.js";import D from"../support/FeatureFilterEvaluator.js";import{FeatureMetadata as L}from"../support/FeatureMetadata.js";import{FeatureSetReaderIndirect as A}from"../support/FeatureSetReaderIndirect.js";import{FeatureSetReaderJSON as C}from"../support/FeatureSetReaderJSON.js";let G;const P=()=>e.getLogger("esri.views.2d.layers.features.processor.TrackStrategy"),M=32;class W{constructor(t,e,s,r,a){this.chunkIndex=t,this.featureIndex=e,this.objectId=s,this.displayId=r,this.time=a}}class z{static getOid(t){return I+t}constructor(t,e,s,r,a,i,o,n){this._schema=t,this.trackId=e,this.objectId=s,this.displayId=r,this._fields=a,this._spatialReference=i,this._metadata=o,this._isStream=n,this._maxDisplayDuration=this._schema.maxDisplayDuration>0?this._schema.maxDisplayDuration:1/0,this._maxDisplayObservationsPerTrack=this._schema.maxDisplayObservationsPerTrack>=1?this._schema.maxDisplayObservationsPerTrack:1/0,this._observationRecords=[],this._nextObservationRecords=[],this._trackLinePath=[],this._bounds=[],this._trackLineGeometry=new b}get _trackLineAttributes(){const t={...this._latestObservationFeature?.attributes,aggregateId:this.objectId,[y]:0};if(null!=this._statistics)for(const e of this._statistics.values())t[e.field.name]=e.value;return t}get _startTimeField(){return this._metadata.timeInfo?.startTimeField}get length(){return this._observationRecords.length}*observations(){yield*this._observationRecords}*previousObservations(){for(let t=0;t<this._observationRecords.length-1;t++)yield this._observationRecords[t]}get latestObservationFeature(){return this._latestObservationFeature}get latestObservationRecord(){return this._latestObservationRecord}stageObservation(t,e){this._nextObservationRecords.push(new W(t,e.getIndex(),e.getObjectId(),e.getDisplayId(),null!=this._startTimeField?e.readAttributeAsTimestamp(this._startTimeField):null))}commitObservations(t,e,r){const a=new Set(this._nextObservationRecords.map(t=>t.objectId)),i=this._observationRecords.filter(t=>!a.has(t.objectId)).map(t=>t.objectId);let o,n;switch(this._observationRecords=[],this._trackLinePath=[],this._isStream||null==this._startTimeField||this._nextObservationRecords.sort((t,e)=>{const s=t.time,r=e.time;return null!=s&&null!=r?s-r:0}),this._schema.timeField){case"startTimeField":o=this._metadata.timeInfo?.startTimeField;break;case"endTimeField":o=this._metadata.timeInfo?.endTimeField;break;case"timeReceived":o=this._isStream?v:null}n=this._isStream?r?.end??Date.now():r?.end??-1/0;const l=e.map(t=>t.reader.getCursor());let c;for(let u=this._nextObservationRecords.length-1;u>=0&&!(this._observationRecords.length>=this._maxDisplayObservationsPerTrack);u--){const t=this._nextObservationRecords[u],e=l[t.chunkIndex];s(e),e.setIndex(t.featureIndex);const r=null!=o?e.readAttributeAsTimestamp(o):null;(null!=r?n-r:0)>=this._maxDisplayDuration||(this._commitObservation(t,e),c??=t)}if(null!=c){const{chunkIndex:e,featureIndex:r}=c,a=`${c.objectId}.latest`,o=t.createDisplayIdForObjectId(a),n=l[e];s(n),n.setIndex(r);const u=new g(n.readGeometryWorldSpace(),{...n.readAttributes(),[y]:1},null,a,o);this._latestObservationFeature&&i.push(this._latestObservationFeature.objectId),this._latestObservationFeature=u,this._latestObservationRecord=c}else this._latestObservationFeature=null;return this._trackLineGeometry=Z(this._trackLinePath,this._spatialReference),this._bounds=N(this._trackLineGeometry),this._nextObservationRecords=[],i}updateStatistics(t,e){this._statistics=F.create(this._fields);const r=t.map(t=>t.reader.getCursor());for(const{chunkIndex:a,featureIndex:i}of this._observationRecords){const t=r[a];s(t),t.setIndex(i),this._statistics.insert(t,e)}}overlapsTile(t){for(const e of this._bounds)if(n(e,t.bounds,M))return!0;return!1}getLatestObservationFeatureForTile(t){if(null==this._latestObservationFeature)return null;const{objectId:e,displayId:s,geometry:r,attributes:a}=this._latestObservationFeature,i=m(r,this._metadata.geometryType,t.subscription.tile.transform)??new b,o=l(1/0,1/0,-1/0,-1/0);E(i,(t,e)=>d(o,[t,e]));if(!c(o,l(0,0,k,k)))return null;return new g(i,a,null,e,s)}getTrackLineFeatureForTile(t){const e=m(this._trackLineGeometry,"esriGeometryPolyline",t.subscription.tile.transform)??new b;return new g(e,this._trackLineAttributes,null,this.objectId,this.displayId)}getTrackLineOptimizedFeature(){return new g(this._trackLineGeometry,this._trackLineAttributes,null,this.objectId,this.displayId)}getTrackLineDisplayFeature(){const{_trackLineGeometry:t,_trackLineAttributes:e,displayId:s}=this;return{geometry:f(t,"esriGeometryPolyline",!1,!1),attributes:e,displayId:s}}_commitObservation(t,e){const s=e.readCentroidWorldSpace();let r=s?.coords[0],a=s?.coords[1];null==s&&(r=e.readXWorldSpace(),a=e.readYWorldSpace()),null!=r&&null!=a&&(this._observationRecords.unshift(t),this._trackLinePath.unshift([r,a]))}}class U extends S{constructor(t){super(t),this.done=!1}}class q extends j{static async create(t,e,s,i,o){const n=e.metadata.outSpatialReference,l=new w({spatialReference:n}),c=await Promise.all(t.fields.map(async t=>O.create(l,t))),u=t.featureFilter?await D.create({geometryType:e.metadata.geometryType,hasM:!1,hasZ:!1,timeInfo:e.metadata.timeInfo,fieldsIndex:e.metadata.fieldsIndex,spatialReference:n,filterJSON:t.featureFilter}):null;return n.isWrappable||r()||await Promise.all([import("../../../../../geometry/operators/support/apiConverter.js"),import("../../../../../geometry/operators/support/jsonConverter.js"),a()]).then(([t,e,s])=>{G={fromGeometryToGXGeometry:e.fromGeometryToGXGeometry,toGeometry:e.toGeometry,fromSpatialReference:t.fromSpatialReference}}),new q(t,e,s,n,c,u,i,o)}constructor(t,e,s,r,a,i,o,n){super(e,s,r,a,n),this._schema=t,this._featureFilter=i,this._arcadeContextInfo=o,this._tracks=new Map,this._handledChunks=new Set,this._metadata=e.metadata.weakCloneWithAdditionalFields([{name:y,alias:"trackPart",type:"esriFieldTypeSmallInteger"}]),this._trackLineMetadata=L.createFeature({geometryType:"esriGeometryPolyline",featureIdInfo:{type:"object-id",fieldName:"aggregateId"},fieldsIndex:{fields:[...this._source.metadata.fieldsIndex.fields,...this.aggregateFields,{name:y,alias:"trackPart",type:"esriFieldTypeSmallInteger"},{name:"aggregateId",alias:"aggregateId",type:"esriFieldTypeOID"}],timeZoneByFieldName:null},globalIdField:null,spatialReference:e.metadata.spatialReference,outSpatialReference:e.metadata.outSpatialReference,attributeSpatialReference:null,subtypeField:null,subtypes:null,timeInfo:e.metadata.timeInfo,timeReferenceUnknownClient:null,dateFieldsTimeZone:null,typeIdField:null,types:null,hasZ:!1,hasM:!1})}destroy(){super.destroy(),this._clear()}get _isStream(){return this._source.isStream}get enablePixelBuffering(){return!0}get isAggregate(){return!1}requiresInvalidation(){return!0}invalidate(){super.invalidate(),this._clear()}createState(t){return new U(t)}async applyOverrideUpdate(t){return P().error("Applying override to tracks is not supported"),null}displayMap(t,e,s){const r=new Map(t.map(t=>[e(t),t])),a=[];for(const i of this._tracks.values()){const t=r.get(i.objectId);if(null!=t){const e=s(i.displayId,t,i.objectId);a.push(e),r.delete(i.objectId);continue}const e=i.latestObservationFeature;if(e?.objectId){const t=r.get(e.objectId);if(null!=t){const i=s(e.displayId,t,e.objectId);a.push(i),r.delete(e.objectId);continue}}for(const o of i.observations()){const t=r.get(o.objectId);if(null!=t){const e=s(o.displayId,t,o.objectId);a.push(e),r.delete(o.objectId)}}}return a}getDisplayFeatures(t){const e=new Set(t),s=[],r=[],a=this._source.chunks().map(t=>t.reader.getCursor());for(const i of this._tracks.values()){if(e.has(i.displayId)&&r.push(i.getTrackLineDisplayFeature()),null!=i.latestObservationFeature&&e.has(i.latestObservationFeature.displayId)){const{displayId:t,chunkIndex:e,featureIndex:r}=i.latestObservationRecord,o=a[e];o.setIndex(r),s.push({displayId:t,...o.readLegacyFeatureWorldSpace()})}for(const{displayId:t,chunkIndex:r,featureIndex:o}of i.observations())if(e.has(t)){const e=a[r];e.setIndex(o),s.push({displayId:t,...e.readLegacyFeatureWorldSpace()})}}return{features:s,aggregates:[],tracks:r}}getFeatureObjectIdsForAggregate(t){for(const e of this._tracks.values())if(e.objectId===t)return Array.from(e.observations(),t=>t.objectId);return[]}async updateChunks(){0===this._handledChunks.size&&this._rebuildTracks();const t=new x;for(const e of this._sendStates.values())this._update(t,e);return t}forEachAggregateWorldSpace(t){for(const e of this._tracks.values())t(e.getTrackLineOptimizedFeature())}_clear(){for(const t of this._source.chunks())if(this._handledChunks.has(t.chunkId)){const e=t.reader.getCursor();for(;e.next();){const t=e.getObjectId();this._attributeStore.releaseDisplayIdForObjectId(t)}}this._handledChunks.clear();for(const t of this._tracks.values())this._removeTrack(t);this._tracks.clear()}_rebuildTracks(){const t=this._source.chunks();if(!t.length)return;const e=this._metadata.timeInfo?.trackIdField;if(null==e)return;const s=new Set;for(let r=0;r<t.length;r++){const a=t[r];if(this._handledChunks.has(a.chunkId))continue;this._handledChunks.add(a.chunkId);const i=a.reader.getCursor();for(;i.next();){const t=i.getObjectId();i.setDisplayId(this._attributeStore.createDisplayIdForObjectId(t));const a=i.readAttribute(e);if(null!=a&&null!=t&&(null===this._featureFilter||this._featureFilter.check(i,this._sqlOptions))){if(!this._tracks.has(a)){const t=z.getOid(a),e=this._attributeStore.createDisplayIdForObjectId(t),s=new z(this._schema,a,t,e,this.aggregateFields,this.spatialReference,this._source.metadata,this._isStream);this._tracks.set(a,s)}this._tracks.get(a).stageObservation(r,i),s.add(a)}}}for(const r of this._tracks.values())if(s.has(r.trackId)){const e=r.commitObservations(this._attributeStore,t,this._featureFilter?.timeExtent);for(const t of e)this._attributeStore.releaseDisplayIdForObjectId(t);r.updateStatistics(t,R(1,this._arcadeContextInfo))}else this._removeTrack(r)}_removeTrack(t){this._tracks.delete(t.trackId),this._attributeStore.releaseDisplayIdForObjectId(t.objectId),null!=t.latestObservationFeature&&this._attributeStore.releaseDisplayIdForObjectId(t.latestObservationFeature.objectId)}_update(e,s){if(s.done)return;s.done=!this._source.updateTracking.updating;const r=[],a=[];for(const t of this._tracks.values())if(t.length>0){if(this._schema.showLatestObservation){const e=t.getLatestObservationFeatureForTile(s);null!=e&&r.push(e)}this._schema.showTrackLine&&t.overlapsTile(s.subscription.tile)&&a.push(t.getTrackLineFeatureForTile(s))}const i=C.fromOptimizedFeatures(r,this._metadata,s.subscription.tile.transform),o=C.fromOptimizedFeatures(a,this._trackLineMetadata,s.subscription.tile.transform);let n=[];if(this._schema.showPreviousObservations){const e=this._source.chunks().map(()=>[]);for(const t of this._tracks.values())for(const{chunkIndex:s,featureIndex:r}of t.previousObservations())e[s].push(r);n=this._source.chunks().map((t,r)=>{const a=t.getTileReader(s.subscription.tile);if(null==a)return null;const i=A.from(a,e[r]);return i.setProcessorAttributes({[y]:2}),"esriGeometryPoint"!==i.geometryType&&null!=i.getInTransform()||i.setTransformForDisplay(s.subscription.tile.transform),i}).filter(t)}this.events.emit("changed");const l=s.subscription.tile.createArcadeEvaluationOptions(this._arcadeContextInfo),c=o.getCursor();for(;c.next();)this._attributeStore.setAttributeData(c.getDisplayId(),c,l,this._sqlOptions);for(const t of n){const e=t.getCursor();for(;e.next();)this._attributeStore.setAttributeData(e.getDisplayId(),e,l,this._sqlOptions)}const u=i.getCursor();for(;u.next();)this._attributeStore.setAttributeData(u.getDisplayId(),u,l,this._sqlOptions);e.messages.push(new T(s.subscription,o,!1,{}));for(const t of n)e.messages.push(new T(s.subscription,t,!1,{}));e.messages.push(new T(s.subscription,i,s.done,{}))}}function Z(t,e){if(t.length<2)return _({paths:[t]},!1,!1);if(e.isWrappable){let s=!1;for(let r=1;r<t.length;r++){const a=t[r][0],i=h(a,t[r-1][0],e);a!==i&&(t[r][0]=i,s=!0)}if(s){const s=p({paths:[t],spatialReference:e});if(null!=s)return _({paths:s.paths},!1,!1)}return _({paths:[t]},!1,!1)}const s=G.fromGeometryToGXGeometry({hasM:!1,hasZ:!1,paths:[t]}),r=G.fromSpatialReference(e);if(null!=r){const t=i(s,1e6,r,o.geodesic);if(null!=t){const e=G.toGeometry(t,r);if(null!=e&&"paths"in e)return _({paths:e.paths},!1,!1)}}return _({paths:[t]},!1,!1)}function E(t,e){const s=2,{coords:r,lengths:a}=t;if(!a.length)return void e(r[0],r[1]);let i=0;for(let o=0;o<a.length;o++){const t=a[o];let n=0,l=0;for(let a=0;a<t;a++)n+=r[s*(a+i)],l+=r[s*(a+i)+1],e(n,l);i+=t}}function N(t){const{lengths:e,coords:s}=t,r=2;if(!e.length)return[u()];const a=[];let i=0;for(let o=0;o<e.length;o++){const t=e[o],n=u();a.push(n);for(let e=0;e<t;e++){const t=s[r*(e+i)],a=s[r*(e+i)+1];d(n,[t,a])}i+=t}return a}export{q as TrackStrategy};
|
|
File without changes
|