UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) • 13.2 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import"./has.js";import{strict as e}from"./jsonMap.js";import{getReferenceEllipsoid as s}from"../geometry/ellipsoidUtils.js";import{earth as i,mars as n,moon as t}from"../geometry/support/Ellipsoid.js";import{isGeographic as a,isEarth as r,isWKIDFromMars as c,isWKIDFromMoon as u}from"../geometry/support/spatialReferenceUtils.js";import o from"../geometry/support/WKIDUnitConversion.js";const l=39.37,m=i.radius*Math.PI/200,f=/(?:LENGTH)?UNIT\[([^\]]+)]]$/i,d=o,U=/UNIT\[([^\]]+)]/i,B=new Set([4305,4807,4810,4811,4812,4816,4819,4821,4901,4902,37225,104025,104026,104139,104140]),_=e()({millimeter:"millimeters",centimeter:"centimeters",meter:"meters",meter_german:"german-meters",kilometer:"kilometers",decimeter:"decimeters",micrometer:"micrometers",nanometer:"nanometers","50_kilometers":"50-kilometers","150_kilometers":"150-kilometers",foot:"feet",foot_us:"us-feet",foot_clarke:"clarke-feet",fathom:"fathoms",nautical_mile:"nautical-miles",chain_us:"us-chains",link_us:"us-links",mile_us:"us-miles",yard_clarke:"clarke-yards",chain_clarke:"clarke-chains",link_clarke:"clarke-links",yard_sears:"sears-yards",foot_sears:"sears-feet",chain_sears:"sears-chains",link_sears:"sears-links",yard_benoit_1895_a:"benoit-1895-a-yards",foot_benoit_1895_a:"benoit-1895-a-feet",chain_benoit_1895_a:"benoit-1895-a-chains",link_benoit_1895_a:"benoit-1895-a-links",yard_benoit_1895_b:"benoit-1895-b-yards",foot_benoit_1895_b:"benoit-1895-b-feet",chain_benoit_1895_b:"benoit-1895-b-chains",link_benoit_1895_b:"benoit-1895-b-links",foot_1865:"1865-feet",foot_indian:"indian-feet",foot_indian_1937:"indian-1937-feet",foot_indian_1962:"indian-1962-feet",foot_indian_1975:"indian-1975-feet",yard_indian:"indian-yards",yard_indian_1937:"indian-1937-yards",yard_indian_1962:"indian-1962-yards",yard_indian_1975:"indian-1975-yards",statute_mile:"statute-miles",foot_gold_coast:"gold-coast-feet",foot_british_1936:"british-1936-feet",yard:"yards",chain:"chains",link:"links",yard_sears_1922_truncated:"sears-1922-truncated-yards",foot_sears_1922_truncated:"sears-1922-truncated-feet",chain_sears_1922_truncated:"sears-1922-truncated-chains",link_sears_1922_truncated:"sears-1922-truncated-links",yard_us:"us-yards",inch:"inches",inch_us:"us-inches",rod:"rods",rod_us:"us-rods",nautical_mile_us:"us-nautical-miles",nautical_mile_uk:"uk-nautical-miles",smoot:"smoots",vara_tx:"tx-vara",point:"points"}),h=e=>e*e,b=e=>e*e*e,k={length:{baseUnit:"meters",units:{millimeters:{inBaseUnits:.001},centimeters:{inBaseUnits:.01},meters:{inBaseUnits:1},feet:{inBaseUnits:.3048},"us-feet":{inBaseUnits:.3048006096012192},"clarke-feet":{inBaseUnits:.3047972654},fathoms:{inBaseUnits:1.8288},"nautical-miles":{inBaseUnits:1852},"german-meters":{inBaseUnits:1.0000135965},"us-chains":{inBaseUnits:20.11684023368047},"us-links":{inBaseUnits:.2011684023368047},"us-miles":{inBaseUnits:1609.347218694438},kilometers:{inBaseUnits:1e3},"clarke-yards":{inBaseUnits:.9143917962},"clarke-chains":{inBaseUnits:20.1166195164},"clarke-links":{inBaseUnits:.201166195164},"sears-yards":{inBaseUnits:.9143984146160287},"sears-feet":{inBaseUnits:.3047994715386762},"sears-chains":{inBaseUnits:20.11676512155263},"sears-links":{inBaseUnits:.2011676512155263},"benoit-1895-a-yards":{inBaseUnits:.9143992},"benoit-1895-a-feet":{inBaseUnits:.3047997333333333},"benoit-1895-a-chains":{inBaseUnits:20.1167824},"benoit-1895-a-links":{inBaseUnits:.201167824},"benoit-1895-b-yards":{inBaseUnits:.9143992042898124},"benoit-1895-b-feet":{inBaseUnits:.3047997347632708},"benoit-1895-b-chains":{inBaseUnits:20.11678249437587},"benoit-1895-b-links":{inBaseUnits:.2011678249437587},"1865-feet":{inBaseUnits:.3048008333333334},"indian-feet":{inBaseUnits:.3047995102481469},"indian-1937-feet":{inBaseUnits:.30479841},"indian-1962-feet":{inBaseUnits:.3047996},"indian-1975-feet":{inBaseUnits:.3047995},"indian-yards":{inBaseUnits:.9143985307444408},"indian-1937-yards":{inBaseUnits:.91439523},"indian-1962-yards":{inBaseUnits:.9143988},"indian-1975-yards":{inBaseUnits:.9143985},miles:{inBaseUnits:1609.344},"statute-miles":{inBaseUnits:1609.344},"gold-coast-feet":{inBaseUnits:.3047997101815088},"british-1936-feet":{inBaseUnits:.3048007491},yards:{inBaseUnits:.9144},chains:{inBaseUnits:20.1168},links:{inBaseUnits:.201168},"sears-1922-truncated-yards":{inBaseUnits:.914398},"sears-1922-truncated-feet":{inBaseUnits:.3047993333333334},"sears-1922-truncated-chains":{inBaseUnits:20.116756},"sears-1922-truncated-links":{inBaseUnits:.20116756},"us-yards":{inBaseUnits:.9144018288036576},decimeters:{inBaseUnits:.1},inches:{inBaseUnits:.0254},"us-inches":{inBaseUnits:.0254000508001016},rods:{inBaseUnits:5.0292},"us-rods":{inBaseUnits:5.029210058420118},"us-nautical-miles":{inBaseUnits:1853.248},"uk-nautical-miles":{inBaseUnits:1853.184},smoots:{inBaseUnits:1.7018},"tx-vara":{inBaseUnits:.8466683600033867},points:{inBaseUnits:.0003527777777777778},micrometers:{inBaseUnits:1e-6},nanometers:{inBaseUnits:1e-9},"50-kilometers":{inBaseUnits:5e4},"150-kilometers":{inBaseUnits:15e4}}},area:{baseUnit:"square-meters",units:{"square-millimeters":{inBaseUnits:h(.001)},"square-centimeters":{inBaseUnits:h(.01)},"square-decimeters":{inBaseUnits:h(.1)},"square-meters":{inBaseUnits:1},"square-kilometers":{inBaseUnits:h(1e3)},"square-inches":{inBaseUnits:h(.0254)},"square-feet":{inBaseUnits:h(.3048)},"square-yards":{inBaseUnits:h(.9144)},"square-miles":{inBaseUnits:h(1609.344)},"square-nautical-miles":{inBaseUnits:h(1852)},"square-us-feet":{inBaseUnits:h(1200/3937)},acres:{inBaseUnits:.0015625*h(1609.344)},ares:{inBaseUnits:100},hectares:{inBaseUnits:1e4}}},volume:{baseUnit:"liters",units:{liters:{inBaseUnits:1},"cubic-millimeters":{inBaseUnits:1e3*b(.001)},"cubic-centimeters":{inBaseUnits:1e3*b(.01)},"cubic-decimeters":{inBaseUnits:1e3*b(.1)},"cubic-meters":{inBaseUnits:1e3},"cubic-kilometers":{inBaseUnits:1e3*b(1e3)},"cubic-inches":{inBaseUnits:1e3*b(.0254)},"cubic-feet":{inBaseUnits:1e3*b(.3048)},"cubic-yards":{inBaseUnits:1e3*b(.9144)},"cubic-miles":{inBaseUnits:1e3*b(1609.344)}}},angle:{baseUnit:"radians",units:{radians:{inBaseUnits:1},degrees:{inBaseUnits:Math.PI/180}}}},y=(()=>{const e={};for(const s in k)for(const i in k[s].units)e[i]=s;return e})();function q(e,s,i){return e*k[i].units[s].inBaseUnits}function p(e,s,i){return e/k[i].units[s].inBaseUnits}const g=["metric","imperial","square-inches","square-feet","square-yards","square-miles","square-nautical-miles","square-us-feet","square-meters","square-kilometers","acres","ares","hectares"],w=["metric","imperial","inches","feet","yards","miles","nautical-miles","us-feet","meters","kilometers"],M=new Map([["meters","square-meters"],["feet","square-feet"],["us-feet","square-us-feet"]]);function S(e){return"imperial"===e||"metric"===e}function D(e){const s=y[e];if(!s)throw new Error("unknown type");return s}function v(e){return k[e].baseUnit}function C(e){return v(D(e))}function P(e,s=null){return s=s||D(e),k[s].baseUnit===e}function x(e,s,i){if(s===i)return e;const n=D(s);if(n!==D(i))throw new Error("incompatible units");const t=P(s,n)?e:q(e,s,n);return P(i,n)?t:p(t,i,n)}function E(e,s,i,n=!1){if(!n&&a(s))throw new Error("Unable to convert from an angular unit to a linear unit.");const t=se(s);return t!==i&&(e=t?x(e,t,i):x(e*=Q(s),"meters",i)),e}function I(e,s,i,n=!1){if(!n&&a(i))throw new Error("Unable to convert from a linear unit to an angular unit.");const t=se(i);return s!==t&&(e=t?x(e,s,t):x(e,s,"meters")/Q(i)),e}function j(e){switch(e){case"metric":return"meters";case"imperial":return"feet";default:return e}}function R(e){return j(e)}function N(e){switch(e){case"metric":return"square-meters";case"imperial":return"square-feet";default:return e}}function O(e,s,i){switch(i){case"metric":return J(e,s);case"imperial":return K(e,s);default:return i}}function F(e,s,i){switch(i){case"metric":return T(e,s);case"imperial":return A(e,s);default:return i}}function J(e,s){const i=x(e,s,"meters");return Math.abs(i)<3e3?"meters":"kilometers"}function T(e,s){const i=x(e,s,"meters");return Math.abs(i)<1e5?"meters":"kilometers"}function K(e,s){const i=x(e,s,"feet");return Math.abs(i)<1e3?"feet":"miles"}function A(e,s){const i=x(e,s,"feet");return Math.abs(i)<1e5?"feet":"miles"}function G(e,s){const i=x(e,s,"square-meters");return Math.abs(i)<3e6?"square-meters":"square-kilometers"}function H(e,s){const i=x(e,s,"square-feet");return Math.abs(i)<1e6?"square-feet":"square-miles"}function L(e,s,i){switch(i){case"metric":return G(e,s);case"imperial":return H(e,s);default:return i}}function Y(e,s,i){return x(e,s,"meters")/(i*Math.PI/180)}function W(e){return _.fromJSON(e.toLowerCase())||null}function $(e){if(null!=e&&!r(e))return 1;const s=Q(e);return s>1e5?1:s}function z(e){return Q(e)>=s(e).metersPerDegree?"meters":se(e)}function Q(e,s=i.metersPerDegree){return V(e,!0)??s}function V(e,s=!1){const i=e?.wkid??null,a=e?.wkt2??e?.wkt??null;let r=null;if(i){if(c(i))return n.metersPerDegree;if(u(i))return t.metersPerDegree;r=d.values[d[i]],!r&&s&&B.has(i)&&(r=m)}else a&&(re(a)?r=Z(f.exec(a),r):ae(a)&&(r=Z(U.exec(a),r)));return r}function X(e){return a(e)?1:Q(e)}function Z(e,s){return e?.[1]?ee(e[1]):s}function ee(e){return parseFloat(e.split(",")[1])}function se(e){const s=e?.wkid??null,i=e?.wkt2??e?.wkt??null;let n=null;if(s)n=d.units[d[s]];else if(i){const e=re(i)?f:ae(i)?U:null;if(e){const s=e.exec(i);s?.[1]&&(n=ue(s[1]))}}return null!=n?W(n):null}function ie(e){const s=se(e);return null!=s&&w.includes(s)?s:null}function ne(e){const s=z(e);return null!=s&&w.includes(s)?s:null}function te(e){const s=se(e);return null==s?null:M.get(s)}function ae(e){return/^GEOCCS/i.test(e)}function re(e){return/^\s*(?:PROJCS|PROJCRS|PROJECTEDCRS)/i.test(e)}const ce=1e-7;function ue(e){const s=/[\\"']{1}([^\\"']+)/.exec(e);let i=s?.[1];if(!i||!W(i)){const s=ee(e);i=null;const n=d.values;for(let e=0;e<n.length;++e)if(Math.abs(s-n[e])<ce){i=d.units[e];break}}return i}function oe(e){const s=se(e);if(null==s)return null;switch(s){case"feet":case"us-feet":case"clarke-feet":case"fathoms":case"nautical-miles":case"us-chains":case"us-links":case"us-miles":case"clarke-yards":case"clarke-chains":case"clarke-links":case"sears-yards":case"sears-feet":case"sears-chains":case"sears-links":case"benoit-1895-a-yards":case"benoit-1895-a-feet":case"benoit-1895-a-chains":case"benoit-1895-a-links":case"benoit-1895-b-yards":case"benoit-1895-b-feet":case"benoit-1895-b-chains":case"benoit-1895-b-links":case"1865-feet":case"indian-feet":case"indian-1937-feet":case"indian-1962-feet":case"indian-1975-feet":case"indian-yards":case"indian-1937-yards":case"indian-1962-yards":case"indian-1975-yards":case"statute-miles":case"gold-coast-feet":case"british-1936-feet":case"yards":case"chains":case"links":case"sears-1922-truncated-yards":case"sears-1922-truncated-feet":case"sears-1922-truncated-chains":case"sears-1922-truncated-links":case"us-yards":case"inches":case"us-inches":case"rods":case"us-rods":case"us-nautical-miles":case"uk-nautical-miles":case"smoots":case"tx-vara":case"points":return"imperial";case"millimeters":case"centimeters":case"meters":case"german-meters":case"kilometers":case"decimeters":case"micrometers":case"nanometers":case"50-kilometers":case"150-kilometers":return"metric"}return null}const le={esriAcres:"acres",esriAres:"ares",esriHectares:"hectares",esriSquareCentimeters:"square-centimeters",esriSquareDecimeters:"square-decimeters",esriSquareFeet:"square-feet",esriSquareInches:"square-inches",esriSquareKilometers:"square-kilometers",esriSquareMeters:"square-meters",esriSquareMiles:"square-miles",esriSquareMillimeters:"square-millimeters",esriSquareUsFeet:"square-us-feet",esriSquareYards:"square-yards"},me={esriCentimeters:"centimeters",esriDecimeters:"decimeters",esriFeet:"feet",esriInches:"inches",esriKilometers:"kilometers",esriMeters:"meters",esriMiles:"miles",esriMillimeters:"millimeters",esriNauticalMiles:"nautical-miles",esriYards:"yards"},fe={esriDUDecimalDegrees:"degrees",esriDURadians:"radians"},de=e()(le),Ue=e()(me),Be=e()(fe);export{L as adaptiveAreaUnit,H as adaptiveImperialAreaUnit,K as adaptiveImperialLengthUnit,A as adaptiveImperialVerticalLengthUnit,O as adaptiveLengthUnit,G as adaptiveMetricAreaUnit,J as adaptiveMetricLengthUnit,T as adaptiveMetricVerticalLengthUnit,F as adaptiveVerticalLengthUnit,Be as angleUnitsJSONMap,te as areaUnitFromSpatialReference,de as areaUnitsJSONMap,C as baseUnitForUnit,v as baseUnitForUnitType,E as convertFromSpatialReferenceUnit,I as convertToSpatialReferenceUnit,x as convertUnit,N as defaultAreaUnit,j as defaultLengthUnit,R as defaultVerticalLengthUnit,oe as getDefaultUnitSystem,X as getMetersPerCartesianUnitForSR,V as getMetersPerUnit,Q as getMetersPerUnitForSR,$ as getMetersPerVerticalUnitForSR,se as getUnitString,z as getVerticalUnitStringForSR,B as gradGcsIds,l as inchesPerMeter,P as isBaseUnit,S as isMeasurementSystem,re as isProjectedWKT,Y as lengthToDegrees,ie as lengthUnitFromSpatialReference,Ue as lengthUnitsJSONMap,g as measurementAreaUnits,w as measurementLengthUnits,W as unitFromRESTJSON,D as unitType,ne as verticalLengthUnitFromSpatialReference};