@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 8.89 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import e from"../../request.js";import t from"../../core/Error.js";import{getOrCreateMapValue as r}from"../../core/MapUtils.js";import{convertFromGeometry as i}from"../../layers/graphics/featureConversionUtils.js";import n from"../../layers/graphics/OptimizedGeometry.js";import{ProtoOutboundEntityFeatureCollectionAttributionIndexes as s,ProtoOutboundRelationshipFeatureCollectionAttributionIndexes as a}from"../../rest/knowledgeGraph/ProtoFeatureCollection.js";import{EsriFieldTypes as o}from"../../rest/knowledgeGraph/types.js";import{getWasmInterface as l}from"../../rest/knowledgeGraph/wasmInterface/knowledgeWasmAccess.js";import{WasmQuantizeOriginPositionTypeCode as c,SqlTypeCode as d}from"../../rest/knowledgeGraph/wasmInterface/WasmSerializedLayerData.js";import{wasmToProtoFeatureCollection as u}from"../../rest/knowledgeGraph/wasmInterface/wasmToFeatureFactories.js";async function y(e,t){const r=[],i={generateAllSublayers:!1,namedTypeDefinitions:new Map};return e.entitiesUrl&&r.push(b(e.entitiesUrl,t).then(e=>{k(e,i)})),e.relationshipsUrl&&r.push(b(e.relationshipsUrl,t).then(e=>{k(e,i)})),await Promise.all(r),i}async function f(e,t,r){t??=!1;const i={generateAllSublayers:t,namedTypeDefinitions:new Map};return await E(e,r).then(e=>{M(e,i)}),i}async function p(e,t,r){const i=await l(),n=new i.FeatureCollection,s=new i.FeatureCollection;try{w(n,i,e,"entities",t,r),w(s,i,e,"relationships",t,r);const a=new i.FeatureCollectionEncoder,o=new i.FeatureCollectionEncoder,l=C(n,a),c=structuredClone(l),d=C(s,o),u={entitiesFC:c,relationshipsFC:structuredClone(d)};return a.delete(),o.delete(),u}finally{n.delete(),s.delete()}}async function m(e,t,r){const i=await l(),n=new i.FeatureCollection;try{w(n,i,e,"entities",t,r);const s=new i.FeatureCollectionEncoder,a=C(n,s),o=structuredClone(a);return s.delete(),o}finally{n.delete()}}async function _(e,t,r){const i=await l(),n=new i.FeatureCollection;try{w(n,i,e,"relationships",t,r);const s=new i.FeatureCollectionEncoder,a=C(n,s),o=structuredClone(a);return s.delete(),o}finally{n.delete()}}async function g(e){const r=await l(),i=new r.MapOfObjectIdentifierSets;h(i,r,e);const n=new r.MapOfObjectIdentifierSetsEncoder;try{n.set_map_of_identifier_sets(i),n.encode();const e=n.get_encoding_result();if(0!==e.error.error_code)throw new t("knowledge-graph:layer-support-utils",e.error.error_message);const r=structuredClone(e.get_byte_buffer());return n.delete(),r}finally{i.delete()}}function w(e,t,r,n,l,u){e.version="";const y=new t.QueryResult,f=new t.FeatureResult,p="entities"===n?s:a;f.unique_id_field={name:p[p.ELEMENTUID],isSystemMaintained:!1},f.globalid_field_name=p[p.ELEMENTUID],f.geohash_field_name="",f.geometry_properties={shapeAreaFieldName:"",shapeLengthFieldName:"",units:""},f.spatial_reference={wkid:4326,latestWkid:4326,vcsWkid:0,latestVcsWkid:0,wkt:""},f.exceeded_transfer_limit=!1,f.has_z=!1,f.has_m=!1,f.transform={quantizeOriginPosition:{value:c.upperLeft},scale:{xScale:1e-9,yScale:1e-9,mScale:1e-4,zScale:1e-4},translate:{xTranslate:-400,yTranslate:-400,mTranslate:-1e5,zTranslate:-1e5}};for(const i of Object.keys(p).filter(e=>isNaN(Number(e)))){const e=new t.Field;if(e.name=i,e.alias=i,e.sql_type={value:d.sqlTypeBigInt},"entities"===n)switch(i){case p[p.ELEMENTUID]:case p[p.TYPENAME]:e.field_type={value:o.esriFieldTypeString}}else switch(i){case p[p.ELEMENTUID]:case p[p.TYPENAME]:case a[a.FROMUID]:case a[a.TOUID]:e.field_type={value:o.esriFieldTypeString}}e.domain="",f.add_field(e),e.delete()}const m=new Map;for(const i of l.dataModel.entityTypes)m.set(i.name,"entities");for(const i of l.dataModel.relationshipTypes)m.set(i.name,"relationships");for(const[s,o]of r.namedTypeDefinitions)if(n===m.get(s))for(const e of o.members.values()){const r=new t.Feature;for(const i of Object.keys(p).filter(e=>isNaN(Number(e))))if("entities"===n)switch(i){case p[p.ELEMENTUID]:r.add_attribute(e.id,t.esriFieldType.esriFieldTypeString);break;case p[p.TYPENAME]:r.add_attribute(s,t.esriFieldType.esriFieldTypeString)}else switch(i){case p[p.ELEMENTUID]:r.add_attribute(e.id,t.esriFieldType.esriFieldTypeString);break;case a[a.FROMUID]:r.add_attribute(u.has(e.id)?u.get(e.id)[0]:"",t.esriFieldType.esriFieldTypeString);break;case a[a.TOUID]:r.add_attribute(u.has(e.id)?u.get(e.id)[1]:"",t.esriFieldType.esriFieldTypeString);break;case p[p.TYPENAME]:r.add_attribute(s,t.esriFieldType.esriFieldTypeString)}let o;if(e.linkChartLocation&&"x"in e.linkChartLocation?o=i(e.linkChartLocation):e.linkChartLocation&&(o=e.linkChartLocation),e.linkChartLocation&&o){const e=new t.FeatureCollectionGeometry;let i=!1;switch(n){case"entities":e.geometry_type=t.esriGeometryType.esriGeometryPoint,i=!0;break;case"relationships":e.geometry_type=t.esriGeometryType.esriGeometryPolyline}e.coords=new Float64Array(o.coords),e.lengths=new Uint32Array(i?[1]:o.lengths),r.set_compressed_geometry(e),e.delete()}f.add_feature(r),r.delete()}switch(n){case"entities":f.geometry_type=t.esriGeometryType.esriGeometryPoint;break;case"relationships":f.geometry_type=t.esriGeometryType.esriGeometryPolyline}return y.set_feature_result(f),e.set_query_result(y),f.delete(),y.delete(),e}function h(e,t,r){for(const[i,n]of r.namedTypeDefinitions){if(!n.members||n.useAllData)continue;const r=n.members.keys();let s=!1,a=!0;const o=new t.ObjectIdArray,l=new t.StringArray,c=new t.GlobalIdArray,d=new t.IdentifierArray,u=new t.ObjectIdentifierSet;for(const e of r)a&&(s=!isNaN(Number(e)),a=!1),s?o.add_objectid(Number(e)):(l.add_string(e),c.add_globalid(e)),d.add_identifier(e);u.set_oid_array(o),u.set_string_array(l),u.set_globalid_array(c),u.set_identifier_array(d),o.delete(),l.delete(),c.delete(),d.delete(),e.put_identifier_set(i,u),u.delete()}return e}async function b(t,r){const i=await e(t,{responseType:"array-buffer",signal:r?.signal});return T(await i.data)}async function T(e){const r=new((await l()).FeatureCollectionDecoder),i=r.decode(new Uint8Array(e));if(0!==i.error_code)throw new t("knowledge-graph:layer-support-utils",i.error_message);const n=r.get_feature_collection(),s=u(n);return r.delete(),s}async function E(t,r){const i=await e(t,{responseType:"array-buffer",signal:r?.signal}),n=await i.data;return F(new Uint8Array(n))}async function F(e){const r=new((await l()).MapOfObjectIdentifierSetsDecoder),i=r.decode(new Uint8Array(e)),n=new Map;if(0!==i.error_code)throw new t("knowledge-graph:layer-support-utils",i.error_message);const s=r.get_map_of_identifier_sets(),a=s.keys,o=a.size();for(let l=0;l<o;l++){const e=a.get(l),r=s.query_identifier_set(e),i=[];if(1===r.id_array_type.value){const e=r.get_globalid_array(),t=e.count();for(let r=0;r<t;r++)i.push(e.get_globalid_at(r))}else if(3===r.id_array_type.value){const e=r.get_identifier_array(),t=e.count();for(let r=0;r<t;r++)i.push(e.get_identifier_at(r).toString())}else if(2===r.id_array_type.value){const e=r.get_string_array(),t=e.count();for(let r=0;r<t;r++)i.push(e.get_string_at(r))}else{if(0!==r.id_array_type.value)throw new t("knowledge-graph:layer-support-utils","Tried to encode an unexpected ID Array type.");{const e=r.get_oid_array(),t=e.count();for(let r=0;r<t;r++)i.push(e.get_objectid_at(r).toString())}}n.set(e,i)}return r.delete(),n}function k(e,t){if(!e?.queryResult?.featureResult)return t;const{hasZ:i,hasM:s}=e.queryResult.featureResult,a=e.queryResult.featureResult.fieldNameToAttributeIndexMap;for(const o of e.queryResult.featureResult.features){const e=o.attributes[a.TYPENAME],l=r(t.namedTypeDefinitions,e,()=>({useAllData:!1,members:new Map})),c=o.attributes[a.ELEMENTUID];if(o.compressedGeometry?.coords?.length>0){let e=o.compressedGeometry.lengths;"esriGeometryPoint"===o.compressedGeometry.geometryType&&(e=[]),l.members.set(c,{id:c,linkChartLocation:new n(e,o.compressedGeometry.coords,i,s)})}else l.members.set(c,{id:c})}return t}function M(e,t){for(const[i,n]of e){const e=r(t.namedTypeDefinitions,i,()=>({useAllData:!1,members:new Map}));for(const t of n)e.members.has(t)||e.members.set(t,{id:t})}return t}const C=(e,r)=>{r.set_feature_collection(e),r.encode();const i=r.get_encoding_result();if(0!==i.error.error_code)throw new t("knowledge-graph:layer-support-utils",i.error.error_message);return i.get_byte_buffer()},N={fetchAndConvertSerializedLinkChart:(e,t)=>y(e,t)};export{k as addFeatureCollectionToInclusionDefinition,M as addIdMapToInclusionDefinition,T as deserializeFeatureCollection,F as deserializeIdCollectionMap,f as fetchAndConvertSerializedKnowledgeIdMap,y as fetchAndConvertSerializedLinkChart,b as fetchAndDeserializeFeatureCollection,E as fetchAndDeserializeIdCollectionMap,N as serializationUtilsModuleWrapper,p as serializeInclusionDefinitionToAllPbf,m as serializeInclusionDefinitionToEntitiesPbf,g as serializeInclusionDefinitionToIdCollectionsMapPbf,_ as serializeInclusionDefinitionToRelationshipsPbf,w as setFeatureCollectionProperties};