UNPKG

vue-cesium

Version:
1 lines 23.8 kB
{"version":3,"file":"MeasureUnits.mjs","sources":["../../../../../packages/shared/src/MeasureUnits.ts"],"sourcesContent":["import { defaultValue } from '@vue-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 'm'\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 'm²'\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 'm³'\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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"}