imageService.js 3.6 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.24/esri/copyright.txt for details.
  4. */
  5. import"../geometry.js";import e from"../request.js";import{isSome as t}from"../core/maybe.js";import{normalizeCentralMeridian as n}from"../geometry/support/normalizeUtils.js";import{parseUrl as o,encode as a,asValidOptions as s}from"./utils.js";import r from"./support/ImageAngleResult.js";import i from"./support/ImageIdentifyResult.js";import m from"./support/ImagePixelLocationResult.js";import c from"./support/ImageSampleResult.js";import l from"../geometry/SpatialReference.js";function u(e){const t=e?.time;if(t&&(null!=t.start||null!=t.end)){const n=[];null!=t.start&&n.push(t.start),null==t.end||n.includes(t.end)||n.push(t.end),e.time=n.join(",")}}async function p(e,r,i){const m=o(e),c=r.geometry?[r.geometry]:[],l=await n(c),p=r.toJSON();u(p);const f=l&&l[0];t(f)&&(p.geometry=f.toJSON());const g=a({...m.query,f:"json",...p});return s(g,i)}async function f(n,i,m){const c=i.toJSON();t(c.angleName)&&(c.angleName=c.angleName.join(",")),t(i.point)&&i.point.spatialReference?.imageCoordinateSystem&&(c.point.spatialReference=h(i.point.spatialReference)),t(i.spatialReference)&&i.spatialReference.imageCoordinateSystem&&(c.spatialReference=R(i.spatialReference));const u=o(n),p=a({...u.query,f:"json",...c}),f=s(p,m),{data:g}=await e(`${u.path}/computeAngles`,f);return g.spatialReference=g.spatialReference?null!=g.spatialReference.geodataXform?new l({wkid:0,imageCoordinateSystem:g.spatialReference}):l.fromJSON(g.spatialReference):null,"NaN"===g.north&&(g.north=null),"NaN"===g.up&&(g.up=null),new r(g)}async function g(t,n,r){const i=n.toJSON(),{geometries:c}=n;for(let e=0;e<c.length;e++)c[e].spatialReference?.imageCoordinateSystem&&(i.geometries.geometries[e].spatialReference=h(c[e].spatialReference));const l=o(t),u=a({...l.query,f:"json",...i}),p=s(u,r),{data:f}=await e(`${l.path}/computePixelLocation`,p);return m.fromJSON(f)}async function y(t,n,a){const s=await p(t,n,a),r=o(t),{data:i}=await e(`${r.path}/computeStatisticsHistograms`,s),{statistics:m}=i;return m?.length&&m.forEach((e=>{e.avg=e.mean,e.stddev=e.standardDeviation})),{statistics:m,histograms:i.histograms}}async function d(t,n,a){const s=await p(t,n,a),r=o(t),{data:i}=await e(`${r.path}/computeHistograms`,s);return{histograms:i.histograms}}async function N(r,i,m){const l=i.toJSON();u(l),l.outFields?.length&&(l.outFields=l.outFields.join(","));const p=(await n(i.geometry))?.[0];t(p)&&(l.geometry=p.toJSON());const f=o(r),g=a({...f.query,f:"json",...l}),y=s(g,m),{data:d}=await e(`${f.path}/getSamples`,y),N=d?.samples?.map((e=>{const t="NaN"===e.value||""===e.value?null:e.value.split(" ").map((e=>Number(e)));return{...e,pixelValue:t}}));return c.fromJSON({samples:N})}async function S(r,m,c){const l=o(r),u=m.geometry?[m.geometry]:[];return n(u).then((n=>{const o=m.toJSON(),r=n&&n[0];t(r)&&(o.geometry=JSON.stringify(r.toJSON()));const i=a({...l.query,f:"json",...o}),u=s(i,c);return e(l.path+"/identify",u)})).then((e=>i.fromJSON(e.data)))}function h(e){const{imageCoordinateSystem:t}=e;if(t){const{id:e,referenceServiceName:n}=t;return null!=e?n?{icsid:e,icsns:n}:{icsid:e}:{ics:t}}return e.toJSON()}function R(e,t){const n=h(e),{icsid:o,icsns:a,wkid:s}=n;return null!=o?null==a||t?.toLowerCase().includes("/"+a.toLowerCase()+"/")?`0:${o}`:JSON.stringify(n):s?s.toString():JSON.stringify(n)}export{f as computeAngles,d as computeHistograms,g as computePixelSpaceLocations,y as computeStatisticsHistograms,h as getImageSpatialReferenceJSON,R as getImageSpatialReferenceQueryParameter,N as getSamples,S as identify};