@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 13.4 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/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,isWKIDFromMars as r,isWKIDFromMoon as c,isEarth 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=["inches","feet","yards","miles","nautical-miles","us-feet","millimeters","centimeters","decimeters","meters","kilometers"],w=["square-inches","square-feet","square-yards","square-miles","square-nautical-miles","square-us-feet","square-millimeters","square-centimeters","square-decimeters","square-meters","square-kilometers","acres","ares","hectares"],M=["metric","imperial"],S=[...M,...w],D=[...M,...g],v=new Map([["meters","square-meters"],["feet","square-feet"],["us-feet","square-us-feet"]]);function C(e){return"imperial"===e||"metric"===e}function P(e){const s=y[e];if(!s)throw new Error("unknown type");return s}function x(e){return k[e].baseUnit}function E(e){return x(P(e))}function I(e,s=null){return s=s||P(e),k[s].baseUnit===e}function j(e,s,i){if(s===i)return e;const n=P(s);if(n!==P(i))throw new Error("incompatible units");const t=I(s,n)?e:q(e,s,n);return I(i,n)?t:p(t,i,n)}function R(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=te(s);return t!==i&&(e=t?j(e,t,i):j(e*=Z(s),"meters",i)),e}function N(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=te(i);return s!==t&&(e=t?j(e,s,t):j(e,s,"meters")/Z(i)),e}function O(e){switch(e){case"metric":return"meters";case"imperial":return"feet";default:return e}}function F(e){return O(e)}function J(e){switch(e){case"metric":return"square-meters";case"imperial":return"square-feet";default:return e}}function T(e,s,i){switch(i){case"metric":return A(e,s);case"imperial":return H(e,s);default:return i}}function K(e,s,i){switch(i){case"metric":return G(e,s);case"imperial":return L(e,s);default:return i}}function A(e,s){const i=j(e,s,"meters");return Math.abs(i)<3e3?"meters":"kilometers"}function G(e,s){const i=j(e,s,"meters");return Math.abs(i)<1e5?"meters":"kilometers"}function H(e,s){const i=j(e,s,"feet");return Math.abs(i)<1e3?"feet":"miles"}function L(e,s){const i=j(e,s,"feet");return Math.abs(i)<1e5?"feet":"miles"}function Y(e,s){const i=j(e,s,"square-meters");return Math.abs(i)<3e6?"square-meters":"square-kilometers"}function W(e,s){const i=j(e,s,"square-feet");return Math.abs(i)<1e6?"square-feet":"square-miles"}function $(e,s,i){switch(i){case"metric":return Y(e,s);case"imperial":return W(e,s);default:return i}}function z(e,s,i){return j(e,s,"meters")/(i*Math.PI/180)}function Q(e){return _.fromJSON(e.toLowerCase())||null}function V(e){if(null!=e&&!u(e))return 1;const s=Z(e);return s>1e5?1:s}function X(e){return Z(e)>=s(e).metersPerDegree?"meters":te(e)}function Z(e,s=i.metersPerDegree){return ee(e,!0)??s}function ee(e,s=!1){const i=e?.wkid??null,a=e?.wkt2??e?.wkt??null;let u=null;if(i){if(r(i))return n.metersPerDegree;if(c(i))return t.metersPerDegree;u=d.values[d[i]],!u&&s&&B.has(i)&&(u=m)}else a&&(oe(a)?u=ie(f.exec(a),u):ue(a)&&(u=ie(U.exec(a),u)));return u}function se(e){return a(e)?1:Z(e)}function ie(e,s){return e?.[1]?ne(e[1]):s}function ne(e){return parseFloat(e.split(",")[1])}function te(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=oe(i)?f:ue(i)?U:null;if(e){const s=e.exec(i);s?.[1]&&(n=me(s[1]))}}return null!=n?Q(n):null}function ae(e){const s=te(e);return null!=s&&D.includes(s)?s:null}function re(e){const s=X(e);return null!=s&&D.includes(s)?s:null}function ce(e){const s=te(e);return null==s?null:v.get(s)}function ue(e){return/^GEOCCS/i.test(e)}function oe(e){return/^\s*(?:PROJCS|PROJCRS|PROJECTEDCRS)/i.test(e)}const le=1e-7;function me(e){const s=/[\\"']{1}([^\\"']+)/.exec(e);let i=s?.[1];if(!i||!Q(i)){const s=ne(e);i=null;const n=d.values;for(let e=0;e<n.length;++e)if(Math.abs(s-n[e])<le){i=d.units[e];break}}return i}function fe(e){const s=te(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 de={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"},Ue={esriCentimeters:"centimeters",esriDecimeters:"decimeters",esriFeet:"feet",esriInches:"inches",esriKilometers:"kilometers",esriMeters:"meters",esriMiles:"miles",esriMillimeters:"millimeters",esriNauticalMiles:"nautical-miles",esriYards:"yards"},Be={esriDUDecimalDegrees:"degrees",esriDURadians:"radians"},_e=e()(de),he=e()(Ue),be=e()(Be);export{$ as adaptiveAreaUnit,W as adaptiveImperialAreaUnit,H as adaptiveImperialLengthUnit,L as adaptiveImperialVerticalLengthUnit,T as adaptiveLengthUnit,Y as adaptiveMetricAreaUnit,A as adaptiveMetricLengthUnit,G as adaptiveMetricVerticalLengthUnit,K as adaptiveVerticalLengthUnit,be as angleUnitsJSONMap,ce as areaUnitFromSpatialReference,_e as areaUnitsJSONMap,E as baseUnitForUnit,x as baseUnitForUnitType,R as convertFromSpatialReferenceUnit,N as convertToSpatialReferenceUnit,j as convertUnit,J as defaultAreaUnit,O as defaultLengthUnit,F as defaultVerticalLengthUnit,fe as getDefaultUnitSystem,se as getMetersPerCartesianUnitForSR,ee as getMetersPerUnit,Z as getMetersPerUnitForSR,V as getMetersPerVerticalUnitForSR,te as getUnitString,X as getVerticalUnitStringForSR,B as gradGcsIds,l as inchesPerMeter,I as isBaseUnit,C as isMeasurementSystem,oe as isProjectedWKT,z as lengthToDegrees,ae as lengthUnitFromSpatialReference,he as lengthUnitsJSONMap,S as measurementAreaUnits,D as measurementLengthUnits,Q as unitFromRESTJSON,P as unitType,re as verticalLengthUnitFromSpatialReference};