UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 2.38 kB
import t from"../../core/Error.js";import has from"../../core/has.js";import{isSome as o,isNone as r}from"../../core/maybe.js";import{whenOrAbort as e}from"../../core/promiseUtils.js";import{DataLayerSource as a}from"../../layers/support/source/DataLayerSource.js";import{executeRawQueryJSON as s}from"./executeQueryJSON.js";import{executeRawQueryPBF as n}from"./executeQueryPBF.js";import i from"../support/FeatureSet.js";import f from"../support/Query.js";async function c(t,o,r,e){return u(t,o,r,e).then((t=>l(o,t,r,e)))}async function u(t,o,r,e){const a={...e},i=p(o,r),f=null!=o.outStatistics?.[0],c=has("featurelayer-pbf-statistics"),u=!f||c;let l;if("pbf"===r?.format&&u)try{l=await n(t,i,a)}catch(d){if("query:parsing-pbf"!==d.name)throw d;r.format="json"}return"json"!==r?.format&&u||(l=await s(t,i,a)),m(r?.fieldsIndex,l.fields),l}function m(t,r){if(o(t)&&o(r))for(const o of r){const r=t.get(o.name);r&&Object.assign(o,r.toJSON())}}async function l(t,o,a,s){const n=a?.infoFor3D;if(!d(t,n)||r(n)||!o.assetMaps||!o.features||!o.features.length)return i.fromJSON(o);const{meshFeatureSetFromJSON:f}=await e(import("../support/meshFeatureSet.js"),s);return f(t,n,o)}function p(e,s){let n=f.from(e);n.sourceSpatialReference=n.sourceSpatialReference??s?.sourceSpatialReference??null,(s?.gdbVersion||s?.dynamicDataSource)&&(n=n===e?n.clone():n,n.gdbVersion=e.gdbVersion||s.gdbVersion,n.dynamicDataSource=e.dynamicDataSource?a.from(e.dynamicDataSource):s.dynamicDataSource);const i=s?.infoFor3D;if(o(i)&&d(e,i)){n=n===e?n.clone():n,n.formatOf3DObjects=null;for(const t of i.queryFormats){if("3D_glb"===t){n.formatOf3DObjects=t;break}"3D_gltf"!==t||n.formatOf3DObjects||(n.formatOf3DObjects=t)}if(!n.formatOf3DObjects)throw new t("query:unsupported-3d-query-formats","Could not find any supported 3D object query format. Only supported formats are 3D_glb and 3D_gltf");if(r(n.outFields)||!n.outFields.includes("*")){n=n===e?n.clone():n,r(n.outFields)&&(n.outFields=[]);const{originX:t,originY:o,originZ:a,translationX:s,translationY:f,translationZ:c,scaleX:u,scaleY:m,scaleZ:l,rotationX:p,rotationY:d,rotationZ:y,rotationDeg:j}=i.transformFieldRoles;n.outFields.push(t,o,a,s,f,c,u,m,l,p,d,y,j)}}return n}function d(t,r){return o(r)&&!0===t.returnGeometry&&"xyFootprint"!==t.multipatchOption&&!t.outStatistics}export{c as executeQuery,u as executeRawQuery,m as normalizeFields};