@arcgis/core 5.0.0-next.29 → 5.0.0-next.30
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/WebScene.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{1fc31fab7c4dd18a76e1.js → 11bb437437272d8f3e2c.js} +1 -1
- package/assets/esri/core/workers/chunks/{66853ecdebfc2aa68ce7.js → 5f2cf73fb2944f82661d.js} +10 -10
- package/assets/esri/core/workers/chunks/8d9e622cec13f5cea726.js +1 -0
- package/assets/esri/core/workers/chunks/{a0529423f2039e7d9d08.js → 94dc8b0fa129f1e168c4.js} +1 -1
- package/chunks/Terrain.glsl.js +27 -27
- package/config.js +1 -1
- package/kernel.js +1 -1
- package/layers/IntegratedMesh3DTilesLayer.js +1 -1
- package/layers/graphics/sources/ParquetSource.js +1 -1
- package/layers/support/parquetUtils.js +1 -1
- package/package.json +1 -1
- package/portal/schemas/definitions.js +1 -1
- package/rest/networks/support/TraceLocation.js +1 -1
- package/support/revision.js +1 -1
- package/views/3d/layers/FlowSubView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
- package/views/3d/layers/support/FlowTileTree3DDebugger.js +1 -1
- package/views/3d/support/debugFlags.js +1 -1
- package/views/3d/support/flow/FlowSubViewTiles3D.js +1 -1
- package/views/3d/support/flow/FlowWorker.js +1 -1
- package/views/3d/support/flow/constants.js +1 -1
- package/views/3d/support/flow/loadUtils.js +1 -1
- package/views/3d/terrain/SplitLimits.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/tileUtils.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js +9 -9
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +6 -6
- package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
- package/views/3d/webgl-engine/shaders/TerrainTechniqueConfiguration.js +1 -1
- package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
- package/widgets/Legend/support/colorRampUtils.js +1 -1
- package/assets/esri/core/workers/chunks/a5305cfc36fabecfd358.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[8720],{54625:(e,t,s)=>{s.d(t,{i_:()=>r});var i=s(30524);function r(e,t,s){t=(0,i.rS)(t)?.toLowerCase(),s=(0,i.rS)(s)?.toLowerCase();const r=e.map(e=>e.toLowerCase()),a=t?e[r.indexOf(t)]:null,u=s?e[r.indexOf(s)]:null;return{longitudeFieldName:a||e[r.indexOf(n.find(e=>r.includes(e)))],latitudeFieldName:u||e[r.indexOf(o.find(e=>r.includes(e)))]}}const o=["lat","lat83","latitude","latitude83","latdecdeg","lat_dd","y","ycenter","point_y"],n=["lon","lng","lng83","long","long83","longitude","longitude83","longdecdeg","long_dd","x","xcenter","point_x"]},66344:(e,t,s)=>{s.d(t,{q:()=>a});const i=!!(0,s(44208).A)("esri-tests-disable-gpu-memory-measurements");Symbol.iterator;class r{get size(){return this._size}constructor(e=10485760){this._maxSize=e,this._db=new Map,this._size=0,this._hit=0,this._miss=0,this._users=new Map,this._sizeLimits=new Map}destroy(){this.clearAll(),this._sizeLimits.clear(),this._users.clear(),this._db.clear()}register(e){this._users.set(e.id.slice(0,-1),e)}deregister(e){this.clear(e),this._sizeLimits.delete(e),this._users.delete(e.id.slice(0,-1))}get maxSize(){return this._maxSize}set maxSize(e){this._maxSize=Math.max(e,-1),this._checkSize()}getSize(e,t){const s=this._db.get(e.id+t);return s?.size??0}put(e,t,s,r,n){t=e.id+t;const a=this._db.get(t);if(a&&(this._size-=a.size,e.size-=a.size,this._db.delete(t),a.entry!==s&&this._notifyRemove(t,a.entry,a.size,0)),r>this._maxSize)return void this._notifyRemove(t,s,r,0);if(void 0===s)return void console.warn("Refusing to cache undefined entry ");if(!r||r<0)return i||console.warn(`Refusing to cache entry with size ${r} for key ${t}`),void this._notifyRemove(t,s,0,0);const u=1+Math.max(n,-4)- -3;this._db.set(t,new o(s,r,u)),this._size+=r,e.size+=r,this._checkSize()}updateSize(e,t){t=e.id+t;const s=this._db.get(t);if(!s)return;this._size-=s.size,e.size-=s.size;let i=s.entry.usedMemory;for(;i>this._maxSize;){const e=this._notifyRemove(t,s.entry,i,1);if(!(null!=e&&e>0))return void this._db.delete(t);i=e}s.size=i,this._size+=i,e.size+=i,this._checkSize()}pop(e,t){t=e.id+t;const s=this._db.get(t);if(s)return this._size-=s.size,e.size-=s.size,this._db.delete(t),++this._hit,s.entry;++this._miss}get(e,t){t=e.id+t;const s=this._db.get(t);if(void 0!==s)return this._db.delete(t),s.lives=s.lifetime,this._db.set(t,s),++this._hit,s.entry;++this._miss}peek(e,t){const s=this._db.get(e.id+t);return s?++this._hit:++this._miss,s?.entry}get performanceInfo(){const e={Size:Math.round(this._size/1048576)+"/"+Math.round(this._maxSize/1048576)+"MB","Hit rate":Math.round(100*this._getHitRate())+"%",Entries:this._db.size.toString()},t={},s=new Array;this._db.forEach((e,i)=>{const r=e.lifetime;s[r]=(s[r]||0)+e.size,this._users.forEach(s=>{const{id:r,name:o}=s;if(i.startsWith(r)){const s=t[o]||0;t[o]=s+e.size}})});const i={};this._users.forEach(e=>{const s=e.name;if("hitRate"in e&&"number"==typeof e.hitRate&&!isNaN(e.hitRate)&&e.hitRate>0){const r=t[s]||0;t[s]=r,i[s]=Math.round(100*e.hitRate)+"%"}else i[s]="0%"});const r=Object.keys(t);r.sort((e,s)=>t[s]-t[e]),r.forEach(s=>e[s]=Math.round(t[s]/2**20)+"MB / "+i[s]);for(let t=s.length-1;t>=0;--t){const i=s[t];i&&(e["Priority "+(t+-3-1)]=Math.round(i/this._size*100)+"%")}return e}resetStats(){this._hit=this._miss=0,this._users.forEach(e=>e.resetHitRate())}clear(e){const t=e.id;this._db.forEach((e,s)=>{s.startsWith(t)&&(this._size-=e.size,this._db.delete(s),this._notifyRemove(s,e.entry,e.size,0))}),e.size=0}clearAll(){this._db.forEach((e,t)=>this._notifyRemove(t,e.entry,e.size,0)),this._users.forEach(e=>e.size=0),this._size=0,this._db.clear()}*values(e){for(const[t,s]of this._db)t.startsWith(e.id)&&(yield s.entry)}_getHitRate(){return this._hit/(this._hit+this._miss)}_notifyRemove(e,t,s,i){const r=this._users.get(e.split(n)[0])?.removeFunc,o=r?.(t,i,s);return"number"==typeof o?o:null}_checkSize(){this._sizeLimits.forEach((e,t)=>this._checkSizeLimits(e,t)),this._checkSizeLimits(this.maxSize)}setMaxSize(e,t){null==t||t<=0?this._sizeLimits.delete(e):this._sizeLimits.set(e,t)}_checkSizeLimits(e,t){const s=t??this;if(s.size<=e)return;const i=t?.id;let r=!0;for(;r;){r=!1;for(const[o,a]of this._db)if(0===a.lifetime&&(!i||o.startsWith(i))){const i=t??this._users.get(o.split(n)[0]);if(this._purgeItem(o,a,i),s.size<=.9*e)return;r||=this._db.has(o)}}for(const[r,o]of this._db)if(!i||r.startsWith(i)){const i=t??this._users.get(r.split(n)[0]);if(this._purgeItem(r,o,i),s.size<=.9*e)return}}_purgeItem(e,t,s){if(this._db.delete(e),t.lives<=1){this._size-=t.size,s&&(s.size-=t.size);const i=this._notifyRemove(e,t.entry,t.size,1);null!=i&&i>0&&(this._size+=i,s&&(s.size+=i),t.lives=t.lifetime,t.size=i,this._db.set(e,t))}else--t.lives,this._db.set(e,t)}}new r(0);class o{constructor(e,t,s){this.entry=e,this.size=t,this.lifetime=s,this.lives=s}}const n=":";class a{constructor(e,t){this.removeFunc=t,this._storage=new r,this.id="",this.name="",this.size=0,this._storage.maxSize=e,this._storage.register(this)}destroy(){this._storage.deregister(this),this._storage.destroy(),this._storage=null}put(e,t,s=1){this._storage.put(this,e,t,s,1)}pop(e){return this._storage.pop(this,e)}get(e){return this._storage.get(this,e)}clear(){this._storage.clearAll()}get maxSize(){return this._storage.maxSize}set maxSize(e){this._storage.maxSize=e}resetHitRate(){}}},68716:(e,t,s)=>{s.r(t),s.d(t,{default:()=>G});var i=s(31635),r=s(7762),o=s(21818),n=s(49186),a=s(44208),u=s(53966),l=s(563),c=s(16930),p=s(70328),d=s(56390),f=s(8384),h=s(64714),y=s(20437),m=s(95466),g=s(30524),_=s(25482),S=s(91429);let w=class extends _.o{constructor(e){super(e),this.type="location",this.latitudeFieldName=null,this.longitudeFieldName=null}};(0,i.Cg)([(0,S.MZ)({type:["location"],readOnly:!0,json:{write:!0}})],w.prototype,"type",void 0),(0,i.Cg)([(0,S.MZ)({json:{write:!0}})],w.prototype,"latitudeFieldName",void 0),(0,i.Cg)([(0,S.MZ)({json:{write:!0}})],w.prototype,"longitudeFieldName",void 0),w=(0,i.Cg)([(0,S.$K)("esri.layers.support.ParquetEncodingLocation")],w);let z=class extends _.o{constructor(e){super(e),this.type="wkb",this.primaryFieldName=null}};function b(e){switch(e.type){case"wkb":return z.fromJSON(e);case"location":return w.fromJSON(e)}}(0,i.Cg)([(0,S.MZ)({type:["wkb"],readOnly:!0,json:{write:!0}})],z.prototype,"type",void 0),(0,i.Cg)([(0,S.MZ)({json:{write:!0}})],z.prototype,"orientation",void 0),(0,i.Cg)([(0,S.MZ)({json:{write:!0}})],z.prototype,"primaryFieldName",void 0),z=(0,i.Cg)([(0,S.$K)("esri.layers.support.ParquetEncodingWkb")],z);var x=s(66552),R=s(54625),I=s(70581);const v=new x.J({esriGeometryPoint:"point",esriGeometryPolygon:"polygon",esriGeometryPolyline:"polyline",esriGeometryMultipoint:"multipoint"});function F(e){return v.toJSON(e)}function C(e){return v.fromJSON(e)}function A(e){switch(e){case"Point":return"point";case"Polygon":case"MultiPolygon":return"polygon";case"LineString":return"polyline";case"MultiPoint":return"multipoint";default:return null}}var O=s(30661),q=s(28923),M=s(44320),P=s(35258),k=s(16630);const N=new O.Z,E=8e3,T="__OBJECTID";class G{constructor(){this._fileInfos=new Map,this._queue=new l.QueueProcessor({concurrency:4,process:(e,t)=>this._executeQuery(e,t)})}async load(e){const t=e.spatialReference?c.A.fromJSON(e.spatialReference):void 0;if(t&&!t.isWGS84&&!t.isWebMercator)throw new n.A("parquet:unsupported-projection","Only WGS84 and Web Mercator are supported");const s=await async function(e,t={}){if(e.geometryType&&e.spatialReference&&e.encoding&&e.fields)return e;if(e.urls.length<1)throw new n.A("parquet:bad-input","At least one url must be specified",e);const s=await(0,I.DV)(e.urls.getItemAt(0),{getCustomParameters:()=>t.customParameters}),i=(0,I.hD)(s),r={...e,file:s};null==r.fields&&(r.fields=s.fields().map(e=>y.A.fromJSON({name:e.name,type:e.type}))),null==r.encoding&&(r.encoding=function(e,t){if(null!=e){const t=e.primary_column,s=e.columns[t];return new z({primaryFieldName:t,orientation:s.orientation??null})}const s=(0,R.i_)(t.map(e=>e.name));return s.latitudeFieldName&&s.longitudeFieldName?new w({latitudeFieldName:s.latitudeFieldName,longitudeFieldName:s.longitudeFieldName}):null}(i,r.fields));const o=(0,I.Hj)(s);if(o)switch(o.mode){case"z":r.displayOptimization={mode:"z"};break;case"xz":{const e=o.multiscale;if(!e)throw new n.A("bad-format","XZ display optimization requires multiscale geometries");r.displayOptimization={mode:"xz",multiscale:e};break}}if(!r.encoding)return r;switch(r.encoding.type){case"location":null==r.spatialReference&&(r.spatialReference=c.A.WGS84),null==r.geometryType&&(r.geometryType="point");break;case"wkb":{if(!i)return r;const e=i.primary_column,t=i.columns[e];if(r.geometryType||(r.geometryType=function(e){const{geometry_types:t}=e,s=new Set;for(const e of t){const t=A(e);t&&s.add(t)}if(s.size>1)throw new n.A("unsupported","Parquet mixed geometry types are not support",{geometryTypes:s});return 1===s.size?s.values().next().value:void 0}(t)),r.spatialReference||(r.spatialReference=function(e){const t=e.crs?.id?.code;return t&&"number"==typeof t?new c.A({wkid:t}):void 0}(t)),r.fields)for(const e of Object.keys(i.columns))r.fields=r.fields.filter(t=>t.name!==e)}}return r}({urls:new r.A(e.urls),fields:e.fields?.map(e=>y.A.fromJSON(e)),encoding:e.encoding?b(e.encoding):e.encoding,geometryType:e.geometryType?C(e.geometryType):null,spatialReference:t},{customParameters:e.customParameters});let o;if(s.geometryType&&s.encoding){if(!s.spatialReference)throw new n.A("parquet:unsupported","SpatialReference must be defined");if(!s.spatialReference.isGeographic&&!s.spatialReference.isWebMercator)throw new n.A("parquet:unsupported-projection","Only WGS84 and Web Mercator are supported");s.spatialReference.isGeographic&&!s.spatialReference.isWGS84&&(u.A.getLogger("parquet:unsupported-projection").warn("Found a geographic projection that is not WGS84. Handling as WGS84.",{spatialReference:s.spatialReference}),s.spatialReference=c.A.WGS84),o={geometryType:F(s.geometryType),spatialReference:s.spatialReference.toJSON(),encoding:s.encoding.toJSON(),displayOptimization:s.displayOptimization}}this.setCustomParameters(e.customParameters),this._geometryInfo=o;const a=e.urls;for(const e of a){const t=await(0,I.DV)(e,{geometryInfo:o,outSpatialReference:null,getCustomParameters:()=>this._customParameters});this._fileInfos.set(e,{index:this._fileInfos.size,file:t})}this._capabilities=B(await this.getFileStatistics());const l=this._fileInfos.values().next().value?.file;if(!l)return{layerDefinition:{},capabilities:B(null)};const{fields:d}=s;if(null==d)throw new n.A("parquet-layer:missing-metadata","Unable to create parquet source: cannot infer fields",d);d.push(new y.A({name:T,type:"oid",alias:T}));const f={fields:d.map(e=>({...e.toJSON(),column:l.columnForFieldName(e.name)})),timeZoneByFieldName:null},g=m.A.fromJSON(f);this._fieldsIndex=g;const _=F(s.geometryType??"point");if(this._metadata=P.i.createFeature({fieldsIndex:f,geometryType:_,featureIdInfo:{type:"object-id",fieldName:"rowId"},subtypes:null,subtypeField:null,types:null,typeIdField:null,globalIdField:null,spatialReference:s.spatialReference,outSpatialReference:null,timeInfo:null,timeReferenceUnknownClient:null,dateFieldsTimeZone:null}),this._queryEngineParams={fieldsIndex:this._metadata.fieldsIndex,geometryType:o?.geometryType??"esriGeometryPoint",featureIdInfo:{type:"object-id",fieldName:"rowId"},hasM:!1,hasZ:!1,spatialReference:o?.spatialReference??{wkid:4326},aggregateAdapter:null,timeInfo:null,definitionExpression:null},s.spatialReference&&(this._fullExtent=function(e,t){const s=(0,p.hZ)((0,p.vt)(),p.qv);for(const t of e){const e=(0,I.hD)(t.file);if(!e)return null;const i=e.columns[e.primary_column];if(!i.bbox)return null;const r=j(i.bbox);(0,p.RF)(s,r)}return{xmin:s[0],ymin:s[1],xmax:s[3],ymax:s[4],spatialReference:t}}(this._fileInfos.values(),s.spatialReference.toJSON())),null==this._fullExtent&&"location"===s.encoding?.type){const{latitudeFieldName:e,longitudeFieldName:t}=s.encoding,r=this._fieldsIndex.get(e)?.column,o=this._fieldsIndex.get(t)?.column,n=(0,p.hZ)((0,p.vt)(),p.qv);for(const e of this._fileInfos.values())for(const t of e.file.rowGroups()){const e={stack:[],error:void 0,hasError:!1};try{const s=(0,i.mS)(e,t.columnDescriptorForAttribute(r),!1),a=(0,i.mS)(e,t.columnDescriptorForAttribute(o),!1),u=[a.minValue(),s.minValue(),a.maxValue(),s.maxValue()];(0,p.DC)(n,u),t.free()}catch(t){e.error=t,e.hasError=!0}finally{(0,i.hk)(e)}}this._fullExtent={xmin:n[0],ymin:n[1],xmax:n[3],ymax:n[4],spatialReference:s.spatialReference?.toJSON()}}return{capabilities:this._capabilities,layerDefinition:{fields:s.fields?.map(e=>e.toJSON()),drawingInfo:(0,h.F0)(_),extent:this._fullExtent??void 0,geometryType:_,encoding:s.encoding?.toJSON(),displayOptimization:s.displayOptimization}}}destroy(){for(const e of this._fileInfos.values())e.file.free();this._fileInfos.clear(),this._queue.destroy()}setCustomParameters(e){this._customParameters=e}getFileStatistics(){if(!this._fileInfos.size)return null;const e=Array.from(this._fileInfos.values()).reduce((e,t)=>e+t.file.byteLength(),0);return{featureCount:this._getFeatureCount(),byteLength:e}}async updateFiles(e){const t=new Set(e);for(const[e,s]of this._fileInfos.entries())t.has(e)?t.delete(e):(s.file.free(),this._fileInfos.delete(e));for(const e of t){const t=await(0,I.DV)(e,{geometryInfo:this._geometryInfo,outSpatialReference:null,getCustomParameters:()=>this._customParameters});this._fileInfos.set(e,{index:this._fileInfos.size,file:t})}}async queryFeatures(e,t){return this._validateQuery(e),function(e){return!!(e.objectIds?.length||e.outStatistics||e.orderByFields?.length||e.returnDistinctValues)}(e)||(e.resultRecordCount=e.resultRecordCount?Math.min(e.resultRecordCount,8e3):8e3,e.resultOffset=e.resultOffset??0),(e.outStatistics||e.returnDistinctValues)&&delete e.returnGeometry,(await this._enqueueQuery(e,t)).createQueryResponse()}async queryFeatureCount(e,t){return this._validateQuery(e),Q(e)?(delete e.outFields,delete e.returnGeometry,(await this._enqueueQuery(e,t)).createQueryResponseForCount()):this._getFeatureCount()}async queryObjectIds(e,t){return this._validateQuery(e),Q(e)?(e.resultRecordCount=e.resultRecordCount?Math.min(e.resultRecordCount,8e3):8e3,e.resultOffset=e.resultOffset??0,delete e.returnGeometry,delete e.outFields,(await this._enqueueQuery(e,t)).items.map(e=>e.getObjectId())):Array.from({length:this._getFeatureCount()},(e,t)=>t)}async queryExtent(e,t){if(this._validateQuery(e),this._fullExtent&&!Q(e))return{count:this._getFeatureCount(),extent:this._fullExtent};const s=(0,o.zI)(this._metadata.spatialReference);e.returnGeometry=!0,delete e.outFields;const i=(0,p.hZ)((0,p.vt)(),p.qv),r=(0,p.vt)(),n=await this._enqueueQuery(e,t);let a=0;for(const e of n.items)e.getBounds(r)&&((0,p.RF)(i,r),a+=1);return{count:a,extent:(0,d.Wc)(i,s,e.outSR?(0,o.zI)(e.outSR):s,s,!1)}}_getFeatureCount(){return Array.from(this._fileInfos.values()).reduce((e,t)=>e+t.file.numRows(),0)}_validateQuery(e){if(!this._capabilities.query.supportsStatistics&&e.outStatistics)throw new n.A("parquet:unsupported","Statistics queries are not supported",{query:e});if(!this._capabilities.query.supportsOrderBy&&e.orderByFields?.length)throw new n.A("parquet:unsupported","Queries using orderBy are not supported",{query:e});if(!this._capabilities.query.supportsDistinct&&e.returnDistinctValues)throw new n.A("parquet:unsupported","Queries using returnDistinctValues are not supported",{query:e})}async*_fetchChunks(e,t){for(const s of this._fileInfos.values()){const i=s.file.numRows(),r=Math.ceil(i/E);for(let i=0;i<r;i++){const r=i*E,o=await s.file.readChunk(r,E,e.fields,e.returnGeometry,t);for(const e of o){const t=new k.s(this._metadata,this._fieldsIndex,e,0,s.index),i=D([new q.j(t,null,0,!1)],this._queryEngineParams);yield i}}}}_enqueueQuery(e,t){return this._queue.push(e,t)}async _executeQuery(e,t){const s=await this._getReadParams(e);if(e.objectIds?.length)for(const i of this._fileInfos.values()){const r=[],o=D((await i.file.readChunksByRowId(new Uint32Array(e.objectIds),s.fields,s.returnGeometry,t)).map((e,t)=>new k.s(this._metadata,this._fieldsIndex,e,t,i.index)).map((e,t)=>new q.j(e,null,t,!1)),this._queryEngineParams),n=await o.executeQueryForOpaqueFeatures(e,t);for(const e of n)r.push(e);return new f.G(r,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,objectIdField:"rowId",hasM:!1,hasZ:!1,featureAdapter:N})}let i=e.resultRecordCount??this._getFeatureCount(),r=e.resultOffset??0;delete e.resultRecordCount,delete e.resultOffset;const o=[];for await(const n of this._fetchChunks(s,t)){const s=await n.executeQueryForOpaqueFeatures(e,t);if(s.length>r){const t=s.slice(r,Math.min(r+i,s.length));for(const e of t)o.push(e);if(r=0,i-=t.length,0===i)return new f.G(o,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,objectIdField:"rowId",hasM:!1,hasZ:!1,featureAdapter:N})}else r-=s.length}return new f.G(o,e,{fieldsIndex:this._fieldsIndex,geometryType:this._metadata.geometryType,spatialReference:this._queryEngineParams.spatialReference,objectIdField:"rowId",hasM:!1,hasZ:!1,featureAdapter:N})}async _getReadParams(e){const t=new Set;if(e.where&&await(0,g.hz)(t,this._fieldsIndex,e.where),e.outStatistics)for(const s of e.outStatistics)null!=s.onStatisticField&&t.add(s.onStatisticField);if(e.outFields)for(const s of e.outFields)t.add(s);return{fields:this._getAttributeIds(Array.from(t)),returnGeometry:!!e.returnGeometry||!!e.geometry}}_getAttributeIds(e){if(null==e)return new Uint32Array;if(e.includes("*"))return new Uint32Array(this._fieldsIndex.fields.map(e=>e.column).filter(e=>null!=e));const t=[];for(const s of e){const e=this._fieldsIndex.get(s);if(null==e)throw new n.A("unknown-field",`Field ${s} does not exist`);null==e.column||t.push(e.column)}return new Uint32Array(t)}}function Q(e){return Object.keys(e).some(e=>function(e){switch(e){case"resultOffset":case"resultRecordCount":case"aggregateIds":case"distance":case"gdbVersion":case"geometry":case"having":case"timeExtent":case"where":case"objectIds":case"historicMoment":return!0;default:return!1}}(e))}function D(e,t){const s=new M.I;for(const t of e)s.insert(t);return new d.do({...t,featureStore:s})}function j(e){switch(e.length){case 4:return(0,p.Jt)((0,p.vt)(),e);case 6:return e;default:throw new n.A("parquet:protocol-violation","Invalid Geoparquet file. BoundingBox size must be 4 or 6.",{bbox:e})}}function B(e){const t=e?.featureCount;let s=!1;return null!=t&&t<(0,a.A)("parquetlayer-full-query-feature-count")&&(s=!0),{analytics:{supportsCacheHint:!1},attachment:null,data:{isVersioned:!1,isBranchVersioned:!1,supportsAttachment:!1,supportsM:!1,supportsZ:!1},metadata:{supportsAdvancedFieldProperties:!1},operations:{supportsCalculate:!1,supportsTruncate:!1,supportsValidateSql:!1,supportsAdd:!1,supportsDelete:!1,supportsEditing:!1,supportsChangeTracking:!1,supportsQuery:!0,supportsQueryBins:!1,supportsQueryPivot:!1,supportsQueryAnalytics:!1,supportsQueryAttachments:!1,supportsQueryTopFeatures:!1,supportsResizeAttachments:!1,supportsSync:!1,supportsUpdate:!1,supportsExceedsLimitStatistics:!1,supportsAsyncConvert3D:!1},query:{maxRecordCount:8e3,maxRecordCountFactor:void 0,maxUniqueIDCount:void 0,standardMaxRecordCount:void 0,supportsCacheHint:!1,supportsCentroid:!0,supportsCentroidOnDegeneratedQuantizedGeometry:!1,supportsCurrentUser:!1,supportsDegeneratedQuantizedGeometry:!1,supportsDisjointSpatialRelationship:!1,supportsDistance:!1,supportsDistinct:s,supportsExtent:!1,supportsFormatPBF:!1,supportsGeometryProperties:!1,supportsHavingClause:!1,supportsHistoricMoment:!1,supportsMaxRecordCountFactor:!1,supportsOrderBy:s,supportsPagination:!0,supportsPaginationOnAggregatedQueries:!1,supportsPercentileStatistics:!1,supportsQuantization:!0,supportsQuantizationEditMode:!1,supportsQueryByAnonymous:!1,supportsQueryByOthers:!1,supportsQueryGeometry:!1,supportsResultType:!1,supportsReturnMesh:!1,supportsStandardizedQueriesOnly:!1,supportsTopFeaturesQuery:!1,supportsStatistics:s,supportsSpatialAggregationStatistics:!1,supportedSpatialAggregationStatistics:{envelope:!1,centroid:!1,convexHull:!1},supportsDefaultSpatialReference:!1,supportsFullTextSearch:!1,supportsCompactGeometry:!1,supportsSqlExpression:!1,supportsTrueCurve:!1,tileMaxRecordCount:void 0},queryAttributeBins:{supportsDate:!1,supportsFixedInterval:!1,supportsAutoInterval:!1,supportsFixedBoundaries:!1,supportsStackBy:!1,supportsSplitBy:!1,supportsSnapToData:!1,supportsReturnFullIntervalBin:!1,supportsFirstDayOfWeek:!1,supportsNormalization:!1},queryRelated:{supportsCount:!1,supportsOrderBy:!1,supportsPagination:!1,supportsCacheHint:!1},queryTopFeatures:{supportsCacheHint:!1},editing:{supportsDeleteByAnonymous:!1,supportsDeleteByOthers:!1,supportsGeometryUpdate:!1,supportsGlobalId:!1,supportsReturnServiceEditsInSourceSpatialReference:!1,supportsRollbackOnFailure:!1,supportsUpdateByAnonymous:!1,supportsUpdateByOthers:!1,supportsUploadWithItemId:!1,supportsUpdateWithoutM:!1,supportsAsyncApplyEdits:!1,zDefault:void 0}}}},69540:(e,t,s)=>{s.d(t,{OU:()=>c,Pw:()=>p});var i=s(31635),r=s(69622),o=(s(44208),s(4718)),n=(s(53966),s(97768)),a=s(88620),u=s(64108);const l=Symbol("ClonableMixin"),c=e=>{var t;const s=e;let r=class extends s{constructor(){super(...arguments),this[t]=!0}static{t=l}clone(e){const t=(0,a.oY)(this);(0,n.Lw)(t,"unable to clone instance of non-accessor class");const s=t.metadata,i=t.store,r={},u=new Map;for(const t in s){const n=s[t],a=i?.originOf(t),l=n.clonable;if(n.readOnly||!1===l||7!==a&&0!==a&&5!==a&&4!==a)continue;const c=this[t];let p=null;if("function"==typeof l)p=l(c,e);else if("reference"===l)p=c;else if(p=(0,o.TU)(c,e),null!=c&&null==p)continue;0===a?u.set(t,p):r[t]=p}const l=new(0,Object.getPrototypeOf(this).constructor)(r);if(u.size){const e=(0,a.oY)(l)?.store;if(e)for(const[t,s]of u)e.set(t,s,0)}return l}};return r=(0,i.Cg)([(0,u.$)("esri.core.Clonable")],r),r},p=c(r.A)},93470:(e,t,s)=>{s.d(t,{Cb:()=>o,HW:()=>c,JR:()=>r,JZ:()=>u,WR:()=>a,b6:()=>p,fT:()=>i,nC:()=>l,yM:()=>n});const i=[252,146,31,255],r=[153,153,153,255],o={type:"esriSMS",style:"esriSMSCircle",size:6,color:i,outline:{type:"esriSLS",style:"esriSLSSolid",width:.75,color:[153,153,153,255]}},n={type:"esriSLS",style:"esriSLSSolid",width:.75,color:i},a={type:"esriSFS",style:"esriSFSSolid",color:[252,146,31,196],outline:{type:"esriSLS",style:"esriSLSSolid",width:.75,color:[255,255,255,191]}},u={type:"esriTS",color:[255,255,255,255],font:{family:"arial-unicode-ms",size:10,weight:"bold"},horizontalAlignment:"center",kerning:!0,haloColor:[0,0,0,255],haloSize:1,rotated:!1,text:"",xoffset:0,yoffset:0,angle:0},l={type:"esriSMS",style:"esriSMSCircle",color:[0,0,0,255],outline:null,size:10.5},c={type:"esriSLS",style:"esriSLSSolid",color:[0,0,0,255],width:1.5},p={type:"esriSFS",style:"esriSFSSolid",color:[0,0,0,255],outline:null}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[5007],{4095:(t,e,n)=>{n.d(e,{CW:()=>u,DE:()=>f,S1:()=>p});var r=n(44208),o=n(53966),s=n(34727),i=n(74887),l=n(87811);n(5443),n(21325);const a=()=>o.A.getLogger("esri.views.2d.engine.flow.dataUtils"),c=10;async function u(t,e,n,o){const s=performance.now(),u=f(e,n),h=performance.now(),d=p(e,u,n.width,n.height),m=performance.now(),w=function(t){const e=new l.A,n=t.reduce((t,e)=>t+e.vertices.length,0),r=new Float32Array(4*n),o=new Array(t.length);let s=0,i=0;for(const{vertices:n}of t){const t=s;for(const t of n)r[4*s]=t.x,r[4*s+1]=t.y,r[4*s+2]=t.t,r[4*s+3]=t.speed,s++;o[i++]={startVertex:t,numberOfVertices:n.length,totalTime:n[n.length-1].t,timeSeed:e.getFloat()}}return{lineVertices:r,lineDescriptors:o}}(d),g=performance.now(),y="Streamlines"===t?function(t,e){const{lineVertices:n,lineDescriptors:r}=t;let o=0,s=0;for(const t of r)o+=2*t.numberOfVertices,s+=6*(t.numberOfVertices-1);const i=new Float32Array(9*o),l=new Uint32Array(s);let a=0,c=0;function u(){l[c++]=a-2,l[c++]=a,l[c++]=a-1,l[c++]=a,l[c++]=a+1,l[c++]=a-1}function f(t,e,n,r,o,s,l,c){const u=9*a;let f=0;i[u+f++]=t,i[u+f++]=e,i[u+f++]=1,i[u+f++]=n,i[u+f++]=s,i[u+f++]=l,i[u+f++]=r/2,i[u+f++]=o/2,i[u+f++]=c,a++,i[u+f++]=t,i[u+f++]=e,i[u+f++]=-1,i[u+f++]=n,i[u+f++]=s,i[u+f++]=l,i[u+f++]=-r/2,i[u+f++]=-o/2,i[u+f++]=c,a++}for(const t of r){const{totalTime:r,timeSeed:o}=t;let s=null,i=null,l=null,a=null,c=null,h=null;for(let d=0;d<t.numberOfVertices;d++){const p=n[4*(t.startVertex+d)],m=n[4*(t.startVertex+d)+1],w=n[4*(t.startVertex+d)+2],g=n[4*(t.startVertex+d)+3];let y=null,M=null,v=null,x=null;if(d>0){y=p-s,M=m-i;const t=Math.sqrt(y*y+M*M);if(y/=t,M/=t,d>1){let t=y+c,n=M+h;const r=Math.sqrt(t*t+n*n);t/=r,n/=r;const o=Math.min(1/(t*y+n*M),e);t*=o,n*=o,v=-n,x=t}else v=-M,x=y;null!==v&&null!==x&&(f(s,i,l,v,x,r,o,g),u())}s=p,i=m,l=w,c=y,h=M,a=g}f(s,i,l,-h,c,r,o,a)}return{vertexData:i,indexData:l}}(w,c):function(t){const{lineVertices:e,lineDescriptors:n}=t;let r=0,o=0;for(const t of n){const e=t.numberOfVertices-1;r+=4*e*2,o+=6*e*2}const s=new Float32Array(16*r),i=new Uint32Array(o);let l,a,c,u,f,h,d,p,m,w,g,y,M,v,x=0,S=0;function b(){i[S++]=x-8,i[S++]=x-7,i[S++]=x-6,i[S++]=x-7,i[S++]=x-5,i[S++]=x-6,i[S++]=x-4,i[S++]=x-3,i[S++]=x-2,i[S++]=x-3,i[S++]=x-1,i[S++]=x-2}function D(t,e,n,r,o,i,l,a,c,u,f,h,d,p){const m=16*x;let w=0;for(const g of[1,2])for(const y of[1,2,3,4])s[m+w++]=t,s[m+w++]=e,s[m+w++]=n,s[m+w++]=r,s[m+w++]=l,s[m+w++]=a,s[m+w++]=c,s[m+w++]=u,s[m+w++]=g,s[m+w++]=y,s[m+w++]=d,s[m+w++]=p,s[m+w++]=o/2,s[m+w++]=i/2,s[m+w++]=f/2,s[m+w++]=h/2,x++}function A(t,e){let n=m+g,r=w+y;const o=Math.sqrt(n*n+r*r);n/=o,r/=o;const s=m*n+w*r;n/=s,r/=s;let i=g+M,x=y+v;const S=Math.sqrt(i*i+x*x);i/=S,x/=S;const A=g*i+y*x;i/=A,x/=A,D(l,a,c,u,-r,n,f,h,d,p,-x,i,t,e),b()}function E(t,e,n,r,o,s){if(m=g,w=y,g=M,y=v,null==m&&null==w&&(m=g,w=y),null!=f&&null!=h){M=t-f,v=e-h;const n=Math.sqrt(M*M+v*v);M/=n,v/=n}null!=m&&null!=w&&A(o,s),l=f,a=h,c=d,u=p,f=t,h=e,d=n,p=r}function F(t,e){m=g,w=y,g=M,y=v,null==m&&null==w&&(m=g,w=y),null!=m&&null!=w&&A(t,e)}for(const t of n){l=null,a=null,c=null,u=null,f=null,h=null,d=null,p=null,m=null,w=null,g=null,y=null,M=null,v=null;const{totalTime:n,timeSeed:r}=t;for(let o=0;o<t.numberOfVertices;o++)E(e[4*(t.startVertex+o)],e[4*(t.startVertex+o)+1],e[4*(t.startVertex+o)+2],e[4*(t.startVertex+o)+3],n,r);F(n,r)}return{vertexData:s,indexData:i}}(w),M=performance.now();return(0,r.A)("esri-2d-profiler")&&(a().info("I.1","_createFlowFieldFromData (ms)",Math.round(h-s)),a().info("I.2","_getStreamlines (ms)",Math.round(m-h)),a().info("I.3","createAnimatedLinesData (ms)",Math.round(g-m)),a().info("I.4","create{Streamlines|Particles}Mesh (ms)",Math.round(M-g)),a().info("I.5","createFlowMesh (ms)",Math.round(M-s)),a().info("I.6","Mesh size (bytes)",y.vertexData.buffer.byteLength+y.indexData.buffer.byteLength)),await Promise.resolve(),(0,i.Te)(o),y}function f(t,e){const n=function(t,e,n,r){if(0===r)return t;const o=Math.round(3*r),s=new Array(2*o+1);let i=0;for(let t=-o;t<=o;t++){const e=Math.exp(-t*t/(r*r));s[t+o]=e,i+=e}for(let t=-o;t<=o;t++)s[t+o]/=i;const l=new Float32Array(t.length);for(let r=0;r<n;r++)for(let n=0;n<e;n++){let i=0,a=0;for(let l=-o;l<=o;l++){if(n+l<0||n+l>=e)continue;const c=s[l+o];i+=c*t[2*(r*e+(n+l))],a+=c*t[2*(r*e+(n+l))+1]}l[2*(r*e+n)]=i,l[2*(r*e+n)+1]=a}const a=new Float32Array(t.length);for(let t=0;t<e;t++)for(let r=0;r<n;r++){let i=0,c=0;for(let a=-o;a<=o;a++){if(r+a<0||r+a>=n)continue;const u=s[a+o];i+=u*l[2*((r+a)*e+t)],c+=u*l[2*((r+a)*e+t)+1]}a[2*(r*e+t)]=i,a[2*(r*e+t)+1]=c}return a}(e.data,e.width,e.height,t.smoothing);return t.interpolate?(t,r)=>{const o=Math.floor(t),s=Math.floor(r);if(o<0||o>=e.width)return[0,0];if(s<0||s>=e.height)return[0,0];const i=t-o,l=r-s,a=o,c=s,u=o<e.width-1?o+1:o,f=s<e.height-1?s+1:s,h=n[2*(c*e.width+a)],d=n[2*(c*e.width+u)],p=n[2*(f*e.width+a)],m=n[2*(f*e.width+u)],w=n[2*(c*e.width+a)+1],g=n[2*(c*e.width+u)+1];return[(h*(1-l)+p*l)*(1-i)+(d*(1-l)+m*l)*i,(w*(1-l)+n[2*(f*e.width+a)+1]*l)*(1-i)+(g*(1-l)+n[2*(f*e.width+u)+1]*l)*i]}:(t,r)=>{const o=Math.round(t),s=Math.round(r);return o<0||o>=e.width||s<0||s>=e.height?[0,0]:[n[2*(s*e.width+o)],n[2*(s*e.width+o)+1]]}}function h(t,e,n,r,o,i,l,a){const c=[],{raster:u,width:f,height:h,resolutionFactor:d}=a;let p=r,m=o,w=0,[g,y]=n(p,m);g*=e.velocityScale,y*=e.velocityScale;const M=Math.sqrt(g*g+y*y);let v,x;c.push({x:p,y:m,t:w,speed:M});for(let r=0;r<e.verticesPerLine;r++){let[r,o]=n(p,m);r*=e.velocityScale,o*=e.velocityScale;const a=Math.sqrt(r*r+o*o);if(a<e.minSpeedThreshold)return c;const g=t*r/a,y=t*o/a;if(p+=g*e.segmentLength,m+=y*e.segmentLength,e.wrapAround&&(p=(0,s.OS)(p,i[0])),w+=t*e.segmentLength/a,Math.acos(g*v+y*x)>e.maxTurnAngle)return c;if(e.collisions){let t=Math.round(p*d);const n=Math.round(m*d);if(e.wrapAround&&(t=(0,s.OS)(t,f)),t<0||t>f-1||n<0||n>h-1)return c;const r=u[n*f+t];if(-1!==r&&r!==l)return c;u[n*f+t]=l}c.push({x:p,y:m,t:w,speed:a}),v=g,x=y}return c}function d(t,e,n,r,o,s,i,l){const a=Math.round((.2+.6*i.getFloat())*t.verticesPerLine),c=t.verticesPerLine-a,u=h(-1,{...t,verticesPerLine:c},e,n,r,o,s,l),f=h(1,{...t,verticesPerLine:a},e,n,r,o,s,l),d=u.reverse();return d.splice(-1,1),d.concat(f)}function p(t,e,n,r,o={positions:[]}){if(t.density<=0)return[];const{positions:s}=o,i=[],a=new l.A,c=1/Math.max(t.lineCollisionWidth,1),u=Math.round(n*c),f=Math.round(r*c),p=new Int32Array(u*f);for(let t=0;t<p.length;t++)p[t]=-1;const m={raster:p,width:u,height:f,resolutionFactor:c},w={},g=t.lineSpacing/Math.sqrt(t.density),y=Math.floor(r/g),M=Math.floor(n/g);for(let t=0;t<y;t++){const e=t*g;for(let n=0;n<M;n++){const r=n*g;w[`${n}-${t}`]={x:r,y:e,positions:[]}}}for(const{x:t,y:e}of s){const n=w[`${Math.floor(t/g)}-${Math.floor(e/g)}`];n&&n.positions.push([t,e])}const v=[];for(const t in w){const e=w[t];if(0===e.positions.length)v.push({x:e.x+g/2,y:e.y+g/2,sort:.66+.33*a.getFloat(),stage:0});else{const[t]=e.positions.splice(0,1);v.push({x:t[0],y:t[1],sort:.33*a.getFloat(),stage:1});for(const[t,n]of e.positions)v.push({x:t,y:n,sort:.33+.33*a.getFloat(),stage:2})}}v.sort((t,e)=>t.sort-e.sort);for(const{x:o,y:s,stage:l}of v){const c=t.onlyForwardTracing?h(1,t,e,o,s,[n,r],i.length,m):d(t,e,o,s,[n,r],i.length,a,m);c.length<2||i.push({stage:l,vertices:c})}return i}},31635:(t,e,n)=>{function r(t,e,n,r){var o,s=arguments.length,i=s<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,n,r);else for(var l=t.length-1;l>=0;l--)(o=t[l])&&(i=(s<3?o(i):s>3?o(e,n,i):o(e,n))||i);return s>3&&i&&Object.defineProperty(e,n,i),i}function o(t,e,n){if(null!=e){if("object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object expected.");var r,o;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=e[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=e[Symbol.dispose],n&&(o=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");o&&(r=function(){try{o.call(this)}catch(t){return Promise.reject(t)}}),t.stack.push({value:e,dispose:r,async:n})}else n&&t.stack.push({async:!0});return e}n.d(e,{Cg:()=>r,hk:()=>i,mS:()=>o}),Object.create,Object.create;var s="function"==typeof SuppressedError?SuppressedError:function(t,e,n){var r=new Error(n);return r.name="SuppressedError",r.error=t,r.suppressed=e,r};function i(t){function e(e){t.error=t.hasError?new s(e,t.error,"An error was suppressed during disposal."):e,t.hasError=!0}var n,r=0;return function o(){for(;n=t.stack.pop();)try{if(!n.async&&1===r)return r=0,t.stack.push(n),Promise.resolve().then(o);if(n.dispose){var s=n.dispose.call(n.value);if(n.async)return r|=2,Promise.resolve(s).then(o,function(t){return e(t),o()})}else r|=1}catch(t){e(t)}if(1===r)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}()}},35007:(t,e,n)=>{n.r(e),n.d(e,{default:()=>c});var r=n(31635),o=n(91429),s=n(4095),i=n(19419);n(73941);var l=n(69052);n(21325);let a=class{constructor(){this._tileData=new Map}async generateStreamlines(t){const{flowData:e,flowExtentInfo:n,needsMagnitude:r,simulationSettings:o,startPositions:i}=t,l=u((0,s.DE)(o,e),o,n.modelSize,r,i);return{result:{streamlines:l},transferList:l?.map(t=>t.vertices.buffer)}}async generateTiledStreamlines(t){const{flowDataTiles:e,flowExtentInfo:n,needsMagnitude:r,reset:o,simulationSettings:a,startPositions:c}=t;this._updateTileData(e,o);const f=u(function(t,e,n){const[r,o]=n.modelSize;let a=null;const c=new Map;e.forEach(e=>{c.set(e.lij,(0,s.DE)(t,e))});const u=(t,e,n)=>(0,i.Rj)(t.extent,e,n);return(s,f)=>{const h=Math.round(s),d=Math.round(f);if(!t.wrapAround&&(h<0||h>=r||d<0||d>=o))return[0,0];const[p,m]=function(t,e,n,r){const{extent:o,modelSize:s,valid:a}=t,[c,u,f]=o,h=function(t,e,n){if(null!=n&&t>e){const[r,o]=n;return o-t+(e-r)}return e-t}(c,f,a);let d=e/s[0]*h+c;return null!=a&&r&&(d=new l.hr(a[0],a[1]).normalize(d)),[d,(s[1]-n)/s[1]*(0,i.uJ)(o)+u]}(n,s,f,!0);if(!function(t,e,n){const{extent:r,valid:o}=t,[s,i,l,a]=r;return!(n<i||n>a)&&(null!=o&&s>l?e>=l||e<=s:e>=s&&e<=l)}(n,p,m))return[0,0];if(null==a||!u(a,p,m)){a=null;for(const[t,n]of e)if(u(n,p,m)){a=n;break}}if(null==a?.data)return[0,0];const w=c.get(a.lij);if(null==w)return[0,0];const{width:g,height:y,extent:M}=a;return w((p-M[0])/(0,i.VL)(M)*g,y-(m-M[1])/(0,i.uJ)(M)*y)}}(a,this._tileData,n),a,n.modelSize,r,c);return{result:{streamlines:f},transferList:f?.map(t=>t.vertices.buffer)??[]}}_updateTileData(t,e){e&&this._tileData.forEach((e,n)=>{null==t.get(n)&&this._tileData.delete(n)}),t.forEach((t,e)=>{"delete"===t.type?this._tileData.delete(e):"on-worker"!==t.type&&"waiting"!==t.type&&this._tileData.set(e,t.data)})}};a=(0,r.Cg)([(0,o.$K)("esri.views.3d.support.flow.FlowWorker")],a);const c=a;function u(t,e,n,r,o){if(null==t)return;const i=(0,s.S1)(e,t,n[0],n[1],{positions:o}),l=[],a=function(t){return t?4:3}(r);for(const{vertices:t,stage:e}of i){const n=new Float32Array(t.length*a);for(let e=0;e<t.length;e++)n[e*a]=t[e].x,n[e*a+1]=t[e].y,n[e*a+2]=t[e].t,r&&(n[e*a+3]=t[e].speed);l.push({vertices:n,stage:e,hasMagnitude:r})}return l}},69052:(t,e,n)=>{n.d(e,{hr:()=>o,ie:()=>a,uC:()=>l});var r=n(34727);class o{constructor(t,e){this.min=t,this.max=e,this.range=e-t}normalize(t,e=0,n=!1){return s(this.range,this.min,this.max,t,e,n)}clamp(t,e=0){return(0,r.qE)(t-e,this.min,this.max)+e}monotonic(t,e,n){return t<e?e:e+i(this.range,t-e,n)}minimalMonotonic(t,e,n){return s(this.range,t,t+this.range,e,n)}center(t,e,n){return e=this.monotonic(t,e,n),this.normalize((t+e)/2,n)}diff(t,e,n){return this.monotonic(t,e,n)-t}shortestSignedDiff(t,e){t=this.normalize(t);const n=(e=this.normalize(e))-t,r=e<t?this.minimalMonotonic(t,e)-t:e-this.minimalMonotonic(e,t);return Math.abs(n)<Math.abs(r)?n:r}contains(t,e,n){return e=this.minimalMonotonic(t,e),(n=this.minimalMonotonic(t,n))>t&&n<e}}function s(t,e,n,r,o=0,s=!1){return(r-=o)<e?r+=i(t,e-r):r>n&&(r-=i(t,r-n)),s&&r===n&&(r=e),r+o}function i(t,e,n=0){return Math.ceil((e-n)/t)*t+n}const l=new o(0,2*Math.PI),a=(new o(-Math.PI,Math.PI),new o(0,360))}}]);
|
|
1
|
+
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[9616],{4095:(t,e,n)=>{n.d(e,{CW:()=>u,DE:()=>f,S1:()=>p});var r=n(44208),o=n(53966),s=n(34727),i=n(74887),l=n(87811);n(5443),n(21325);const a=()=>o.A.getLogger("esri.views.2d.engine.flow.dataUtils"),c=10;async function u(t,e,n,o){const s=performance.now(),u=f(e,n),h=performance.now(),d=p(e,u,n.width,n.height),m=performance.now(),w=function(t){const e=new l.A,n=t.reduce((t,e)=>t+e.vertices.length,0),r=new Float32Array(4*n),o=new Array(t.length);let s=0,i=0;for(const{vertices:n}of t){const t=s;for(const t of n)r[4*s]=t.x,r[4*s+1]=t.y,r[4*s+2]=t.t,r[4*s+3]=t.speed,s++;o[i++]={startVertex:t,numberOfVertices:n.length,totalTime:n[n.length-1].t,timeSeed:e.getFloat()}}return{lineVertices:r,lineDescriptors:o}}(d),g=performance.now(),y="Streamlines"===t?function(t,e){const{lineVertices:n,lineDescriptors:r}=t;let o=0,s=0;for(const t of r)o+=2*t.numberOfVertices,s+=6*(t.numberOfVertices-1);const i=new Float32Array(9*o),l=new Uint32Array(s);let a=0,c=0;function u(){l[c++]=a-2,l[c++]=a,l[c++]=a-1,l[c++]=a,l[c++]=a+1,l[c++]=a-1}function f(t,e,n,r,o,s,l,c){const u=9*a;let f=0;i[u+f++]=t,i[u+f++]=e,i[u+f++]=1,i[u+f++]=n,i[u+f++]=s,i[u+f++]=l,i[u+f++]=r/2,i[u+f++]=o/2,i[u+f++]=c,a++,i[u+f++]=t,i[u+f++]=e,i[u+f++]=-1,i[u+f++]=n,i[u+f++]=s,i[u+f++]=l,i[u+f++]=-r/2,i[u+f++]=-o/2,i[u+f++]=c,a++}for(const t of r){const{totalTime:r,timeSeed:o}=t;let s=null,i=null,l=null,a=null,c=null,h=null;for(let d=0;d<t.numberOfVertices;d++){const p=n[4*(t.startVertex+d)],m=n[4*(t.startVertex+d)+1],w=n[4*(t.startVertex+d)+2],g=n[4*(t.startVertex+d)+3];let y=null,M=null,v=null,x=null;if(d>0){y=p-s,M=m-i;const t=Math.sqrt(y*y+M*M);if(y/=t,M/=t,d>1){let t=y+c,n=M+h;const r=Math.sqrt(t*t+n*n);t/=r,n/=r;const o=Math.min(1/(t*y+n*M),e);t*=o,n*=o,v=-n,x=t}else v=-M,x=y;null!==v&&null!==x&&(f(s,i,l,v,x,r,o,g),u())}s=p,i=m,l=w,c=y,h=M,a=g}f(s,i,l,-h,c,r,o,a)}return{vertexData:i,indexData:l}}(w,c):function(t){const{lineVertices:e,lineDescriptors:n}=t;let r=0,o=0;for(const t of n){const e=t.numberOfVertices-1;r+=4*e*2,o+=6*e*2}const s=new Float32Array(16*r),i=new Uint32Array(o);let l,a,c,u,f,h,d,p,m,w,g,y,M,v,x=0,S=0;function b(){i[S++]=x-8,i[S++]=x-7,i[S++]=x-6,i[S++]=x-7,i[S++]=x-5,i[S++]=x-6,i[S++]=x-4,i[S++]=x-3,i[S++]=x-2,i[S++]=x-3,i[S++]=x-1,i[S++]=x-2}function D(t,e,n,r,o,i,l,a,c,u,f,h,d,p){const m=16*x;let w=0;for(const g of[1,2])for(const y of[1,2,3,4])s[m+w++]=t,s[m+w++]=e,s[m+w++]=n,s[m+w++]=r,s[m+w++]=l,s[m+w++]=a,s[m+w++]=c,s[m+w++]=u,s[m+w++]=g,s[m+w++]=y,s[m+w++]=d,s[m+w++]=p,s[m+w++]=o/2,s[m+w++]=i/2,s[m+w++]=f/2,s[m+w++]=h/2,x++}function A(t,e){let n=m+g,r=w+y;const o=Math.sqrt(n*n+r*r);n/=o,r/=o;const s=m*n+w*r;n/=s,r/=s;let i=g+M,x=y+v;const S=Math.sqrt(i*i+x*x);i/=S,x/=S;const A=g*i+y*x;i/=A,x/=A,D(l,a,c,u,-r,n,f,h,d,p,-x,i,t,e),b()}function E(t,e,n,r,o,s){if(m=g,w=y,g=M,y=v,null==m&&null==w&&(m=g,w=y),null!=f&&null!=h){M=t-f,v=e-h;const n=Math.sqrt(M*M+v*v);M/=n,v/=n}null!=m&&null!=w&&A(o,s),l=f,a=h,c=d,u=p,f=t,h=e,d=n,p=r}function F(t,e){m=g,w=y,g=M,y=v,null==m&&null==w&&(m=g,w=y),null!=m&&null!=w&&A(t,e)}for(const t of n){l=null,a=null,c=null,u=null,f=null,h=null,d=null,p=null,m=null,w=null,g=null,y=null,M=null,v=null;const{totalTime:n,timeSeed:r}=t;for(let o=0;o<t.numberOfVertices;o++)E(e[4*(t.startVertex+o)],e[4*(t.startVertex+o)+1],e[4*(t.startVertex+o)+2],e[4*(t.startVertex+o)+3],n,r);F(n,r)}return{vertexData:s,indexData:i}}(w),M=performance.now();return(0,r.A)("esri-2d-profiler")&&(a().info("I.1","_createFlowFieldFromData (ms)",Math.round(h-s)),a().info("I.2","_getStreamlines (ms)",Math.round(m-h)),a().info("I.3","createAnimatedLinesData (ms)",Math.round(g-m)),a().info("I.4","create{Streamlines|Particles}Mesh (ms)",Math.round(M-g)),a().info("I.5","createFlowMesh (ms)",Math.round(M-s)),a().info("I.6","Mesh size (bytes)",y.vertexData.buffer.byteLength+y.indexData.buffer.byteLength)),await Promise.resolve(),(0,i.Te)(o),y}function f(t,e){const n=function(t,e,n,r){if(0===r)return t;const o=Math.round(3*r),s=new Array(2*o+1);let i=0;for(let t=-o;t<=o;t++){const e=Math.exp(-t*t/(r*r));s[t+o]=e,i+=e}for(let t=-o;t<=o;t++)s[t+o]/=i;const l=new Float32Array(t.length);for(let r=0;r<n;r++)for(let n=0;n<e;n++){let i=0,a=0;for(let l=-o;l<=o;l++){if(n+l<0||n+l>=e)continue;const c=s[l+o];i+=c*t[2*(r*e+(n+l))],a+=c*t[2*(r*e+(n+l))+1]}l[2*(r*e+n)]=i,l[2*(r*e+n)+1]=a}const a=new Float32Array(t.length);for(let t=0;t<e;t++)for(let r=0;r<n;r++){let i=0,c=0;for(let a=-o;a<=o;a++){if(r+a<0||r+a>=n)continue;const u=s[a+o];i+=u*l[2*((r+a)*e+t)],c+=u*l[2*((r+a)*e+t)+1]}a[2*(r*e+t)]=i,a[2*(r*e+t)+1]=c}return a}(e.data,e.width,e.height,t.smoothing);return t.interpolate?(t,r)=>{const o=Math.floor(t),s=Math.floor(r);if(o<0||o>=e.width)return[0,0];if(s<0||s>=e.height)return[0,0];const i=t-o,l=r-s,a=o,c=s,u=o<e.width-1?o+1:o,f=s<e.height-1?s+1:s,h=n[2*(c*e.width+a)],d=n[2*(c*e.width+u)],p=n[2*(f*e.width+a)],m=n[2*(f*e.width+u)],w=n[2*(c*e.width+a)+1],g=n[2*(c*e.width+u)+1];return[(h*(1-l)+p*l)*(1-i)+(d*(1-l)+m*l)*i,(w*(1-l)+n[2*(f*e.width+a)+1]*l)*(1-i)+(g*(1-l)+n[2*(f*e.width+u)+1]*l)*i]}:(t,r)=>{const o=Math.round(t),s=Math.round(r);return o<0||o>=e.width||s<0||s>=e.height?[0,0]:[n[2*(s*e.width+o)],n[2*(s*e.width+o)+1]]}}function h(t,e,n,r,o,i,l,a){const c=[],{raster:u,width:f,height:h,resolutionFactor:d}=a;let p=r,m=o,w=0,[g,y]=n(p,m);g*=e.velocityScale,y*=e.velocityScale;const M=Math.sqrt(g*g+y*y);let v,x;c.push({x:p,y:m,t:w,speed:M});for(let r=0;r<e.verticesPerLine;r++){let[r,o]=n(p,m);r*=e.velocityScale,o*=e.velocityScale;const a=Math.sqrt(r*r+o*o);if(a<e.minSpeedThreshold)return c;const g=t*r/a,y=t*o/a;if(p+=g*e.segmentLength,m+=y*e.segmentLength,e.wrapAround&&(p=(0,s.OS)(p,i[0])),w+=t*e.segmentLength/a,Math.acos(g*v+y*x)>e.maxTurnAngle)return c;if(e.collisions){let t=Math.round(p*d);const n=Math.round(m*d);if(e.wrapAround&&(t=(0,s.OS)(t,f)),t<0||t>f-1||n<0||n>h-1)return c;const r=u[n*f+t];if(-1!==r&&r!==l)return c;u[n*f+t]=l}c.push({x:p,y:m,t:w,speed:a}),v=g,x=y}return c}function d(t,e,n,r,o,s,i,l){const a=Math.round((.2+.6*i.getFloat())*t.verticesPerLine),c=t.verticesPerLine-a,u=h(-1,{...t,verticesPerLine:c},e,n,r,o,s,l),f=h(1,{...t,verticesPerLine:a},e,n,r,o,s,l),d=u.reverse();return d.splice(-1,1),d.concat(f)}function p(t,e,n,r,o={positions:[]}){if(t.density<=0)return[];const{positions:s}=o,i=[],a=new l.A,c=1/Math.max(t.lineCollisionWidth,1),u=Math.round(n*c),f=Math.round(r*c),p=new Int32Array(u*f);for(let t=0;t<p.length;t++)p[t]=-1;const m={raster:p,width:u,height:f,resolutionFactor:c},w={},g=t.lineSpacing/Math.sqrt(t.density),y=Math.floor(r/g),M=Math.floor(n/g);for(let t=0;t<y;t++){const e=t*g;for(let n=0;n<M;n++){const r=n*g;w[`${n}-${t}`]={x:r,y:e,positions:[]}}}for(const{x:t,y:e}of s){const n=w[`${Math.floor(t/g)}-${Math.floor(e/g)}`];n&&n.positions.push([t,e])}const v=[];for(const t in w){const e=w[t];if(0===e.positions.length)v.push({x:e.x+g/2,y:e.y+g/2,sort:.66+.33*a.getFloat(),stage:0});else{const[t]=e.positions.splice(0,1);v.push({x:t[0],y:t[1],sort:.33*a.getFloat(),stage:1});for(const[t,n]of e.positions)v.push({x:t,y:n,sort:.33+.33*a.getFloat(),stage:2})}}v.sort((t,e)=>t.sort-e.sort);for(const{x:o,y:s,stage:l}of v){const c=t.onlyForwardTracing?h(1,t,e,o,s,[n,r],i.length,m):d(t,e,o,s,[n,r],i.length,a,m);c.length<2||i.push({stage:l,vertices:c})}return i}},31635:(t,e,n)=>{function r(t,e,n,r){var o,s=arguments.length,i=s<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,n,r);else for(var l=t.length-1;l>=0;l--)(o=t[l])&&(i=(s<3?o(i):s>3?o(e,n,i):o(e,n))||i);return s>3&&i&&Object.defineProperty(e,n,i),i}function o(t,e,n){if(null!=e){if("object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object expected.");var r,o;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=e[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=e[Symbol.dispose],n&&(o=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");o&&(r=function(){try{o.call(this)}catch(t){return Promise.reject(t)}}),t.stack.push({value:e,dispose:r,async:n})}else n&&t.stack.push({async:!0});return e}n.d(e,{Cg:()=>r,hk:()=>i,mS:()=>o}),Object.create,Object.create;var s="function"==typeof SuppressedError?SuppressedError:function(t,e,n){var r=new Error(n);return r.name="SuppressedError",r.error=t,r.suppressed=e,r};function i(t){function e(e){t.error=t.hasError?new s(e,t.error,"An error was suppressed during disposal."):e,t.hasError=!0}var n,r=0;return function o(){for(;n=t.stack.pop();)try{if(!n.async&&1===r)return r=0,t.stack.push(n),Promise.resolve().then(o);if(n.dispose){var s=n.dispose.call(n.value);if(n.async)return r|=2,Promise.resolve(s).then(o,function(t){return e(t),o()})}else r|=1}catch(t){e(t)}if(1===r)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}()}},49616:(t,e,n)=>{n.r(e),n.d(e,{default:()=>c});var r=n(31635),o=n(91429),s=n(4095),i=n(19419),l=n(69052);n(21325);let a=class{constructor(){this._tileData=new Map}async generateStreamlines(t){const{flowData:e,flowExtentInfo:n,needsMagnitude:r,simulationSettings:o,startPositions:i}=t,l=u((0,s.DE)(o,e),o,n.modelSize,r,i);return{result:{streamlines:l},transferList:l?.map(t=>t.vertices.buffer)}}async generateTiledStreamlines(t){const{flowDataTiles:e,flowExtentInfo:n,needsMagnitude:r,reset:o,simulationSettings:a,startPositions:c}=t;this._updateTileData(e,o);const f=u(function(t,e,n){const[r,o]=n.modelSize;let a=null;const c=new Map;e.forEach(e=>{c.set(e.lij,(0,s.DE)(t,e))});const u=(t,e,n)=>(0,i.Rj)(t.extent,e,n);return(s,f)=>{const h=Math.round(s),d=Math.round(f);if(!t.wrapAround&&(h<0||h>=r||d<0||d>=o))return[0,0];const[p,m]=function(t,e,n,r){const{extent:o,modelSize:s,valid:a}=t,[c,u,f]=o,h=function(t,e,n){if(null!=n&&t>e){const[r,o]=n;return o-t+(e-r)}return e-t}(c,f,a);let d=e/s[0]*h+c;return null!=a&&r&&(d=new l.hr(a[0],a[1]).normalize(d)),[d,(s[1]-n)/s[1]*(0,i.uJ)(o)+u]}(n,s,f,!0);if(!function(t,e,n){const{extent:r,valid:o}=t,[s,i,l,a]=r;return!(n<i||n>a)&&(null!=o&&s>l?e>=l||e<=s:e>=s&&e<=l)}(n,p,m))return[0,0];if(null==a||!u(a,p,m)){a=null;for(const[t,n]of e)if(u(n,p,m)){a=n;break}}if(null==a?.data)return[0,0];const w=c.get(a.lij);if(null==w)return[0,0];const{width:g,height:y,extent:M}=a;return w((p-M[0])/(0,i.VL)(M)*g,y-(m-M[1])/(0,i.uJ)(M)*y)}}(a,this._tileData,n),a,n.modelSize,r,c);return{result:{streamlines:f},transferList:f?.map(t=>t.vertices.buffer)??[]}}_updateTileData(t,e){if(e)for(const e of this._tileData.keys())t.has(e)||this._tileData.delete(e);t.forEach((t,e)=>{"delete"===t.type?this._tileData.delete(e):"on-worker"!==t.type&&"invalid"!==t.type&&this._tileData.set(e,t.data)})}};a=(0,r.Cg)([(0,o.$K)("esri.views.3d.support.flow.FlowWorker")],a);const c=a;function u(t,e,n,r,o){if(null==t)return;const i=(0,s.S1)(e,t,n[0],n[1],{positions:o}),l=[],a=function(t){return t?4:3}(r);for(const{vertices:t,stage:e}of i){const n=new Float32Array(t.length*a);for(let e=0;e<t.length;e++)n[e*a]=t[e].x,n[e*a+1]=t[e].y,n[e*a+2]=t[e].t,r&&(n[e*a+3]=t[e].speed);l.push({vertices:n,stage:e,hasMagnitude:r})}return l}},69052:(t,e,n)=>{n.d(e,{hr:()=>o,ie:()=>a,uC:()=>l});var r=n(34727);class o{constructor(t,e){this.min=t,this.max=e,this.range=e-t}normalize(t,e=0,n=!1){return s(this.range,this.min,this.max,t,e,n)}clamp(t,e=0){return(0,r.qE)(t-e,this.min,this.max)+e}monotonic(t,e,n){return t<e?e:e+i(this.range,t-e,n)}minimalMonotonic(t,e,n){return s(this.range,t,t+this.range,e,n)}center(t,e,n){return e=this.monotonic(t,e,n),this.normalize((t+e)/2,n)}diff(t,e,n){return this.monotonic(t,e,n)-t}shortestSignedDiff(t,e){t=this.normalize(t);const n=(e=this.normalize(e))-t,r=e<t?this.minimalMonotonic(t,e)-t:e-this.minimalMonotonic(e,t);return Math.abs(n)<Math.abs(r)?n:r}contains(t,e,n){return e=this.minimalMonotonic(t,e),(n=this.minimalMonotonic(t,n))>t&&n<e}}function s(t,e,n,r,o=0,s=!1){return(r-=o)<e?r+=i(t,e-r):r>n&&(r-=i(t,r-n)),s&&r===n&&(r=e),r+o}function i(t,e,n=0){return Math.ceil((e-n)/t)*t+n}const l=new o(0,2*Math.PI),a=(new o(-Math.PI,Math.PI),new o(0,360))}}]);
|
package/chunks/Terrain.glsl.js
CHANGED
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as r}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{n as o,h as a}from"./vec32.js";import{create as i}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{addLinearDepth as l}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{addNearFar as t}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as s}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{OutputDepth as v}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as g}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as p}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as u}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as
|
|
5
|
+
import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as r}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{n as o,h as a}from"./vec32.js";import{create as i}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{addLinearDepth as l}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{addNearFar as t}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as s}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{OutputDepth as v}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as g}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as p}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as u}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as w,addAmbientBoostFactor as f,addLightingGlobalFactor as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightDirection as h,addMainLightIntensity as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{ReadShadowMapDraw as j}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{OverlayTerrain as x}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{OverlayTerrainPassParameters as L,TerrainTexture as O}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js";import{addProjViewLocalOrigin as T,addViewNormal as M,addCameraPosition as P}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3BindUniform as $}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{glsl as S,If as z}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4DrawUniform as F}from"../views/3d/webgl-engine/core/shaderModules/Matrix4DrawUniform.js";import{Texture2DBindUniform as D}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{ShaderBuilder as _}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as A}from"../webscene/support/AlphaCutoff.js";class V extends L{}function N(r){const i=new _,{attributes:L,vertex:V,fragment:N,varyings:B}=i;L.add("position","vec3"),i.include(d,r),i.include(c,r);const H=()=>{i.include(C,r),V.code.add(S`vec3 getNormal() {
|
|
6
6
|
float z = 1.0 - abs(normalCompressed.x) - abs(normalCompressed.y);
|
|
7
7
|
vec3 n = vec3(normalCompressed + vec2(normalCompressed.x >= 0.0 ? 1.0 : -1.0,
|
|
8
8
|
normalCompressed.y >= 0.0 ? 1.0 : -1.0) * min(z, 0.0), z);
|
|
9
9
|
return normalize(n);
|
|
10
|
-
}`)};T(V,r),i.include(s);const{output:U,
|
|
10
|
+
}`)};T(V,r),i.include(s);const{output:U,overlayMode:E,tileBorders:q,transparencyMode:I,overlayEnabled:R}=r,G=2===I||3===I,J=0!==r.pbrMode,K=R&&G;switch(U){case 0:{i.include(O,r),i.include(w,r),R&&i.include(x,r);const l=2===E;l&&i.include(m,r),B.add("vnormal","vec3"),B.add("vpos","vec3",{invariant:!0}),B.add("vup","vec3"),H(),V.main.add(S`
|
|
11
11
|
vpos = position;
|
|
12
12
|
vec3 positionWorld = position + localOrigin;
|
|
13
13
|
gl_Position = transformPosition(proj, view, vpos);
|
|
14
14
|
vnormal = getNormal();
|
|
15
15
|
vup = getLocalUp(position, localOrigin);
|
|
16
|
-
${
|
|
16
|
+
${z(l,S`forwardVertexTangent(vnormal);`)}
|
|
17
17
|
|
|
18
18
|
forwardTextureCoordinatesWithTransform(uv0);
|
|
19
|
-
${
|
|
20
|
-
${
|
|
21
|
-
forwardLinearDepthToReadShadowMap();`),i.include(j,r),N.include(n,r),i.include(
|
|
19
|
+
${z(R,"setOverlayVTC(uv0);")}
|
|
20
|
+
${z(q,"forwardTextureCoordinates();")}
|
|
21
|
+
forwardLinearDepthToReadShadowMap();`),i.include(j,r),N.include(n,r),i.include(w,r),N.include(u,r),P(N,r),f(N),b(N),N.uniforms.add(V.uniforms.get("localOrigin"),new $("viewDirection",({camera:e})=>o(k,a(k,e.viewMatrix[12],e.viewMatrix[13],e.viewMatrix[14])))),l&&N.uniforms.add(new D("ovWaterTex",e=>e.overlay?.getTexture(3)),new F("view",({origin:r},{camera:o})=>e(W,o.viewMatrix,r)));const t=.2;N.code.add(S`float lum(vec3 c) {
|
|
22
22
|
return (min(min(c.r, c.g), c.b) + max(max(c.r, c.g), c.b)) * 0.5;
|
|
23
|
-
}`),h(N),y(N),N.main.add(
|
|
23
|
+
}`),h(N),y(N),N.main.add(S`
|
|
24
24
|
vec3 normal = normalize(vnormal);
|
|
25
25
|
float vndl = dot(normal, mainLightDirection);
|
|
26
26
|
|
|
@@ -29,21 +29,21 @@ return (min(min(c.r, c.g), c.b) + max(max(c.r, c.g), c.b)) * 0.5;
|
|
|
29
29
|
float ssao = evaluateAmbientOcclusionInverse();
|
|
30
30
|
vec4 tileColor = getTileColor();
|
|
31
31
|
|
|
32
|
-
${
|
|
32
|
+
${z(R,S`vec4 overlayColorOpaque = getOverlayColor(ovColorTex, vtcOverlay);
|
|
33
33
|
vec4 overlayColor = overlayOpacity * overlayColorOpaque;
|
|
34
|
-
${
|
|
34
|
+
${z(G,`if (overlayColor.a < ${S.float(A)}) { discard; }`)}
|
|
35
35
|
vec4 groundColor = tileColor;
|
|
36
36
|
tileColor = tileColor * (1.0 - overlayColor.a) + overlayColor;`)}
|
|
37
37
|
|
|
38
38
|
// If combined alpha is 0 we can discard pixel. The performance impact by having a discard here
|
|
39
39
|
// is neglectable because terrain typically renders first into the framebuffer.
|
|
40
|
-
if(tileColor.a < ${
|
|
40
|
+
if(tileColor.a < ${S.float(A)}) {
|
|
41
41
|
discard;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
bool sliced = rejectBySlice(vpos);
|
|
45
45
|
if (sliced) {
|
|
46
|
-
tileColor *= ${
|
|
46
|
+
tileColor *= ${S.float(t)};
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
vec3 albedo = tileColor.rgb;
|
|
@@ -51,8 +51,8 @@ return (min(min(c.r, c.g), c.b) + max(max(c.r, c.g), c.b)) * 0.5;
|
|
|
51
51
|
// heuristic shading function used in the old terrain, now used to add ambient lighting
|
|
52
52
|
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
53
53
|
|
|
54
|
-
${
|
|
55
|
-
${
|
|
54
|
+
${J?S`fragColor = vec4(evaluatePBRSimplifiedLighting(normal, albedo, shadow, 1.0 - ssao, additionalLight, normalize(vpos - cameraPosition), vup), tileColor.a);`:S`fragColor = vec4(evaluateSceneLighting(normal, albedo, shadow, 1.0 - ssao, additionalLight), tileColor.a);`}
|
|
55
|
+
${z(l,S`vec4 overlayWaterMask = getOverlayColor(ovWaterTex, vtcOverlay);
|
|
56
56
|
float waterNormalLength = length(overlayWaterMask);
|
|
57
57
|
if (waterNormalLength > 0.95) {
|
|
58
58
|
mat3 tbnMatrix = mat3(tbnTangent, tbnBiTangent, vnormal);
|
|
@@ -60,29 +60,29 @@ return (min(min(c.r, c.g), c.b) + max(max(c.r, c.g), c.b)) * 0.5;
|
|
|
60
60
|
vec4 viewPosition = view*vec4(vpos, 1.0);
|
|
61
61
|
vec4 waterColorLinear = getOverlayWaterColor(overlayWaterMask, waterOverlayColor, -normalize(vpos - cameraPosition), shadow, vnormal, tbnMatrix, viewPosition.xyz, vpos + localOrigin);
|
|
62
62
|
vec4 waterColorNonLinear = delinearizeGamma(vec4(waterColorLinear.xyz, 1.0));
|
|
63
|
-
float opacity = sliced ? ${
|
|
63
|
+
float opacity = sliced ? ${S.float(t)} : 1.0;
|
|
64
64
|
// un-gamma the ground color to mix in linear space
|
|
65
65
|
fragColor = mix(groundColor, waterColorNonLinear, waterColorLinear.w) * opacity;
|
|
66
66
|
}`)}
|
|
67
|
-
${
|
|
67
|
+
${z(q,S`vec2 dVuv = fwidth(vuv0);
|
|
68
68
|
vec2 edgeFactors = smoothstep(vec2(0.0), 1.5 * dVuv, min(vuv0, 1.0 - vuv0));
|
|
69
69
|
float edgeFactor = 1.0 - min(edgeFactors.x, edgeFactors.y);
|
|
70
70
|
fragColor = mix(fragColor, vec4(1.0, 0.0, 0.0, 1.0), edgeFactor);`)}
|
|
71
|
-
fragColor = applySlice(fragColor, vpos);`)}break;case 1:K&&i.include(x,r),V.main.add(
|
|
72
|
-
${
|
|
73
|
-
gl_Position = transformPosition(proj, view, position);`),N.main.add(`${
|
|
74
|
-
${
|
|
71
|
+
fragColor = applySlice(fragColor, vpos);`)}break;case 1:K&&i.include(x,r),V.main.add(S`
|
|
72
|
+
${z(K,"setOverlayVTC(uv0);")}
|
|
73
|
+
gl_Position = transformPosition(proj, view, position);`),N.main.add(`${z(K,`if (getCombinedOverlayColor().a < ${S.float(A)}) discard;`)}`);break;case 3:case 4:case 5:case 6:case 7:i.include(v,r),l(i),t(i),V.main.add(S`gl_Position = transformPositionWithDepth(proj, view, position, nearFar, linearDepth);`),N.main.add(S`outputDepth(linearDepth);`);break;case 2:K&&i.include(x,r),B.add("vnormal","vec3"),M(V),H(),V.main.add(S`
|
|
74
|
+
${z(K,"setOverlayVTC(uv0);")}
|
|
75
75
|
gl_Position = transformPosition(proj, view, position);
|
|
76
|
-
vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz);`),N.main.add(
|
|
77
|
-
${
|
|
76
|
+
vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz);`),N.main.add(S`
|
|
77
|
+
${z(K,`if (getCombinedOverlayColor().a < ${S.float(A)}) discard;`)}
|
|
78
78
|
vec3 normal = normalize(vnormal);
|
|
79
79
|
if (gl_FrontFacing == false) {
|
|
80
80
|
normal = -normal;
|
|
81
81
|
}
|
|
82
|
-
fragColor = vec4(vec3(0.5) + 0.5 * normal, 1.0);`);break;case 8:
|
|
83
|
-
${
|
|
84
|
-
gl_Position = transformPosition(proj, view, position);`),i.include(g,r),N.main.add(
|
|
85
|
-
${
|
|
82
|
+
fragColor = vec4(vec3(0.5) + 0.5 * normal, 1.0);`);break;case 8:R&&(i.include(x,r),i.include(p,r)),V.main.add(S`
|
|
83
|
+
${z(R,"setOverlayVTC(uv0);")}
|
|
84
|
+
gl_Position = transformPosition(proj, view, position);`),i.include(g,r),N.main.add(S`
|
|
85
|
+
${z(R,S`
|
|
86
86
|
calculateOcclusionAndOutputHighlight(getAllOverlayHighlightValuesEncoded());`,"calculateOcclusionAndOutputHighlight();")}
|
|
87
|
-
`)
|
|
88
|
-
setOverlayVTC(uv0);`),N.main.add(
|
|
87
|
+
`);break;case 9:if(R)i.include(x,r),V.main.add(S`gl_Position = transformPosition(proj, view, position);
|
|
88
|
+
setOverlayVTC(uv0);`),N.main.add(S`fragColor = getOverlayColorTexel();`);else{const e=0===I;V.main.add(S`${z(e,"gl_Position = transformPosition(proj, view, position);")}`),N.main.add(S`fragColor = vec4(0.0);`)}}return i}const W=r(),k=i(),B=Object.freeze(Object.defineProperty({__proto__:null,TerrainPassParameters:V,build:N},Symbol.toStringTag,{value:"Module"}));export{V as T,B as a,N as b};
|
package/config.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.0.0-next.
|
|
5
|
+
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.0.0-next.30";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
|
package/kernel.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.0";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.0.0-next.
|
|
5
|
+
import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.0";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.0.0-next.30",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{__decorate as e}from"tslib";import t from"../request.js";import
|
|
5
|
+
import{__decorate as e}from"tslib";import t from"../request.js";import r from"../core/Error.js";import has from"../core/has.js";import o from"../core/Logger.js";import{MultiOriginJSONMixin as i}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as s}from"../core/promiseUtils.js";import{on as a,sync as n}from"../core/reactiveUtils.js";import{property as l,subclass as p}from"../core/accessorSupport/decorators.js";import{persistable as m}from"../core/accessorSupport/decorators/persistable.js";import d from"../geometry/Extent.js";import u from"../geometry/SpatialReference.js";import c from"./Layer.js";import{APIKeyMixin as h}from"./mixins/APIKeyMixin.js";import{ArcGISService as f}from"./mixins/ArcGISService.js";import{CustomParametersMixin as y}from"./mixins/CustomParametersMixin.js";import{OperationalLayer as g}from"./mixins/OperationalLayer.js";import{PortalLayer as _}from"./mixins/PortalLayer.js";import{ScaleRangeLayer as S}from"./mixins/ScaleRangeLayer.js";import{elevationInfo as j,url as T}from"./support/commonProperties.js";import v from"./support/SceneModifications.js";import{initFullExtent as w}from"./support/tiles3DUtils.js";import b from"../portal/Portal.js";import{logInvalidElevationInfoWarning as x,elevationModeRequiredMessage as L,featureExpressionUnsupportedMessage as P}from"../support/elevationInfoUtils.js";import{f as I}from"../chunks/persistableUrlUtils.js";import{isBasemap as k}from"../support/userTypeGuards/isBasemap.js";import{reader as R}from"../core/accessorSupport/decorators/reader.js";let U=class extends(f(g(_(S(i(y(h(c)))))))){readModifications(e,t,r){this._modificationsSource={url:I(e,r),context:r}}initialize(){this.addHandles(a(()=>this.modifications,"after-changes",()=>this.modifications=this.modifications,n))}constructor(e){super(e),this.operationalLayerType="IntegratedMesh3DTilesLayer",this.modifications=null,this._modificationsSource=null,this.spatialReference=new u({wkid:4326,vcsWkid:115700}),this.fullExtent=new d(-180,-90,180,90,this.spatialReference),this.url=null,this.type="integrated-mesh-3dtiles",this.path=null,this.minScale=0,this.maxScale=0,this._rootTilesetJSON=null,this._rootTileset=null,this._key=null,this._session=null,this._rootRequestPromise=null}set elevationInfo(e){null!=e&&"absolute-height"!==e.mode||this._set("elevationInfo",e),this._validateElevationInfo(e)}async load(e){return this.addResolvingPromise(this._doLoad(e)),this}get rootTilesetJSON(){return this._rootTilesetJSON}get rootTileset(){return this._rootTileset}get key(){return this._key}get session(){return this._session}_findSessionParameter(e){const t=[e];for(;t?.length>0;){const e=t.pop();if(!e)return;for(const[o,i]of Object.entries(e)){if("uri"===o)try{const e=new URL("https://tmp"+i).searchParams.get("session");if(e)return e}catch(r){}"object"==typeof i&&null!==i&&t.push(i)}}return null}async requestRootAndSession(e){const i=(e,t)=>new r("3dtiles-init:"+e,t);return this._rootRequestPromise||(this._rootRequestPromise=new Promise((r,a)=>{this.url||a(i("url-missing","Layer url missing")),this._key=this.customParameters?this.customParameters.key:null;new Promise((e,r)=>{if(this.replacesTerrain&&!this._key){const o=this.portalItem?.portal||this.parent?.portalItem?.portal||b.getDefault();o.signIn().then(()=>{o.g3dTilesEnabled?t(o.restUrl+"/portals/self/modules/g3dtiles",{responseType:"json",query:{f:"json"}}).then(t=>{this._key=t.data.keyString,e()},()=>r(i("g3dtiles-key-error","Error fetching Google 3D Tiles key from portal"))):r(i("g3dTilesEnabled-false","Google 3D Tiles are not enabled on Portal "+o.url))},()=>r(i("sign-in-failed","Error signing in to Portal")))}else e()}).then(()=>{t(this.url,{query:this._key?{key:this._key,token:this.apiKey}:{token:this.apiKey},responseType:"array-buffer",signal:e}).then(e=>{try{this._rootTilesetJSON=JSON.parse((new TextDecoder).decode(e.data))}catch(t){return void a(i("root-parse-failed","Error parsing root tile, details: "+t))}this._rootTilesetJSON?(this._session=this._findSessionParameter(this._rootTilesetJSON),this._rootTileset=e.data,this.fullExtent=w(this._rootTilesetJSON),r(),this._rootRequestPromise=null):a(i("root-is-null","Root tile is null."))},e=>{s(e),a(i("root-load-failed","Error loading root tile")),this._rootRequestPromise=null,o.getLogger("IntegratedMesh3DTilesLayer").error("Layer loading failed",e)})},e=>a(e))})),this._rootRequestPromise}async _doLoad(e){const t=null!=e?e.signal:null;if(this._isUsedAsGroundLayer&&!has("enable-feature:basemap-groundlayers"))throw new r("3dtiles-init:not-supported-in-groundlayers","Layer is not supported in basemap.");try{await this.loadFromPortal({supportedTypes:["3DTiles Service"],validateItem:e=>{if(e.typeKeywords?.includes("IntegratedMesh"))return!0;throw new r("portal:invalid-layer-item-type","Invalid layer item, expected '${expectedType}' ",{expectedType:"3DTiles Service containing IntegratedMesh"})}},e)}catch(o){s(o)}if(null!=this._modificationsSource){const t=await v.fromUrl(this._modificationsSource.url,this.spatialReference,e);this.setAtOrigin("modifications",t,this._modificationsSource.context.origin),this._modificationsSource=null}await this.requestRootAndSession(t)}beforeSave(){if(null!=this._modificationsSource)return this.load().then(()=>{},()=>{})}get hasAttributionData(){return!1}async fetchAttributionData(){return{}}_validateElevationInfo(e){const t="Integrated mesh 3d tiles layers";x(o.getLogger(this),L(t,"absolute-height",e)),x(o.getLogger(this),P(t,e))}get replacesTerrain(){return!!has("enable-feature:basemap-groundlayers")&&this.hasGoogleUrl&&this._isUsedAsGroundLayer}get _isUsedAsGroundLayer(){return k(this.parent)}get hasGoogleUrl(){return!!this.url?.match(/.+\.googleapis.com/)}};e([l({type:["IntegratedMesh3DTilesLayer"]})],U.prototype,"operationalLayerType",void 0),e([l({type:v,clonable:e=>e.clone()}),m({origins:["web-scene","portal-item"],type:"resource",prefix:"modifications"})],U.prototype,"modifications",void 0),e([R(["web-scene","portal-item"],"modifications")],U.prototype,"readModifications",null),e([l({type:u})],U.prototype,"spatialReference",void 0),e([l({type:d})],U.prototype,"fullExtent",void 0),e([l(j)],U.prototype,"elevationInfo",null),e([l({type:["show","hide"]})],U.prototype,"listMode",void 0),e([l(T)],U.prototype,"url",void 0),e([l({readOnly:!0})],U.prototype,"type",void 0),e([l({type:String,json:{origins:{"web-scene":{read:!0,write:!0},"portal-item":{read:!0,write:!0}},read:!1}})],U.prototype,"path",void 0),e([l({type:Number,json:{name:"layerDefinition.minScale",write:!0,origins:{service:{read:!1,write:!1}}}})],U.prototype,"minScale",void 0),e([l({type:Number,json:{name:"layerDefinition.maxScale",write:!0,origins:{service:{read:!1,write:!1}}}})],U.prototype,"maxScale",void 0),e([l()],U.prototype,"replacesTerrain",null),e([l()],U.prototype,"_isUsedAsGroundLayer",null),e([l()],U.prototype,"hasGoogleUrl",null),U=e([p("esri.layers.IntegratedMesh3DTilesLayer")],U);const D=U;export{D as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{__decorate as t}from"tslib";import{Loadable as e}from"../../../core/Loadable.js";import r from"../../../core/Logger.js";import{throwIfAborted as s}from"../../../core/promiseUtils.js";import{open as o}from"../../../core/workers.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import n from"../../../geometry/Extent.js";import{toParquetJSONGeometryType as u}from"../../support/parquetUtils.js";import l from"../../../rest/support/FeatureSet.js";let c=class extends e{constructor(t){super(t),this.type="parquet"}load(t){const e=null!=t?t.signal:null;return this.addResolvingPromise(this._initialize(e)),Promise.resolve(this)}destroy(){this._connection
|
|
5
|
+
import{__decorate as t}from"tslib";import{Loadable as e}from"../../../core/Loadable.js";import r from"../../../core/Logger.js";import{throwIfAborted as s}from"../../../core/promiseUtils.js";import{open as o}from"../../../core/workers.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import n from"../../../geometry/Extent.js";import{toParquetJSONGeometryType as u}from"../../support/parquetUtils.js";import l from"../../../rest/support/FeatureSet.js";let c=class extends e{constructor(t){super(t),this.type="parquet"}load(t){const e=null!=t?t.signal:null;return this.addResolvingPromise(this._initialize(e)),Promise.resolve(this)}destroy(){this._connection?.destroy()}setCustomParameters(t){this._proxy.setCustomParameters(t).catch(()=>{r.getLogger(this).warn("Failed to update customParameters")})}async updateFiles(t){await this._proxy.updateFiles(t)}async queryFeaturesJSON(t,e={}){return await this.load(e),this._proxy.queryFeatures(t.toJSON(),{signal:e?.signal})}async queryFeatures(t,e={}){const r=await this.queryFeaturesJSON(t,{signal:e?.signal});return l.fromJSON(r)}async queryObjectIds(t,e){return await this._proxy.queryObjectIds(t.toJSON(),{signal:e?.signal})}async queryFeatureCount(t,e){return this._proxy.queryFeatureCount(t.toJSON(),{signal:e?.signal})}async queryExtent(t,e){if(null==this.layer.encoding)return r.getLogger(this).warn("Tried to queryExtent, but source does not have a geometry. Returning null extent."),{count:0,extent:null};const s=await this._proxy.queryExtent(t.toJSON(),{signal:e?.signal});return{count:s.count,extent:n.fromJSON(s.extent)}}async _initialize(t){this._connection=await o("ParquetSourceWorker",{strategy:"dedicated",signal:t,registryTarget:this}),s(t),this._proxy=this._connection.createInvokeProxy();const{layerDefinition:e,capabilities:r}=await this._proxy.load({urls:this.layer.urls.items,fields:this.layer.fields?.map(t=>t.toJSON()),geometryType:this.layer.geometryType?u(this.layer.geometryType):null,spatialReference:this.layer.spatialReference?.toJSON(),encoding:this.layer.encoding?.toJSON(),displayOptimization:this.layer.displayOptimization,customParameters:this.layer.customParameters});s(t),this.sourceJSON=e,this.capabilities=r}};t([i()],c.prototype,"type",void 0),t([i({constructOnly:!0})],c.prototype,"layer",void 0),t([i()],c.prototype,"sourceJSON",void 0),t([i()],c.prototype,"capabilities",void 0),c=t([a("esri.layers.graphics.sources.ParquetSource")],c);export{c as ParquetSource};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright Esri, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../core/Collection.js";import t from"../../core/Error.js";import{JSONMap as o}from"../../core/jsonMap.js";import n from"../../geometry/SpatialReference.js";import i from"./Field.js";import{inferLocationInfo as r}from"./locationUtils.js";import l from"./ParquetEncodingLocation.js";import s from"./ParquetEncodingWkb.js";import{createParquetFile as a,readGeoMetadata as m,readEsriMetadata as u}from"../../libs/parquet/parquet.js";const c=new o({esriGeometryPoint:"point",esriGeometryPolygon:"polygon",esriGeometryPolyline:"polyline",esriGeometryMultipoint:"multipoint"});function p(e){return c.toJSON(e)}function f(e){return c.fromJSON(e)}function d(t,o={}){return y({urls:new e(t)},o)}async function y(e,o={}){if(e.geometryType&&e.spatialReference&&e.encoding&&e.fields)return e;if(e.urls.length<1)throw new t("parquet:bad-input","At least one url must be specified",e);const r=await a(e.urls.getItemAt(0),{getCustomParameters:()=>o.customParameters}),l=m(r),s={...e,file:r};null==s.fields&&(s.fields=r.fields().map(e=>i.fromJSON({name:e.name,type:e.type}))),null==s.encoding&&(s.encoding=g(l,s.fields));const c=u(r);if(c)switch(c.mode){case"z":s.displayOptimization={mode:"z"};break;case"xz":{const e=c.multiscale;if(!e)throw new t("bad-format","XZ display optimization requires multiscale geometries");s.displayOptimization={mode:"xz",multiscale:e};break}}if(!s.encoding)return s;switch(s.encoding.type){case"location":null==s.spatialReference&&(s.spatialReference=n.WGS84),null==s.geometryType&&(s.geometryType="point");break;case"wkb":{if(!l)return s;const e=l.primary_column,t=l.columns[e];if(s.geometryType||(s.geometryType=P(t)),s.spatialReference||(s.spatialReference=b(t)),s.fields)for(const o of Object.keys(l.columns))s.fields=s.fields.filter(e=>e.name!==o)}}return s}function g(e,t){if(null!=e){const t=e.primary_column,o=e.columns[t];return new s({primaryFieldName:t,orientation:o.orientation??null})}const o=r(t.map(e=>e.name));return o.latitudeFieldName&&o.
|
|
5
|
+
import e from"../../core/Collection.js";import t from"../../core/Error.js";import{JSONMap as o}from"../../core/jsonMap.js";import n from"../../geometry/SpatialReference.js";import i from"./Field.js";import{inferLocationInfo as r}from"./locationUtils.js";import l from"./ParquetEncodingLocation.js";import s from"./ParquetEncodingWkb.js";import{createParquetFile as a,readGeoMetadata as m,readEsriMetadata as u}from"../../libs/parquet/parquet.js";const c=new o({esriGeometryPoint:"point",esriGeometryPolygon:"polygon",esriGeometryPolyline:"polyline",esriGeometryMultipoint:"multipoint"});function p(e){return c.toJSON(e)}function f(e){return c.fromJSON(e)}function d(t,o={}){return y({urls:new e(t)},o)}async function y(e,o={}){if(e.geometryType&&e.spatialReference&&e.encoding&&e.fields)return e;if(e.urls.length<1)throw new t("parquet:bad-input","At least one url must be specified",e);const r=await a(e.urls.getItemAt(0),{getCustomParameters:()=>o.customParameters}),l=m(r),s={...e,file:r};null==s.fields&&(s.fields=r.fields().map(e=>i.fromJSON({name:e.name,type:e.type}))),null==s.encoding&&(s.encoding=g(l,s.fields));const c=u(r);if(c)switch(c.mode){case"z":s.displayOptimization={mode:"z"};break;case"xz":{const e=c.multiscale;if(!e)throw new t("bad-format","XZ display optimization requires multiscale geometries");s.displayOptimization={mode:"xz",multiscale:e};break}}if(!s.encoding)return s;switch(s.encoding.type){case"location":null==s.spatialReference&&(s.spatialReference=n.WGS84),null==s.geometryType&&(s.geometryType="point");break;case"wkb":{if(!l)return s;const e=l.primary_column,t=l.columns[e];if(s.geometryType||(s.geometryType=P(t)),s.spatialReference||(s.spatialReference=b(t)),s.fields)for(const o of Object.keys(l.columns))s.fields=s.fields.filter(e=>e.name!==o)}}return s}function g(e,t){if(null!=e){const t=e.primary_column,o=e.columns[t];return new s({primaryFieldName:t,orientation:o.orientation??null})}const o=r(t.map(e=>e.name));return o.latitudeFieldName&&o.longitudeFieldName?new l({latitudeFieldName:o.latitudeFieldName,longitudeFieldName:o.longitudeFieldName}):null}function w(e){switch(e){case"Point":return"point";case"Polygon":case"MultiPolygon":return"polygon";case"LineString":return"polyline";case"MultiPoint":return"multipoint";default:return null}}function P(e){const{geometry_types:o}=e,n=new Set;for(const t of o){const e=w(t);e&&n.add(e)}if(n.size>1)throw new t("unsupported","Parquet mixed geometry types are not support",{geometryTypes:n});return 1===n.size?n.values().next().value:void 0}function b(e){const t=e.crs?.id?.code;return t&&"number"==typeof t?new n({wkid:t}):void 0}export{y as completeParquetLayerInfo,f as fromParquetJSONGeometryType,d as getParquetLayerInfo,c as parquetGeometryTypeKebabDict,p as toParquetJSONGeometryType};
|
package/package.json
CHANGED