casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 24.2 kB
Source Map (JSON)
{"version":3,"file":"MeasureUnits.mjs","sources":["../../../../../packages/shared/src/MeasureUnits.ts"],"sourcesContent":["import { defaultValue } from 'casc-cesium-utils/util'\n\nconst DistanceUnits = Object.freeze({\n METERS: 'METERS',\n CENTIMETERS: 'CENTIMETERS',\n KILOMETERS: 'KILOMETERS',\n FEET: 'FEET',\n US_SURVEY_FEET: 'US_SURVEY_FEET',\n INCHES: 'INCHES',\n YARDS: 'YARDS',\n MILES: 'MILES'\n})\n\nconst AreaUnits = Object.freeze({\n SQUARE_METERS: 'SQUARE_METERS',\n SQUARE_CENTIMETERS: 'SQUARE_CENTIMETERS',\n SQUARE_KILOMETERS: 'SQUARE_KILOMETERS',\n SQUARE_FEET: 'SQUARE_FEET',\n SQUARE_INCHES: 'SQUARE_INCHES',\n SQUARE_YARDS: 'SQUARE_YARDS',\n SQUARE_MILES: 'SQUARE_MILES',\n ACRES: 'ACRES',\n HECTARES: 'HECTARES'\n})\n\nconst VolumeUnits = Object.freeze({\n CUBIC_METERS: 'CUBIC_METERS',\n CUBIC_CENTIMETERS: 'CUBIC_CENTIMETERS',\n CUBIC_KILOMETERS: 'CUBIC_KILOMETERS',\n CUBIC_FEET: 'CUBIC_FEET',\n CUBIC_INCHES: 'CUBIC_INCHES',\n CUBIC_YARDS: 'CUBIC_YARDS',\n CUBIC_MILES: 'CUBIC_MILES'\n})\n\nconst AngleUnits = Object.freeze({\n DEGREES: 'DEGREES',\n RADIANS: 'RADIANS',\n DEGREES_MINUTES_SECONDS: 'DEGREES_MINUTES_SECONDS',\n GRADE: 'GRADE',\n RATIO: 'RATIO'\n})\n\nclass MeasureUnits {\n distanceUnits: string\n areaUnits: string\n volumeUnits: string\n angleUnits: string\n slopeUnits: string\n\n constructor(options?) {\n options = defaultValue(options, {})\n this.distanceUnits = defaultValue(options.distanceUnits, DistanceUnits.METERS)\n this.areaUnits = defaultValue(options.areaUnits, AreaUnits.SQUARE_METERS)\n this.volumeUnits = defaultValue(options.volumeUnits, VolumeUnits.CUBIC_METERS)\n this.angleUnits = defaultValue(options.angleUnits, AngleUnits.DEGREES)\n this.slopeUnits = defaultValue(options.slopeUnits, AngleUnits.DEGREES)\n }\n\n static numberToString = function (number, locale, decimals) {\n return numberToFormattedString(number, locale, decimals)\n }\n\n static distanceToString(distance: number, distanceUnits: string, locale?, decimals?) {\n distance = MeasureUnits.convertDistance(distance, DistanceUnits.METERS, distanceUnits)\n return (\n numberToFormattedString(distance, locale, decimals) +\n MeasureUnits.getDistanceUnitSpacing(distanceUnits) +\n MeasureUnits.getDistanceUnitSymbol(distanceUnits)\n )\n }\n\n static areaToString(area: number, areaUnits: string, locale?, decimals?) {\n area = MeasureUnits.convertArea(area, AreaUnits.SQUARE_METERS, areaUnits)\n return numberToFormattedString(area, locale, decimals) + MeasureUnits.getAreaUnitSpacing(areaUnits) + MeasureUnits.getAreaUnitSymbol(areaUnits)\n }\n\n static angleToString(angle: number, angleUnits: string, locale?, decimals?) {\n const { Math: CesiumMath } = Cesium\n if (angleUnits === AngleUnits.DEGREES || angleUnits === AngleUnits.RADIANS || angleUnits === AngleUnits.GRADE) {\n angle = convertAngleFromRadians(angle, angleUnits)\n\n return (\n numberToFormattedString(angle, locale, decimals) + MeasureUnits.getAngleUnitSpacing(angleUnits) + MeasureUnits.getAngleUnitSymbol(angleUnits)\n )\n }\n\n if (angleUnits === AngleUnits.DEGREES_MINUTES_SECONDS) {\n const angleDegrees = CesiumMath.toDegrees(angle)\n const prefix = angleDegrees < 0 ? '-' : ''\n const degrees = Math.floor(angleDegrees)\n const minutes = 60 * (angleDegrees - degrees)\n const seconds = Math.floor(minutes)\n return prefix + degrees + '° ' + seconds + \"' \" + numberToFormattedString(60 * (minutes - seconds), void 0, decimals) + '\"'\n }\n if (angleUnits === AngleUnits.RATIO) {\n //\n }\n }\n\n static volumeToString(volume: number, volumeUnits: string, locale?, decimals?) {\n volume = MeasureUnits.convertArea(volume, VolumeUnits.CUBIC_METERS, volumeUnits)\n return (\n numberToFormattedString(volume, locale, decimals) +\n MeasureUnits.getVolumeUnitSpacing(volumeUnits) +\n MeasureUnits.getVolumeUnitSymbol(volumeUnits)\n )\n }\n\n static getDistanceUnitSpacing(distanceUnits: string) {\n return ' '\n }\n\n static getAreaUnitSpacing(distanceUnits: string) {\n return ' '\n }\n\n static getAngleUnitSpacing(angleUnits: string) {\n return angleUnits === AngleUnits.RADIANS ? ' ' : ''\n }\n\n static getVolumeUnitSpacing(distanceUnits: string) {\n return ' '\n }\n\n static getDistanceUnitSymbol(distanceUnits: string) {\n switch (distanceUnits) {\n case DistanceUnits.METERS:\n return 'm'\n case DistanceUnits.CENTIMETERS:\n return 'cm'\n case DistanceUnits.KILOMETERS:\n return 'km'\n case DistanceUnits.FEET:\n case DistanceUnits.US_SURVEY_FEET:\n return 'ft'\n case DistanceUnits.INCHES:\n return 'in'\n case DistanceUnits.YARDS:\n return 'yd'\n case DistanceUnits.MILES:\n return 'mi'\n default:\n return void 0\n }\n }\n\n static getAreaUnitSymbol(areaUnits: string) {\n switch (areaUnits) {\n case AreaUnits.SQUARE_METERS:\n return 'm²'\n case AreaUnits.SQUARE_CENTIMETERS:\n return 'cm²'\n case AreaUnits.SQUARE_KILOMETERS:\n return 'km²'\n case AreaUnits.SQUARE_FEET:\n return 'sq ft'\n case AreaUnits.SQUARE_INCHES:\n return 'sq in'\n case AreaUnits.SQUARE_YARDS:\n return 'sq yd'\n case AreaUnits.SQUARE_MILES:\n return 'sq mi'\n case AreaUnits.ACRES:\n return 'ac'\n case AreaUnits.HECTARES:\n return 'ha'\n default:\n return void 0\n }\n }\n\n static getVolumeUnitSymbol(volumeUnits) {\n switch (volumeUnits) {\n case VolumeUnits.CUBIC_METERS:\n return 'm³'\n case VolumeUnits.CUBIC_CENTIMETERS:\n return 'cm³'\n case VolumeUnits.CUBIC_KILOMETERS:\n return 'km³'\n case VolumeUnits.CUBIC_FEET:\n return 'cu ft'\n case VolumeUnits.CUBIC_INCHES:\n return 'cu in'\n case VolumeUnits.CUBIC_YARDS:\n return 'cu yd'\n case VolumeUnits.CUBIC_MILES:\n return 'cu mi'\n default:\n return void 0\n }\n }\n\n static getAngleUnitSymbol(angleUnits) {\n return angleUnits === AngleUnits.DEGREES ? '°' : angleUnits === AngleUnits.RADIANS ? 'rad' : angleUnits === AngleUnits.GRADE ? '%' : void 0\n }\n\n static convertDistance(distance: number, distanceUnitsFrom: string, distanceUnitsTo: string) {\n return distanceUnitsFrom === distanceUnitsTo\n ? distance\n : distance * getDistanceUnitConversion(distanceUnitsFrom) * (1 / getDistanceUnitConversion(distanceUnitsTo))\n }\n\n static convertArea(area: number, areaUnitsFrom: string, areaUnitsTo: string) {\n return areaUnitsFrom === areaUnitsTo ? area : area * getAreaUnitConversion(areaUnitsFrom) * (1 / getAreaUnitConversion(areaUnitsTo))\n }\n\n static convertVolume(volume: number, volumeUnitsFrom: string, volumeUnitsTo: string) {\n return volumeUnitsFrom === volumeUnitsTo\n ? volume\n : volume * getVolumeUnitConversion(volumeUnitsFrom) * (1 / getVolumeUnitConversion(volumeUnitsTo))\n }\n\n static convertAngle(angle: number, angleUnitsFrom: string, angleUnitsTo: string) {\n return angleUnitsFrom === angleUnitsTo ? angle : convertAngleFromRadians(convertAngleToRadians(angle, angleUnitsFrom), angleUnitsTo)\n }\n\n static longitudeToString(longitude, angleUnits, locale, decimals) {\n return MeasureUnits.angleToString(Math.abs(longitude), angleUnits, locale, decimals) + ' ' + (longitude < 0 ? 'W' : 'E')\n }\n\n static latitudeToString(latitude, angleUnits, locale, decimals) {\n return MeasureUnits.angleToString(Math.abs(latitude), angleUnits, locale, decimals) + ' ' + (latitude < 0 ? 'S' : 'N')\n }\n}\n\nfunction getDistanceUnitConversion(distanceUnits: string) {\n switch (distanceUnits) {\n case DistanceUnits.METERS:\n return 1\n case DistanceUnits.CENTIMETERS:\n return 0.01\n case DistanceUnits.KILOMETERS:\n return 1000\n case DistanceUnits.FEET:\n return 0.3048\n case DistanceUnits.US_SURVEY_FEET:\n return 1200 / 3937\n case DistanceUnits.INCHES:\n return 0.254\n case DistanceUnits.YARDS:\n return 0.9144\n case DistanceUnits.MILES:\n return 1609.344\n default:\n return 1\n }\n}\n\nfunction getAreaUnitConversion(areaUnits: string) {\n switch (areaUnits) {\n case AreaUnits.SQUARE_METERS:\n return 1\n case AreaUnits.SQUARE_CENTIMETERS:\n return 0.0001\n case AreaUnits.SQUARE_KILOMETERS:\n return 1000000\n case AreaUnits.SQUARE_FEET:\n return 0.09290304\n case AreaUnits.SQUARE_INCHES:\n return 64516e-8\n case AreaUnits.SQUARE_YARDS:\n return 0.83612736\n case AreaUnits.SQUARE_MILES:\n return 2589988.110336\n case AreaUnits.ACRES:\n return 4046.85642232\n case AreaUnits.HECTARES:\n return 10000\n default:\n return 1\n }\n}\n\nfunction getVolumeUnitConversion(volumeUnits: string) {\n switch (volumeUnits) {\n case VolumeUnits.CUBIC_METERS:\n return 1\n case VolumeUnits.CUBIC_CENTIMETERS:\n return 1e-6\n case VolumeUnits.CUBIC_KILOMETERS:\n return 1e9\n case VolumeUnits.CUBIC_FEET:\n return 0.09290304 * 0.3048\n case VolumeUnits.CUBIC_INCHES:\n return 16387064e-12\n case VolumeUnits.CUBIC_YARDS:\n return 0.764554857984\n case VolumeUnits.CUBIC_MILES:\n return 4168181825.44058\n default:\n return 1\n }\n}\n\nfunction convertAngleToRadians(angle, angleUnits) {\n const { defined, Math: CesiumMath, RuntimeError } = Cesium\n if (angleUnits === AngleUnits.RADIANS) return angle\n if (angleUnits === AngleUnits.DEGREES) return CesiumMath.toRadians(angle)\n if (angleUnits === AngleUnits.GRADE) return angle === Number.POSITIVE_INFINITY ? CesiumMath.PI_OVER_TWO : Math.atan(angle / 100)\n if (angleUnits === AngleUnits.RATIO) return Math.atan(angle)\n if (angleUnits === AngleUnits.DEGREES_MINUTES_SECONDS) {\n const degreesMinutesSecondsRegex = /(-?)(\\d+)\\s*°\\s*(\\d+)\\s*'\\s*([\\d.,]+)\"\\s*([WENS]?)/i\n const result = degreesMinutesSecondsRegex.exec(angle) || []\n if (!defined(result)) throw new RuntimeError('Could not convert angle to radians: ' + angle)\n let r = 0 < result[1].length ? -1 : 1\n const degrees = parseInt(result[2])\n const minutes = parseInt(result[3])\n const seconds = parseFloat(result[4])\n let s = result[5]\n 1 === s.length && (('W' !== (s = s.toUpperCase()) && 'S' !== s) || (r *= -1))\n const l = r * (degrees + minutes / 60 + seconds / 3600)\n return CesiumMath.toRadians(l)\n }\n}\n\nfunction convertAngleFromRadians(angle, angleUnits) {\n const { Math: CesiumMath } = Cesium\n if (angleUnits === AngleUnits.RADIANS) {\n return angle\n } else if (angleUnits === AngleUnits.DEGREES) {\n return CesiumMath.toDegrees(angle)\n } else if (angleUnits === AngleUnits.GRADE) {\n if (CesiumMath.clamp(angle, 0, CesiumMath.PI_OVER_TWO) === CesiumMath.PI_OVER_TWO) {\n return Number.POSITIVE_INFINITY\n } else {\n return 100 * Math.tan(angle)\n }\n } else if (angleUnits === AngleUnits.RATIO) {\n return Math.sin(angle) / Math.cos(angle)\n }\n\n return void 0\n}\n\nfunction numberToFormattedString(number, locale, decimals) {\n const options = getLocaleFormatStringOptions(decimals, number, locale)\n const strLocale = number.toLocaleString(locale, options)\n const negativeZero = -0\n const positiveZero = 0\n return strLocale === negativeZero.toLocaleString(locale, options) ? positiveZero.toLocaleString(locale, options) : strLocale\n}\n\nfunction getLocaleFormatStringOptions(decimals, number?, locale?) {\n let numberFormatter = {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n }\n decimals = Cesium.defaultValue(decimals, 2)\n if (typeof decimals === 'number') {\n numberFormatter.minimumFractionDigits = decimals\n numberFormatter.maximumFractionDigits = decimals\n } else {\n numberFormatter = typeof decimals === 'function' ? decimals(number, locale) : decimals\n }\n return numberFormatter\n}\n\nexport default MeasureUnits\n\nexport { DistanceUnits, AreaUnits, VolumeUnits, AngleUnits }\n"],"names":[],"mappings":"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"}