UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.88 kB
import e from"../../request.js";import t from"../../core/Error.js";import{queryAllJSON as r}from"../../layers/support/featureQueryAll.js";import o from"../../portal/PortalItem.js";import a from"../../rest/support/FeatureSet.js";function n(e,t){const r=[],o=new Map;for(const n of t){const t=e.getLayerIdBySourceId(n.networkSourceId);if(null==t)continue;let r=o.get(t);void 0===r&&(r=[]),r.push(n.objectId),o.set(t,r)}const a=e.featureServiceUrl;return o.forEach(((e,t)=>r.push({layerUrl:`${a}/${t}`,objectIds:e}))),r}async function l(e){const t=e.layers,o=e.layerInfos,n=e.returnGeometry||!1,l=e.outSpatialReference;await Promise.all(t.map((e=>e.load())));return(await Promise.all(t.map((async e=>{const t=o.find((t=>t.layerUrl===e.parsedUrl?.path));if(!t||!t.objectIds?.length)return{layer:e,featureSet:void 0};const s=e.createQuery();s.returnGeometry=n,s.outFields=t.outFields||["*"],s.outSpatialReference=l,s.gdbVersion=e.gdbVersion,s.objectIds=t.objectIds;const i=a.fromJSON(await r(e,s));return{layer:e,featureSet:i}})))).filter((e=>void 0!==e.featureSet))}async function s(e,t){if("Utility Network Layer"===e){const{default:e}=await import("../UtilityNetwork.js");return new e({layerUrl:t})}return null}async function i(r){let a="portalItem"in r?r:{portalItem:r};!a.portalItem||a.portalItem instanceof o||(a={...a,portalItem:new o(a.portalItem)});const n=a.portalItem;if(await n.load(),"Feature Service"!==n.type)throw new t("portal:unknown-item-type","Unknown item type '${type}'",{type:n.type});const l=n.url,i=await e(l,{responseType:"json",query:{f:"json"}}),u="Network Layer";if(i.data.type&&i.data.type.includes(u))return s(i.data.type,l);if(i.data.layers){const e=i.data.layers.find((e=>e.type.includes(u)));if(e){const t=`${l}/${e.id}`;return s(e.type,t)}}return null}export{l as getFeaturesFromLayers,n as getObjectIdsFromElements,i as networkFromPortalItem};