@itwin/core-orbitgt 4.6.0-dev.8 → 4.7.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -1
- package/lib/cjs/pointcloud/format/opc/AttributeMask.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/BlockRecord.js +1 -1
- package/lib/cjs/pointcloud/format/opc/BlockRecord.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/ContainerFile.js +1 -1
- package/lib/cjs/pointcloud/format/opc/ContainerFile.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/DirectoryReader.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/DirectoryRecord.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/EmbeddedAttributeReader.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/FileReader.js +1 -1
- package/lib/cjs/pointcloud/format/opc/FileReader.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/GeometryReader.js +1 -1
- package/lib/cjs/pointcloud/format/opc/GeometryReader.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/GeometryRecord.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/OPCReader.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/PointReader.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/TileReadBuffer.js.map +1 -1
- package/lib/cjs/pointcloud/format/opc/TileRecord.js +1 -1
- package/lib/cjs/pointcloud/format/opc/TileRecord.js.map +1 -1
- package/lib/cjs/pointcloud/model/AttributeTypes.js +1 -1
- package/lib/cjs/pointcloud/model/AttributeTypes.js.map +1 -1
- package/lib/cjs/pointcloud/model/AttributeValue.js +1 -1
- package/lib/cjs/pointcloud/model/AttributeValue.js.map +1 -1
- package/lib/cjs/pointcloud/model/CloudPoint.js +1 -1
- package/lib/cjs/pointcloud/model/CloudPoint.js.map +1 -1
- package/lib/cjs/pointcloud/model/PointDataRaw.js +1 -1
- package/lib/cjs/pointcloud/model/PointDataRaw.js.map +1 -1
- package/lib/cjs/pointcloud/model/ReadRequest.js +1 -1
- package/lib/cjs/pointcloud/model/ReadRequest.js.map +1 -1
- package/lib/cjs/pointcloud/model/StandardAttributes.js +1 -1
- package/lib/cjs/pointcloud/model/StandardAttributes.js.map +1 -1
- package/lib/cjs/pointcloud/render/Block.js.map +1 -1
- package/lib/cjs/pointcloud/render/DataManager.js +1 -1
- package/lib/cjs/pointcloud/render/DataManager.js.map +1 -1
- package/lib/cjs/pointcloud/render/TileLoadSorter.js +1 -1
- package/lib/cjs/pointcloud/render/TileLoadSorter.js.map +1 -1
- package/lib/cjs/pointcloud/render/ViewTree.js +1 -1
- package/lib/cjs/pointcloud/render/ViewTree.js.map +1 -1
- package/lib/cjs/spatial/crs/CRSEngine.js.map +1 -1
- package/lib/cjs/spatial/crs/CRSManager.js +1 -1
- package/lib/cjs/spatial/crs/CRSManager.js.map +1 -1
- package/lib/cjs/spatial/ecrs/CRS.js +1 -1
- package/lib/cjs/spatial/ecrs/CRS.js.map +1 -1
- package/lib/cjs/spatial/ecrs/CoordinateSystem.js +1 -1
- package/lib/cjs/spatial/ecrs/CoordinateSystem.js.map +1 -1
- package/lib/cjs/spatial/ecrs/DataFileUnit.js +1 -1
- package/lib/cjs/spatial/ecrs/DataFileUnit.js.map +1 -1
- package/lib/cjs/spatial/ecrs/Datum.js +1 -1
- package/lib/cjs/spatial/ecrs/Datum.js.map +1 -1
- package/lib/cjs/spatial/ecrs/Ellipsoid.js.map +1 -1
- package/lib/cjs/spatial/ecrs/OnlineEngine.js.map +1 -1
- package/lib/cjs/spatial/ecrs/OnlineRegistry.js +1 -1
- package/lib/cjs/spatial/ecrs/OnlineRegistry.js.map +1 -1
- package/lib/cjs/spatial/ecrs/Operation.js +1 -1
- package/lib/cjs/spatial/ecrs/Operation.js.map +1 -1
- package/lib/cjs/spatial/ecrs/ParameterValueList.js.map +1 -1
- package/lib/cjs/spatial/ecrs/Registry.js +1 -1
- package/lib/cjs/spatial/ecrs/Registry.js.map +1 -1
- package/lib/cjs/spatial/ecrs/Transform.js +1 -1
- package/lib/cjs/spatial/ecrs/Transform.js.map +1 -1
- package/lib/cjs/spatial/ecrs/Unit.js +1 -1
- package/lib/cjs/spatial/ecrs/Unit.js.map +1 -1
- package/lib/cjs/spatial/ecrs/WellKnownText.js +1 -1
- package/lib/cjs/spatial/ecrs/WellKnownText.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/HotineObliqueMercator.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/HotineObliqueMercator.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConic.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConic.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/LambertConical1SP.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/LambertConical1SP.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/LambertConical2SP.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/LambertConical2SP.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/Mercator1SP.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/Mercator1SP.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/ObliqueMercator.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/ObliqueMercator.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/ObliqueStereographic.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/ObliqueStereographic.js.map +1 -1
- package/lib/cjs/spatial/ecrs/projection/TransverseMercator.js +1 -1
- package/lib/cjs/spatial/ecrs/projection/TransverseMercator.js.map +1 -1
- package/lib/cjs/spatial/ecrs/transformation/PositionVector.js +1 -1
- package/lib/cjs/spatial/ecrs/transformation/PositionVector.js.map +1 -1
- package/lib/cjs/spatial/geom/Bounds.js.map +1 -1
- package/lib/cjs/spatial/geom/Line.js.map +1 -1
- package/lib/cjs/spatial/geom/Transform.js.map +1 -1
- package/lib/cjs/system/buffer/Float32Buffer.js +1 -1
- package/lib/cjs/system/buffer/Float32Buffer.js.map +1 -1
- package/lib/cjs/system/buffer/LittleEndian.js.map +1 -1
- package/lib/cjs/system/buffer/Uint16Buffer.js +1 -1
- package/lib/cjs/system/buffer/Uint16Buffer.js.map +1 -1
- package/lib/cjs/system/buffer/Uint8Buffer.js +1 -1
- package/lib/cjs/system/buffer/Uint8Buffer.js.map +1 -1
- package/lib/cjs/system/collection/AList.js.map +1 -1
- package/lib/cjs/system/runtime/ALong.js +1 -1
- package/lib/cjs/system/runtime/ALong.js.map +1 -1
- package/lib/cjs/system/runtime/ASystem.js +1 -1
- package/lib/cjs/system/runtime/ASystem.js.map +1 -1
- package/lib/cjs/system/runtime/Downloader.js +1 -1
- package/lib/cjs/system/runtime/Downloader.js.map +1 -1
- package/lib/cjs/system/runtime/DownloaderNode.js.map +1 -1
- package/lib/cjs/system/runtime/DownloaderXhr.js.map +1 -1
- package/lib/cjs/system/runtime/Message.js +1 -1
- package/lib/cjs/system/runtime/Message.js.map +1 -1
- package/lib/cjs/system/runtime/Numbers.js +1 -1
- package/lib/cjs/system/runtime/Numbers.js.map +1 -1
- package/lib/cjs/system/runtime/Strings.js +1 -1
- package/lib/cjs/system/runtime/Strings.js.map +1 -1
- package/lib/cjs/system/storage/CacheList.js.map +1 -1
- package/lib/cjs/system/storage/ContentLoader.js +1 -1
- package/lib/cjs/system/storage/ContentLoader.js.map +1 -1
- package/lib/cjs/system/storage/NodeFS.js.map +1 -1
- package/lib/cjs/system/storage/PageCachedFile.js.map +1 -1
- package/lib/cjs/system/storage/UrlFS.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/AttributeMask.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/BlockRecord.js +1 -2
- package/lib/esm/pointcloud/format/opc/BlockRecord.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/ContainerFile.js +1 -2
- package/lib/esm/pointcloud/format/opc/ContainerFile.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/DirectoryReader.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/DirectoryRecord.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/EmbeddedAttributeReader.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/FileReader.js +1 -2
- package/lib/esm/pointcloud/format/opc/FileReader.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/GeometryReader.js +1 -2
- package/lib/esm/pointcloud/format/opc/GeometryReader.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/GeometryRecord.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/OPCReader.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/PointReader.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/TileReadBuffer.js.map +1 -1
- package/lib/esm/pointcloud/format/opc/TileRecord.js +1 -2
- package/lib/esm/pointcloud/format/opc/TileRecord.js.map +1 -1
- package/lib/esm/pointcloud/model/AttributeTypes.js +1 -2
- package/lib/esm/pointcloud/model/AttributeTypes.js.map +1 -1
- package/lib/esm/pointcloud/model/AttributeValue.js +1 -2
- package/lib/esm/pointcloud/model/AttributeValue.js.map +1 -1
- package/lib/esm/pointcloud/model/CloudPoint.js +1 -2
- package/lib/esm/pointcloud/model/CloudPoint.js.map +1 -1
- package/lib/esm/pointcloud/model/PointDataRaw.js +1 -2
- package/lib/esm/pointcloud/model/PointDataRaw.js.map +1 -1
- package/lib/esm/pointcloud/model/ReadRequest.js +1 -2
- package/lib/esm/pointcloud/model/ReadRequest.js.map +1 -1
- package/lib/esm/pointcloud/model/StandardAttributes.js +1 -2
- package/lib/esm/pointcloud/model/StandardAttributes.js.map +1 -1
- package/lib/esm/pointcloud/render/Block.js.map +1 -1
- package/lib/esm/pointcloud/render/DataManager.js +1 -2
- package/lib/esm/pointcloud/render/DataManager.js.map +1 -1
- package/lib/esm/pointcloud/render/TileLoadSorter.js +1 -2
- package/lib/esm/pointcloud/render/TileLoadSorter.js.map +1 -1
- package/lib/esm/pointcloud/render/ViewTree.js +1 -2
- package/lib/esm/pointcloud/render/ViewTree.js.map +1 -1
- package/lib/esm/spatial/crs/CRSEngine.js.map +1 -1
- package/lib/esm/spatial/crs/CRSManager.js +1 -2
- package/lib/esm/spatial/crs/CRSManager.js.map +1 -1
- package/lib/esm/spatial/ecrs/CRS.js +1 -2
- package/lib/esm/spatial/ecrs/CRS.js.map +1 -1
- package/lib/esm/spatial/ecrs/CoordinateSystem.js +1 -2
- package/lib/esm/spatial/ecrs/CoordinateSystem.js.map +1 -1
- package/lib/esm/spatial/ecrs/DataFileUnit.js +1 -2
- package/lib/esm/spatial/ecrs/DataFileUnit.js.map +1 -1
- package/lib/esm/spatial/ecrs/Datum.js +1 -2
- package/lib/esm/spatial/ecrs/Datum.js.map +1 -1
- package/lib/esm/spatial/ecrs/Ellipsoid.js.map +1 -1
- package/lib/esm/spatial/ecrs/OnlineEngine.js.map +1 -1
- package/lib/esm/spatial/ecrs/OnlineRegistry.js +1 -2
- package/lib/esm/spatial/ecrs/OnlineRegistry.js.map +1 -1
- package/lib/esm/spatial/ecrs/Operation.js +1 -2
- package/lib/esm/spatial/ecrs/Operation.js.map +1 -1
- package/lib/esm/spatial/ecrs/ParameterValueList.js.map +1 -1
- package/lib/esm/spatial/ecrs/Registry.js +1 -2
- package/lib/esm/spatial/ecrs/Registry.js.map +1 -1
- package/lib/esm/spatial/ecrs/Transform.js +1 -2
- package/lib/esm/spatial/ecrs/Transform.js.map +1 -1
- package/lib/esm/spatial/ecrs/Unit.js +1 -2
- package/lib/esm/spatial/ecrs/Unit.js.map +1 -1
- package/lib/esm/spatial/ecrs/WellKnownText.js +1 -2
- package/lib/esm/spatial/ecrs/WellKnownText.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/HotineObliqueMercator.js +1 -2
- package/lib/esm/spatial/ecrs/projection/HotineObliqueMercator.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConic.js +1 -2
- package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConic.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js +1 -2
- package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/LambertConical1SP.js +1 -2
- package/lib/esm/spatial/ecrs/projection/LambertConical1SP.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/LambertConical2SP.js +1 -2
- package/lib/esm/spatial/ecrs/projection/LambertConical2SP.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/Mercator1SP.js +1 -2
- package/lib/esm/spatial/ecrs/projection/Mercator1SP.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/ObliqueMercator.js +1 -2
- package/lib/esm/spatial/ecrs/projection/ObliqueMercator.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/ObliqueStereographic.js +1 -2
- package/lib/esm/spatial/ecrs/projection/ObliqueStereographic.js.map +1 -1
- package/lib/esm/spatial/ecrs/projection/TransverseMercator.js +1 -2
- package/lib/esm/spatial/ecrs/projection/TransverseMercator.js.map +1 -1
- package/lib/esm/spatial/ecrs/transformation/PositionVector.js +1 -2
- package/lib/esm/spatial/ecrs/transformation/PositionVector.js.map +1 -1
- package/lib/esm/spatial/geom/Bounds.js.map +1 -1
- package/lib/esm/spatial/geom/Line.js.map +1 -1
- package/lib/esm/spatial/geom/Transform.js.map +1 -1
- package/lib/esm/system/buffer/Float32Buffer.js +1 -2
- package/lib/esm/system/buffer/Float32Buffer.js.map +1 -1
- package/lib/esm/system/buffer/LittleEndian.js.map +1 -1
- package/lib/esm/system/buffer/Uint16Buffer.js +1 -2
- package/lib/esm/system/buffer/Uint16Buffer.js.map +1 -1
- package/lib/esm/system/buffer/Uint8Buffer.js +1 -2
- package/lib/esm/system/buffer/Uint8Buffer.js.map +1 -1
- package/lib/esm/system/collection/AList.js.map +1 -1
- package/lib/esm/system/runtime/ALong.js +1 -2
- package/lib/esm/system/runtime/ALong.js.map +1 -1
- package/lib/esm/system/runtime/ASystem.js +1 -2
- package/lib/esm/system/runtime/ASystem.js.map +1 -1
- package/lib/esm/system/runtime/Downloader.js +1 -2
- package/lib/esm/system/runtime/Downloader.js.map +1 -1
- package/lib/esm/system/runtime/DownloaderNode.js.map +1 -1
- package/lib/esm/system/runtime/DownloaderXhr.js.map +1 -1
- package/lib/esm/system/runtime/Message.js +1 -2
- package/lib/esm/system/runtime/Message.js.map +1 -1
- package/lib/esm/system/runtime/Numbers.js +1 -2
- package/lib/esm/system/runtime/Numbers.js.map +1 -1
- package/lib/esm/system/runtime/Strings.js +1 -2
- package/lib/esm/system/runtime/Strings.js.map +1 -1
- package/lib/esm/system/storage/CacheList.js.map +1 -1
- package/lib/esm/system/storage/ContentLoader.js +1 -2
- package/lib/esm/system/storage/ContentLoader.js.map +1 -1
- package/lib/esm/system/storage/NodeFS.js.map +1 -1
- package/lib/esm/system/storage/PageCachedFile.js.map +1 -1
- package/lib/esm/system/storage/UrlFS.js.map +1 -1
- package/package.json +5 -5
|
@@ -14,7 +14,7 @@ import { Registry } from "./Registry";
|
|
|
14
14
|
* @version 1.0 July 2005
|
|
15
15
|
*/
|
|
16
16
|
/** @internal */
|
|
17
|
-
class Unit {
|
|
17
|
+
export class Unit {
|
|
18
18
|
/**
|
|
19
19
|
* Create a new unit.
|
|
20
20
|
* @param code the code.
|
|
@@ -330,5 +330,4 @@ Unit._TYPE_LENGTH = "length";
|
|
|
330
330
|
Unit._TYPE_TIME = "time";
|
|
331
331
|
/** The type of units for scale */
|
|
332
332
|
Unit._TYPE_SCALE = "scale";
|
|
333
|
-
export { Unit };
|
|
334
333
|
//# sourceMappingURL=Unit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Unit.js","sourceRoot":"","sources":["../../../../src/spatial/ecrs/Unit.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n//package orbitgt.spatial.ecrs;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { ASystem } from \"../../system/runtime/ASystem\";\nimport { Numbers } from \"../../system/runtime/Numbers\";\nimport { Registry } from \"./Registry\";\n\n/**\n * Class Unit defines a unit of measure.\n *\n * @version 1.0 July 2005\n */\n/** @internal */\nexport class Unit {\n /** The \"meter\" unit code (length) */\n public static readonly METER: int32 = 9001;\n /** The \"foot\" unit code (length) */\n public static readonly FOOT: int32 = 9002;\n /** The \"footUS\" unit code (length) */\n public static readonly FOOT_US: int32 = 9003;\n /** The \"radian\" unit code (angle) */\n public static readonly RADIAN: int32 = 9101;\n /** The \"degree\" unit code (angle) */\n public static readonly DEGREE: int32 = 9102;\n /** The \"unity\" unit code (scale) */\n public static readonly UNITY: int32 = 9201;\n\n /** Define the custom unit 'sexagesimal DMS' (9110) */\n private static readonly _UNIT_DMS: int32 = 9110;\n /** Define the custom unit 'sexagesimal DM' (9111) */\n private static readonly _UNIT_DM: int32 = 9111;\n\n /** The type of units for angles */\n private static readonly _TYPE_ANGLE: string = \"angle\";\n /** The type of units for length */\n private static readonly _TYPE_LENGTH: string = \"length\";\n /** The type of units for time */\n private static readonly _TYPE_TIME: string = \"time\";\n /** The type of units for scale */\n private static readonly _TYPE_SCALE: string = \"scale\";\n\n /** The code */\n private _code: int32;\n /** The name */\n private _name: string;\n /** The abbreviation */\n private _abbreviation: string;\n /** The type */\n private _type: string;\n /** The target unit code */\n private _targetUnitCode: int32;\n /** The B factor */\n private _b: float64;\n /** The C factor */\n private _c: float64;\n\n /** The target unit */\n private _target: Unit;\n\n /**\n * Create a new unit.\n * @param code the code.\n * @param name the name.\n * @param abbreviation the abbreviation.\n * @param type the type (LENGTH, ANGLE or SCALE).\n * @param targetUnitCode the target unit code.\n * @param b the B factor.\n * @param c the C factor.\n */\n public constructor(code: int32, name: string, abbreviation: string, type: string, targetUnitCode: int32, b: float64, c: float64) {\n /* Store the parameters */\n this._code = code;\n this._name = name;\n this._abbreviation = abbreviation;\n this._type = type;\n this._targetUnitCode = targetUnitCode;\n this._b = b;\n this._c = c;\n /* Clear */\n this._target = null;\n }\n\n /**\n * Get the code.\n * @return the code.\n */\n public getCode(): int32 {\n return this._code;\n }\n\n /**\n * Get the name.\n * @return the name.\n */\n public getName(): string {\n return this._name;\n }\n\n /**\n * Get the abbreviation.\n * @return the abbreviation.\n */\n public getAbbreviation(): string {\n return this._abbreviation;\n }\n\n /**\n * Get the type (LENGTH, ANGLE or SCALE).\n * @return the type.\n */\n public getType(): string {\n return this._type;\n }\n\n /**\n * Check is this is an angle type.\n * @return true for an angle type.\n */\n public isTypeAngle(): boolean {\n return (this._type === Unit._TYPE_ANGLE);\n }\n\n /**\n * Check is this is a length type.\n * @return true for a length type.\n */\n public isTypeLength(): boolean {\n return (this._type === Unit._TYPE_LENGTH);\n }\n\n /**\n * Get the target unit code.\n * @return the target unit code.\n */\n public getTargetUnitCode(): int32 {\n return this._targetUnitCode;\n }\n\n /**\n * Get the B factor.\n * @return the B factor.\n */\n public getB(): float64 {\n return this._b;\n }\n\n /**\n * Get the C factor.\n * @return the C factor.\n */\n public getC(): float64 {\n return this._c;\n }\n\n /**\n * Check if another unit is compatible with this one.\n * @param other the other unit.\n * @return true if compatible.\n */\n public isCompatible(other: Unit): boolean {\n if (other._code == this._code) return true;\n if (other._targetUnitCode != this._targetUnitCode) return false;\n if (other._b != this._b) return false;\n if (other._c != this._c) return false;\n return true;\n }\n\n /**\n * Convert to the standard unit.\n * @param value the value.\n * @return the standard value.\n */\n public toStandard(value: float64): float64 {\n /* Get the target unit */\n if (this._target == null) this._target = Registry.getUnit(this._targetUnitCode);\n /* Already standard ? */\n if (this._code == this._targetUnitCode) return value;\n /* Check for a custom unit */\n else if (this._code == Unit._UNIT_DMS) return this._target.toStandard(Unit.dmsToDeg(value));\n else if (this._code == Unit._UNIT_DM) return this._target.toStandard(Unit.dmToDeg(value));\n /* Default to scale */\n else return this._target.toStandard(value * this._b / this._c);\n }\n\n /**\n * Convert to the standard unit.\n * @param value the value.\n * @return the standard value.\n */\n public to(value: float64): float64 {\n return this.toStandard(value);\n }\n\n /**\n * Convert from the standard unit.\n * @param value the standard value.\n * @return the value.\n */\n public fromStandard(value: float64): float64 {\n /* Get the target unit */\n if (this._target == null) this._target = Registry.getUnit(this._targetUnitCode);\n /* Already standard ? */\n if (this._code == this._targetUnitCode) return value;\n /* Check for a custom unit */\n else if (this._code == Unit._UNIT_DMS) return Unit.degToDms(this._target.fromStandard(value));\n else if (this._code == Unit._UNIT_DM) return Unit.degToDm(this._target.fromStandard(value));\n /* Default to scale */\n else return this._target.fromStandard(value) * this._c / this._b;\n }\n\n /**\n * Convert from the standard unit.\n * @param value the standard value.\n * @return the value.\n */\n public from(value: float64): float64 {\n return this.fromStandard(value);\n }\n\n /**\n * Convert a sexagesimal DMS value to fractional degrees.\n * @param dms the sexagesimal DMS value.\n * @return the fractional degrees.\n */\n public static dmsToDeg(dms: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (dms < 0.0);\n if (neg) dms *= -1.0;\n /* Get the seconds */\n let seconds: float64 = (10000.0 * dms);\n let iseconds: int32 = Math.floor(seconds);\n let fraction: float64 = (seconds - iseconds);\n /* Catch rounding errors (like 6.1000 to 6.099999999999999) */\n if (Math.abs(fraction - 1.0) < 1.0e-4) { iseconds++; fraction = 0.0; }\n /* Get the degrees */\n let deg: int32 = Numbers.divInt(iseconds, 10000);\n ASystem.assertNot((deg < -360) || (deg > 360), \"Invalid deg (\" + deg + \") in DMS \" + dms);\n iseconds -= (deg * 10000);\n /* Get the minutes */\n let min: int32 = Numbers.divInt(iseconds, 100);\n ASystem.assertNot((min < 0) || (min > 59), \"Invalid min (\" + min + \") in DMS \" + dms);\n iseconds -= (min * 100);\n /* Get the seconds */\n let sec: int32 = (iseconds);\n ASystem.assertNot((sec < 0) || (sec > 59), \"Invalid sec (\" + sec + \") in DMS \" + dms);\n /* Check the fraction */\n ASystem.assertNot((fraction < 0.0) || (fraction >= 1.0), \"Invalid fraction (\" + fraction + \") in DMS \" + dms);\n /* Convert to fractional degrees */\n let fdeg: float64 = deg + (min / 60.0) + (sec / 3600.0) + (fraction / 3600.0);\n if (neg) fdeg *= -1.0;\n /* Return the degrees */\n return fdeg;\n }\n\n /**\n * Convert a sexagesimal DMS value to fractional radians.\n * @param dms the sexagesimal DMS value.\n * @return the fractional radians.\n */\n public static dmsToRad(dms: float64): float64 {\n return Unit.dmsToDeg(dms) * Math.PI / 180.0;\n }\n\n /**\n * Convert fractional degrees to a sexagesimal DMS value.\n * @param deg the fractional degrees.\n * @return the sexagesimal DMS value.\n */\n public static degToDms(deg: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (deg < 0.0);\n if (neg) deg *= -1.0;\n /* Get the integer degrees */\n let ideg: float64 = Math.floor(deg);\n deg -= ideg;\n /* Get the minutes */\n deg *= 60.0;\n let min: float64 = Math.floor(deg);\n deg -= min;\n /* Get the seconds */\n deg *= 60.0;\n let sec: float64 = deg;\n /* Convert to DMS */\n let dms: float64 = ideg + (min / 100.0) + (sec / 10000.0);\n if (neg) dms *= -1.0;\n /* Return the DMS */\n return dms;\n }\n\n /**\n * Convert a sexagesimal DM value to fractional degrees.\n * @param dm the sexagesimal DM value.\n * @return the fractional degrees.\n */\n public static dmToDeg(dm: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (dm < 0.0);\n if (neg) dm *= -1.0;\n /* Get the seconds */\n let minutes: float64 = (100.0 * dm);\n let iminutes: int32 = Math.floor(minutes);\n let fraction: float64 = (minutes - iminutes);\n /* Catch rounding errors (like 6.1000 to 6.099999999999999) */\n if (Math.abs(fraction - 1.0) < 1.0e-4) { iminutes++; fraction = 0.0; }\n /* Get the degrees */\n let deg: int32 = Numbers.divInt(iminutes, 100);\n ASystem.assertNot((deg < -180) || (deg > 180), \"Invalid deg (\" + deg + \") in DM \" + dm);\n /* Get the minutes */\n let min: int32 = (iminutes) % 100;\n ASystem.assertNot((min < 0) || (min > 59), \"Invalid min (\" + min + \") in DM \" + dm);\n /* Check the fraction */\n ASystem.assertNot((fraction < 0.0) || (fraction >= 1.0), \"Invalid fraction (\" + fraction + \") in DM \" + dm);\n /* Convert to fractional degrees */\n let fdeg: float64 = deg + (min / 60.0) + (fraction / 60.0);\n if (neg) fdeg *= -1.0;\n /* Return the degrees */\n return fdeg;\n }\n\n /**\n * Convert fractional degrees to a sexagesimal DM value.\n * @param deg the fractional degrees.\n * @return the sexagesimal DM value.\n */\n public static degToDm(deg: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (deg < 0.0);\n if (neg) deg *= -1.0;\n /* Get the integer degrees */\n let ideg: float64 = Math.floor(deg);\n deg -= ideg;\n /* Get the minutes */\n deg *= 60.0;\n let min: float64 = deg;\n /* Convert to DMS */\n let dms: float64 = ideg + (min / 100.0);\n if (neg) dms *= -1.0;\n /* Return the DMS */\n return dms;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Unit.js","sourceRoot":"","sources":["../../../../src/spatial/ecrs/Unit.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n//package orbitgt.spatial.ecrs;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { ASystem } from \"../../system/runtime/ASystem\";\nimport { Numbers } from \"../../system/runtime/Numbers\";\nimport { Registry } from \"./Registry\";\n\n/**\n * Class Unit defines a unit of measure.\n *\n * @version 1.0 July 2005\n */\n/** @internal */\nexport class Unit {\n /** The \"meter\" unit code (length) */\n public static readonly METER: int32 = 9001;\n /** The \"foot\" unit code (length) */\n public static readonly FOOT: int32 = 9002;\n /** The \"footUS\" unit code (length) */\n public static readonly FOOT_US: int32 = 9003;\n /** The \"radian\" unit code (angle) */\n public static readonly RADIAN: int32 = 9101;\n /** The \"degree\" unit code (angle) */\n public static readonly DEGREE: int32 = 9102;\n /** The \"unity\" unit code (scale) */\n public static readonly UNITY: int32 = 9201;\n\n /** Define the custom unit 'sexagesimal DMS' (9110) */\n private static readonly _UNIT_DMS: int32 = 9110;\n /** Define the custom unit 'sexagesimal DM' (9111) */\n private static readonly _UNIT_DM: int32 = 9111;\n\n /** The type of units for angles */\n private static readonly _TYPE_ANGLE: string = \"angle\";\n /** The type of units for length */\n private static readonly _TYPE_LENGTH: string = \"length\";\n /** The type of units for time */\n private static readonly _TYPE_TIME: string = \"time\";\n /** The type of units for scale */\n private static readonly _TYPE_SCALE: string = \"scale\";\n\n /** The code */\n private _code: int32;\n /** The name */\n private _name: string;\n /** The abbreviation */\n private _abbreviation: string;\n /** The type */\n private _type: string;\n /** The target unit code */\n private _targetUnitCode: int32;\n /** The B factor */\n private _b: float64;\n /** The C factor */\n private _c: float64;\n\n /** The target unit */\n private _target: Unit;\n\n /**\n * Create a new unit.\n * @param code the code.\n * @param name the name.\n * @param abbreviation the abbreviation.\n * @param type the type (LENGTH, ANGLE or SCALE).\n * @param targetUnitCode the target unit code.\n * @param b the B factor.\n * @param c the C factor.\n */\n public constructor(code: int32, name: string, abbreviation: string, type: string, targetUnitCode: int32, b: float64, c: float64) {\n /* Store the parameters */\n this._code = code;\n this._name = name;\n this._abbreviation = abbreviation;\n this._type = type;\n this._targetUnitCode = targetUnitCode;\n this._b = b;\n this._c = c;\n /* Clear */\n this._target = null;\n }\n\n /**\n * Get the code.\n * @return the code.\n */\n public getCode(): int32 {\n return this._code;\n }\n\n /**\n * Get the name.\n * @return the name.\n */\n public getName(): string {\n return this._name;\n }\n\n /**\n * Get the abbreviation.\n * @return the abbreviation.\n */\n public getAbbreviation(): string {\n return this._abbreviation;\n }\n\n /**\n * Get the type (LENGTH, ANGLE or SCALE).\n * @return the type.\n */\n public getType(): string {\n return this._type;\n }\n\n /**\n * Check is this is an angle type.\n * @return true for an angle type.\n */\n public isTypeAngle(): boolean {\n return (this._type === Unit._TYPE_ANGLE);\n }\n\n /**\n * Check is this is a length type.\n * @return true for a length type.\n */\n public isTypeLength(): boolean {\n return (this._type === Unit._TYPE_LENGTH);\n }\n\n /**\n * Get the target unit code.\n * @return the target unit code.\n */\n public getTargetUnitCode(): int32 {\n return this._targetUnitCode;\n }\n\n /**\n * Get the B factor.\n * @return the B factor.\n */\n public getB(): float64 {\n return this._b;\n }\n\n /**\n * Get the C factor.\n * @return the C factor.\n */\n public getC(): float64 {\n return this._c;\n }\n\n /**\n * Check if another unit is compatible with this one.\n * @param other the other unit.\n * @return true if compatible.\n */\n public isCompatible(other: Unit): boolean {\n if (other._code == this._code) return true;\n if (other._targetUnitCode != this._targetUnitCode) return false;\n if (other._b != this._b) return false;\n if (other._c != this._c) return false;\n return true;\n }\n\n /**\n * Convert to the standard unit.\n * @param value the value.\n * @return the standard value.\n */\n public toStandard(value: float64): float64 {\n /* Get the target unit */\n if (this._target == null) this._target = Registry.getUnit(this._targetUnitCode);\n /* Already standard ? */\n if (this._code == this._targetUnitCode) return value;\n /* Check for a custom unit */\n else if (this._code == Unit._UNIT_DMS) return this._target.toStandard(Unit.dmsToDeg(value));\n else if (this._code == Unit._UNIT_DM) return this._target.toStandard(Unit.dmToDeg(value));\n /* Default to scale */\n else return this._target.toStandard(value * this._b / this._c);\n }\n\n /**\n * Convert to the standard unit.\n * @param value the value.\n * @return the standard value.\n */\n public to(value: float64): float64 {\n return this.toStandard(value);\n }\n\n /**\n * Convert from the standard unit.\n * @param value the standard value.\n * @return the value.\n */\n public fromStandard(value: float64): float64 {\n /* Get the target unit */\n if (this._target == null) this._target = Registry.getUnit(this._targetUnitCode);\n /* Already standard ? */\n if (this._code == this._targetUnitCode) return value;\n /* Check for a custom unit */\n else if (this._code == Unit._UNIT_DMS) return Unit.degToDms(this._target.fromStandard(value));\n else if (this._code == Unit._UNIT_DM) return Unit.degToDm(this._target.fromStandard(value));\n /* Default to scale */\n else return this._target.fromStandard(value) * this._c / this._b;\n }\n\n /**\n * Convert from the standard unit.\n * @param value the standard value.\n * @return the value.\n */\n public from(value: float64): float64 {\n return this.fromStandard(value);\n }\n\n /**\n * Convert a sexagesimal DMS value to fractional degrees.\n * @param dms the sexagesimal DMS value.\n * @return the fractional degrees.\n */\n public static dmsToDeg(dms: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (dms < 0.0);\n if (neg) dms *= -1.0;\n /* Get the seconds */\n let seconds: float64 = (10000.0 * dms);\n let iseconds: int32 = Math.floor(seconds);\n let fraction: float64 = (seconds - iseconds);\n /* Catch rounding errors (like 6.1000 to 6.099999999999999) */\n if (Math.abs(fraction - 1.0) < 1.0e-4) { iseconds++; fraction = 0.0; }\n /* Get the degrees */\n let deg: int32 = Numbers.divInt(iseconds, 10000);\n ASystem.assertNot((deg < -360) || (deg > 360), \"Invalid deg (\" + deg + \") in DMS \" + dms);\n iseconds -= (deg * 10000);\n /* Get the minutes */\n let min: int32 = Numbers.divInt(iseconds, 100);\n ASystem.assertNot((min < 0) || (min > 59), \"Invalid min (\" + min + \") in DMS \" + dms);\n iseconds -= (min * 100);\n /* Get the seconds */\n let sec: int32 = (iseconds);\n ASystem.assertNot((sec < 0) || (sec > 59), \"Invalid sec (\" + sec + \") in DMS \" + dms);\n /* Check the fraction */\n ASystem.assertNot((fraction < 0.0) || (fraction >= 1.0), \"Invalid fraction (\" + fraction + \") in DMS \" + dms);\n /* Convert to fractional degrees */\n let fdeg: float64 = deg + (min / 60.0) + (sec / 3600.0) + (fraction / 3600.0);\n if (neg) fdeg *= -1.0;\n /* Return the degrees */\n return fdeg;\n }\n\n /**\n * Convert a sexagesimal DMS value to fractional radians.\n * @param dms the sexagesimal DMS value.\n * @return the fractional radians.\n */\n public static dmsToRad(dms: float64): float64 {\n return Unit.dmsToDeg(dms) * Math.PI / 180.0;\n }\n\n /**\n * Convert fractional degrees to a sexagesimal DMS value.\n * @param deg the fractional degrees.\n * @return the sexagesimal DMS value.\n */\n public static degToDms(deg: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (deg < 0.0);\n if (neg) deg *= -1.0;\n /* Get the integer degrees */\n let ideg: float64 = Math.floor(deg);\n deg -= ideg;\n /* Get the minutes */\n deg *= 60.0;\n let min: float64 = Math.floor(deg);\n deg -= min;\n /* Get the seconds */\n deg *= 60.0;\n let sec: float64 = deg;\n /* Convert to DMS */\n let dms: float64 = ideg + (min / 100.0) + (sec / 10000.0);\n if (neg) dms *= -1.0;\n /* Return the DMS */\n return dms;\n }\n\n /**\n * Convert a sexagesimal DM value to fractional degrees.\n * @param dm the sexagesimal DM value.\n * @return the fractional degrees.\n */\n public static dmToDeg(dm: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (dm < 0.0);\n if (neg) dm *= -1.0;\n /* Get the seconds */\n let minutes: float64 = (100.0 * dm);\n let iminutes: int32 = Math.floor(minutes);\n let fraction: float64 = (minutes - iminutes);\n /* Catch rounding errors (like 6.1000 to 6.099999999999999) */\n if (Math.abs(fraction - 1.0) < 1.0e-4) { iminutes++; fraction = 0.0; }\n /* Get the degrees */\n let deg: int32 = Numbers.divInt(iminutes, 100);\n ASystem.assertNot((deg < -180) || (deg > 180), \"Invalid deg (\" + deg + \") in DM \" + dm);\n /* Get the minutes */\n let min: int32 = (iminutes) % 100;\n ASystem.assertNot((min < 0) || (min > 59), \"Invalid min (\" + min + \") in DM \" + dm);\n /* Check the fraction */\n ASystem.assertNot((fraction < 0.0) || (fraction >= 1.0), \"Invalid fraction (\" + fraction + \") in DM \" + dm);\n /* Convert to fractional degrees */\n let fdeg: float64 = deg + (min / 60.0) + (fraction / 60.0);\n if (neg) fdeg *= -1.0;\n /* Return the degrees */\n return fdeg;\n }\n\n /**\n * Convert fractional degrees to a sexagesimal DM value.\n * @param deg the fractional degrees.\n * @return the sexagesimal DM value.\n */\n public static degToDm(deg: float64): float64 {\n /* Make sure we have an non-negative number */\n let neg: boolean = (deg < 0.0);\n if (neg) deg *= -1.0;\n /* Get the integer degrees */\n let ideg: float64 = Math.floor(deg);\n deg -= ideg;\n /* Get the minutes */\n deg *= 60.0;\n let min: float64 = deg;\n /* Convert to DMS */\n let dms: float64 = ideg + (min / 100.0);\n if (neg) dms *= -1.0;\n /* Return the DMS */\n return dms;\n }\n}\n"]}
|
|
@@ -36,7 +36,7 @@ import { WellKnownTextNode } from "./WellKnownTextNode";
|
|
|
36
36
|
* @version 1.0 December 2010
|
|
37
37
|
*/
|
|
38
38
|
/** @internal */
|
|
39
|
-
class WellKnownText {
|
|
39
|
+
export class WellKnownText {
|
|
40
40
|
/**
|
|
41
41
|
* No instances.
|
|
42
42
|
*/
|
|
@@ -488,5 +488,4 @@ WellKnownText.TYPE_GENERIC = "generic";
|
|
|
488
488
|
WellKnownText._ARC_SEC_TO_RAD = (1.0 / 3600.0 * Math.PI / 180.0);
|
|
489
489
|
/** The counter for creating unique codes */
|
|
490
490
|
WellKnownText._CODES = 100000;
|
|
491
|
-
export { WellKnownText };
|
|
492
491
|
//# sourceMappingURL=WellKnownText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WellKnownText.js","sourceRoot":"","sources":["../../../../src/spatial/ecrs/WellKnownText.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAUH,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,gBAAgB;AAChB,MAAa,aAAa;IAatB;;OAEG;IACH,gBAAwB,CAAC;IAEzB;;;;OAIG;IACK,MAAM,CAAC,OAAO,CAAC,IAAY;QAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,+BAA+B,CAAC,CAAC;QACnG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,6BAA6B,CAAC,CAAC;QAC/F,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,UAAU,CAAC,KAAa;QACnC,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,SAAS,CAAC,KAAa;QAClC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,aAAa,CAAC,KAAwB;QACjD,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,GAAG,CAAC;QAC9B,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,WAAW,CAAC,SAA4B,EAAE,OAAe;QACpE,oCAAoC;QACpC,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK;YAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,QAAQ,GAAU,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,CAAC,wBAAwB;IAC7C,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,eAAe,CAAC,IAAuB,EAAE,OAAe;QACnE,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,gBAAgB,GAAY,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,qBAAqB;QACrB,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAA,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAA,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACrH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,gBAAgB,CAAC,IAAuB,EAAE,OAAe;QACpE,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,gBAAgB,GAAY,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,qBAAqB;QACrB,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAA,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAA,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACrH,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,aAAa,CAAC,OAAc,EAAE,IAAuB,EAAE,OAAe;QACjF,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,aAAa,GAAY,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,IAAI,aAAa,GAAY,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,0BAA0B;QAC1B,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,kBAAkB,CAAC,OAAc,EAAE,IAAuB,EAAE,OAAe;QACtF,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,GAAY,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,+BAA+B;QAC/B,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAA,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAA,KAAK,CAAC,CAAC;IAC1F,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,YAAY,CAAC,IAAuB,EAAE,OAAe;QAC/D,oBAAoB;QACpB,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,wBAAwB;QACxB,IAAI,EAAE,GAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;QAC5E,IAAI,EAAE,GAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,EAAE,GAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,EAAE,GAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;QACzF,IAAI,EAAE,GAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,EAAE,GAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,GAAG,GAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;QACjG,0BAA0B;QAC1B,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC,eAAe,EAAE,EAAE,GAAG,aAAa,CAAC,eAAe,EAAE,EAAE,GAAG,aAAa,CAAC,eAAe,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;IACtK,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CAAC,OAAc,EAAE,IAAuB,EAAE,aAA4B,EAAE,OAAe;QAC5G,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,QAAQ,GAAc,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5G,IAAI,OAAO,GAAoB,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QACtG,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,oFAAoF;QAC7K,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,sBAAsB;QACtB,IAAI,KAAK,GAAU,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACvF,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,qBAAqB,CAAC,UAA6B,EAAE,UAAoC,EAAE,OAAe;QACrH,uDAAuD;QACvD,iDAAiD;QACjD,EAAE;QACF,6BAA6B;QAC7B,IAAI,cAAc,GAAW,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxF,4BAA4B;QAC5B,IAAI,GAAG,GAAS,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAS,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,KAAK,GAAS,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,oCAAoC;QACpC,IAAI,aAAa,GAAuB,IAAI,kBAAkB,EAAE,CAAC;QACjE,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAChD,sCAAsC;YACtC,IAAI,SAAS,GAAsB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,aAAa,GAAW,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,IAAI,cAAc,GAAY,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1F,6BAA6B;YAC7B,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,yBAAyB,CAAC,EAAE;gBACrE,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzH,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,sBAAsB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;aACrI;YACD,YAAY;YACZ,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE;gBAC5G,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,0CAA0C;gBACpK,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,4BAA4B,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5I,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;aACrI;YACD,iCAAiC;YACjC,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,6BAA6B,CAAC,EAAE;gBACzE,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBAClI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;aACrI;YACD,kGAAkG;YAClG,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,6BAA6B,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,qCAAqC,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,yBAAyB,CAAC,EAAE;gBACnO,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBAClI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClI,0NAA0N;aAC7N;YACD,kBAAkB;YAClB,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;gBAC1D,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBAClI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;aACrI;YACD,sBAAsB;YACtB,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAAE;gBAC9D,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzH,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,sBAAsB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;aACrI;YACD,gDAAgD;YAChD,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,uBAAuB,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,qBAAqB,CAAC,EAAE;gBACtI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBAClI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjI,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;aACrI;SACJ;QACD,6BAA6B;QAC7B,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,yBAAyB,CAAC;YAAE,OAAO,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACzH,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,CAAC;YAAE,OAAO,IAAI,2BAA2B,CAAC,aAAa,CAAC,CAAC;QAC9G,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC;YAAE,OAAO,IAAI,6BAA6B,CAAC,aAAa,CAAC,CAAC;QAClH,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,6BAA6B,CAAC;YAAE,OAAO,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzH,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,6BAA6B,CAAC;YAAE,OAAO,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzH,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,yBAAyB,CAAC;YAAE,OAAO,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACrH,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC;YAAE,OAAO,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QACpG,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC;YAAE,OAAO,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;QAC5G,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,uBAAuB,CAAC;YAAE,OAAO,IAAI,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACtH,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,qBAAqB,CAAC;YAAE,OAAO,IAAI,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAClH,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,2BAA2B,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,eAAe,CAAC,OAAc,EAAE,IAAuB,EAAE,OAAe;QACnF,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,aAAa,GAAkB,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACxH,IAAI,KAAK,GAAU,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9G,IAAI,QAAQ,GAAoB,KAAK,CAAC,UAAU,EAAE,CAAC;QACnD,IAAI,QAAQ,GAAqB,IAAI,KAAK,EAAa,CAAC;QACxD,IAAI,UAAU,GAAS,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9F,IAAI,IAAI,GAA6B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,oBAAoB;QACpB,IAAI,QAAQ,IAAI,IAAI;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAA,QAAQ,EAAE,EAAE,CAAA,QAAQ,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAA,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrJ,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA,UAAU,EAAE,KAAK,EAAE,IAAI,CAAA,WAAW,EAAE,IAAI,CAAA,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC7H,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,eAAe,CAAC,OAAc,EAAE,IAAuB,EAAE,OAAe;QACnF,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,aAAa,GAAkB,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACxH,IAAI,KAAK,GAAU,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9G,IAAI,QAAQ,GAAoB,KAAK,CAAC,UAAU,EAAE,CAAC;QACnD,IAAI,QAAQ,GAAqB,IAAI,KAAK,EAAa,CAAC;QACxD,IAAI,WAAW,GAAS,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAChG,IAAI,IAAI,GAA6B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,oBAAoB;QACpB,IAAI,QAAQ,IAAI,IAAI;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAA,QAAQ,EAAE,EAAE,CAAA,QAAQ,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAA,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrJ,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAA,UAAU,EAAE,KAAK,EAAE,IAAI,CAAA,WAAW,EAAE,IAAI,CAAA,cAAc,EAAE,QAAQ,CAAC,CAAC;IAChI,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,eAAe,CAAC,OAAc,EAAE,IAAuB,EAAE,OAAe;QACnF,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,OAAO,GAAQ,aAAa,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACtG,IAAI,UAAU,GAAsB,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,UAAU,GAA6B,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAChF,IAAI,gBAAgB,GAAoB,aAAa,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7G,IAAI,UAAU,GAAS,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9F,IAAI,IAAI,GAA6B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,oBAAoB;QACpB,IAAI,mBAAmB,GAAc,IAAI,SAAS,CAAC,CAAC,CAAA,QAAQ,EAAE,EAAE,CAAA,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACtJ,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA,UAAU,EAAE,IAAI,CAAA,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAA,WAAW,CAAC,CAAC;IACpI,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,aAAa,CAAC,OAAc,EAAE,IAAuB,EAAE,OAAe;QACjF,wBAAwB;QACxB,IAAI,IAAI,GAAW,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,GAAsB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvE,+BAA+B;QAC/B,IAAI,QAAQ,GAAU,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,IAAI,GAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,sBAAsB;QACtB,IAAI,KAAK,GAAU,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAA,YAAY,EAAE,IAAI,CAAA,iBAAiB,CAAC,CAAC;QACvG,oBAAoB;QACpB,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAA,UAAU,EAAE,KAAK,EAAE,IAAI,CAAA,WAAW,EAAE,IAAI,CAAA,uBAAuB,EAAE,IAAI,CAAA,WAAW,CAAC,CAAC;IAC9I,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAAc,EAAE,IAAY,EAAE,OAAe;QACnF,IAAI,IAAI,GAAsB,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;YAAE,OAAO,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrH,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;YAAE,OAAO,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrH,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;YAAE,OAAO,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrH,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;YAAE,OAAO,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnH,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,wCAAwC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC;IAChB,CAAC;;AAvZD,8BAA8B;AACN,oBAAM,GAAW,eAAe,CAAC;AAEzD,8CAA8C;AACvB,0BAAY,GAAW,SAAS,CAAC;AAExD,sDAAsD;AAC9B,6BAAe,GAAY,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;AAEpF,4CAA4C;AAC7B,oBAAM,GAAU,MAAM,CAAC;SAX7B,aAAa","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n//package orbitgt.spatial.ecrs;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { AList } from \"../../system/collection/AList\";\nimport { ASystem } from \"../../system/runtime/ASystem\";\nimport { Message } from \"../../system/runtime/Message\";\nimport { Numbers } from \"../../system/runtime/Numbers\";\nimport { Strings } from \"../../system/runtime/Strings\";\nimport { CRS } from \"./CRS\";\nimport { Datum } from \"./Datum\";\nimport { Ellipsoid } from \"./Ellipsoid\";\nimport { Operation } from \"./Operation\";\nimport { OperationMethod } from \"./OperationMethod\";\nimport { ParameterValue } from \"./ParameterValue\";\nimport { ParameterValueList } from \"./ParameterValueList\";\nimport { PrimeMeridian } from \"./PrimeMeridian\";\nimport { HotineObliqueMercator } from \"./projection/HotineObliqueMercator\";\nimport { KrovakObliqueConformalConic } from \"./projection/KrovakObliqueConformalConic\";\nimport { KrovakObliqueConformalConicEN } from \"./projection/KrovakObliqueConformalConicEN\";\nimport { LambertConical1SP } from \"./projection/LambertConical1SP\";\nimport { LambertConical2SP } from \"./projection/LambertConical2SP\";\nimport { Mercator1SP } from \"./projection/Mercator1SP\";\nimport { ObliqueMercator } from \"./projection/ObliqueMercator\";\nimport { ObliqueStereographic } from \"./projection/ObliqueStereographic\";\nimport { TransverseMercator } from \"./projection/TransverseMercator\";\nimport { Registry } from \"./Registry\";\nimport { PositionVector } from \"./transformation/PositionVector\";\nimport { Unit } from \"./Unit\";\nimport { WellKnownTextNode } from \"./WellKnownTextNode\";\n\n/**\n * Class WellKnownText parses Well-known Text Representations of Spatial Reference Systems.\n *\n * @version 1.0 December 2010\n */\n/** @internal */\nexport class WellKnownText {\n /** The name of this module */\n private static readonly MODULE: string = \"WellKnownText\";\n\n /** The dialect type in case of generic WKT */\n public static readonly TYPE_GENERIC: string = \"generic\";\n\n /** The conversion ratio from \"arc-sec\" to \"radian\" */\n private static readonly _ARC_SEC_TO_RAD: float64 = (1.0 / 3600.0 * Math.PI / 180.0);\n\n /** The counter for creating unique codes */\n private static _CODES: int32 = 100000;\n\n /**\n * No instances.\n */\n private constructor() { }\n\n /**\n * Unquote a name.\n * @param name the name.\n * @return the unquoted name.\n */\n private static unquote(name: string): string {\n name = Strings.trim(name);\n ASystem.assert0(Strings.startsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not start with a quote\");\n ASystem.assert0(Strings.endsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not end with a quote\");\n return Strings.substring(name, 1, Strings.getLength(name) - 1);\n }\n\n /**\n * Get a number.\n * @param value the string value.\n * @return the number.\n */\n private static getInteger(value: string): int32 {\n return Numbers.getInteger(value, 0);\n }\n\n /**\n * Get a number.\n * @param value the string value.\n * @return the number.\n */\n private static getDouble(value: string): float64 {\n return Numbers.getDouble(value, 0.0);\n }\n\n /**\n * Get a number.\n * @param value the node value.\n * @return the number.\n */\n private static getNodeDouble(value: WellKnownTextNode): float64 {\n if (value == null) return 0.0;\n return Numbers.getDouble(value.getName(), 0.0);\n }\n\n /**\n * Get an EPSG code for an element.\n * @param authority the authority for the element.\n * @param dialect the dialect of WKT to parse.\n * @return the EPSG code (zero if not found).\n */\n private static getEPSGCode(authority: WellKnownTextNode, dialect: string): int32 {\n // example: AUTHORITY[\"EPSG\",\"2320\"]\n if (authority == null) return 0;\n let name: string = WellKnownText.unquote(authority.getArgument(0).getName());\n let code: string = WellKnownText.unquote(authority.getArgument(1).getName());\n if (Strings.equalsIgnoreCase(name, \"EPSG\") == false) return 0;\n let epsgCode: int32 = Numbers.getInteger(code, 0);\n return epsgCode; // Enabled on 06/06/2014\n }\n\n /**\n * Parse a linear unit.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the unit.\n */\n private static parseLinearUnit(node: WellKnownTextNode, dialect: string): Unit {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the unit */\n return new Unit(code, name, name/*abbreviation*/, \"length\", Unit.METER/*targetUnitCode*/, conversionFactor, 1.0);\n }\n\n /**\n * Parse an angular unit.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the unit.\n */\n private static parseAngularUnit(node: WellKnownTextNode, dialect: string): Unit {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the unit */\n return new Unit(code, name, name/*abbreviation*/, \"angle\", Unit.RADIAN/*targetUnitCode*/, conversionFactor, 1.0);\n }\n\n /**\n * Parse a spheroid.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the ellipsoid.\n */\n private static parseSpheroid(crsCode: int32, node: WellKnownTextNode, dialect: string): Ellipsoid {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let semiMajorAxis: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let invFlattening: float64 = WellKnownText.getDouble(node.getArgument(2).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the ellipsoid */\n return new Ellipsoid(code, name, Unit.METER, semiMajorAxis, invFlattening, 0.0);\n }\n\n /**\n * Parse a prime-meridian.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the prime-meridian.\n */\n private static parsePrimeMeridian(crsCode: int32, node: WellKnownTextNode, dialect: string): PrimeMeridian {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let longitude: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the prime-meridian */\n return new PrimeMeridian(code, name, longitude/*lonFromGreenwich*/, Unit.DEGREE/*?*/);\n }\n\n /**\n * Parse a to-wgs84 transform.\n * @param node the well-known-text node (method position vector).\n * @param dialect the dialect of WKT to parse.\n * @return the transform.\n */\n public static parseToWGS84(node: WellKnownTextNode, dialect: string): OperationMethod {\n /* No transform ? */\n if (node == null) return null;\n /* Get the parameters */\n let dx: float64 = WellKnownText.getNodeDouble(node.getArgument(0)); // meter\n let dy: float64 = WellKnownText.getNodeDouble(node.getArgument(1));\n let dz: float64 = WellKnownText.getNodeDouble(node.getArgument(2));\n let rx: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(3)); // arc-second\n let ry: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(4));\n let rz: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(5));\n let ppm: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(6)); // parts-per-million\n /* Return the transform */\n return PositionVector.create(dx, dy, dz, rx * WellKnownText._ARC_SEC_TO_RAD, ry * WellKnownText._ARC_SEC_TO_RAD, rz * WellKnownText._ARC_SEC_TO_RAD, ppm / 1.0e6);\n }\n\n /**\n * Parse a datum.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param primeMeridian the prime meridian.\n * @param dialect the dialect of WKT to parse.\n * @return the datum (with optional embedded datum transformation to WGS84).\n */\n private static parseDatum(crsCode: int32, node: WellKnownTextNode, primeMeridian: PrimeMeridian, dialect: string): Datum {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let spheroid: Ellipsoid = WellKnownText.parseSpheroid(crsCode, node.getArgumentByName(\"SPHEROID\"), dialect);\n let toWGS84: OperationMethod = WellKnownText.parseToWGS84(node.getArgumentByName(\"TOWGS84\"), dialect);\n if (toWGS84 == null) toWGS84 = PositionVector.create(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); // default (identity) transform added on 19/06/2013 to allow ViewTransform creation.\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the datum */\n let datum: Datum = new Datum(code, name, Datum.TYPE_GEODETIC, spheroid, primeMeridian);\n datum.setToWGS84(toWGS84);\n return datum;\n }\n\n /**\n * Parse a projection method.\n * @param projection the well-known-text projection node.\n * @param parameters the well-known-text parameter nodes.\n * @param dialect the dialect of WKT to parse.\n * @return the projection method.\n */\n private static parseProjectionMethod(projection: WellKnownTextNode, parameters: AList<WellKnownTextNode>, dialect: string): OperationMethod {\n // See: http://www.remotesensing.org/geotiff/proj_list/\n // for method names and parameter names and units\n //\n /* Get the projection name */\n let projectionName: string = WellKnownText.unquote(projection.getArgument(0).getName());\n /* Get the standard units */\n let DEG: Unit = Registry.getUnit(Unit.DEGREE);\n let METER: Unit = Registry.getUnit(Unit.METER);\n let SCALE: Unit = Registry.getUnit(Unit.UNITY);\n /* Convert to standard parameters */\n let parameterList: ParameterValueList = new ParameterValueList();\n for (let i: number = 0; i < parameters.size(); i++) {\n /* Get the parameter name and value */\n let parameter: WellKnownTextNode = parameters.get(i);\n let parameterName: string = WellKnownText.unquote(parameter.getArgument(0).getName());\n let parameterValue: float64 = WellKnownText.getDouble(parameter.getArgument(1).getName());\n /* Hotine_Oblique_Mercator */\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Krovak */\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\") || Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8833, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(1036, parameterValue, DEG)); // changed from 8813 to 1036 on 31/08/2017\n if (Strings.equalsIgnoreCase(parameterName, \"pseudo_standard_parallel_1\")) parameterList.add(new ParameterValue(8818, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8819, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Lambert_Conformal_Conic_1SP */\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Lambert_Conformal_Conic_2SP / Lambert_Conformal_Conic_2SP_Belgium / Lambert_Conformal_Conic */\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP_Belgium\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8821, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8822, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_1\")) parameterList.add(new ParameterValue(8823, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_2\")) parameterList.add(new ParameterValue(8824, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8826, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8827, parameterValue, METER));\n // if (Strings.equalsIgnoreCase(parameterName,\"scale_factor\")) {if (parameterValue!=1.0) throw new IllegalArgumentException(MODULE+\" : Invalid parameter '\"+parameterName+\"' with value \"+parameterValue);}\n }\n /* Mercator_1SP */\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Oblique_Mercator */\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8816, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8817, parameterValue, METER));\n }\n /* Oblique_Stereographic /Transverse_Mercator */\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\") || Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n }\n /* Create the right method */\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) return new HotineObliqueMercator(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\")) return new KrovakObliqueConformalConic(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) return new KrovakObliqueConformalConicEN(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) return new LambertConical1SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\")) return new LambertConical2SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) return new LambertConical2SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) return new Mercator1SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) return new ObliqueMercator(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\")) return new ObliqueStereographic(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) return new TransverseMercator(parameterList);\n ASystem.assert0(false, \"Unknown projection type '\" + projectionName + \"'\");\n return null;\n }\n\n /**\n * Parse a geocentric CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseGeocentric(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\n let toWGS84m: OperationMethod = datum.getToWGS84();\n let toWGS84s: AList<Operation> = new AList<Operation>();\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Return the CRS */\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\n return new CRS(code, name, 0/*area*/, CRS.GEOCENTRIC, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\n }\n\n /**\n * Parse a geographic CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseGeographic(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\n let toWGS84m: OperationMethod = datum.getToWGS84();\n let toWGS84s: AList<Operation> = new AList<Operation>();\n let angularUnit: Unit = WellKnownText.parseAngularUnit(node.getArgumentByName(\"UNIT\"), dialect);\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Return the CRS */\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\n return new CRS(code, name, 0/*area*/, CRS.GEOGRAPHIC_2D, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\n }\n\n /**\n * Parse a projected CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseProjection(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let baseCRS: CRS = WellKnownText.parseGeographic(-crsCode, node.getArgumentByName(\"GEOGCS\"), dialect);\n let projection: WellKnownTextNode = node.getArgumentByName(\"PROJECTION\");\n let parameters: AList<WellKnownTextNode> = node.getArgumentsByName(\"PARAMETER\");\n let projectionMethod: OperationMethod = WellKnownText.parseProjectionMethod(projection, parameters, dialect);\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Return the CRS */\n let projectionOperation: Operation = new Operation(0/*code*/, \"\"/*name*/, Operation.CONVERSION, code, baseCRS.getCode(), 0/*area*/, projectionMethod);\n return new CRS(code, name, 0/*area*/, CRS.PROJECTED, 0/*csCode*/, null/*datum*/, baseCRS, projectionOperation, null/*toWGS84*/);\n }\n\n /**\n * Parse a vertical CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseVertical(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Create the datum */\n let datum: Datum = new Datum(code, name, Datum.TYPE_VERTICAL, null/*spheroid*/, null/*primeMeridian*/);\n /* Return the CRS */\n return new CRS(code, name, 0/*area*/, CRS.VERTICAL, 6499/*csCode*/, datum, null/*baseCRS*/, null/*projectionOperation*/, null/*toWGS84*/);\n }\n\n /**\n * Parse a CRS well-known-text.\n * @param crsCode the code of the CRS.\n * @param text the well-known-text.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS (null if unable to parse).\n */\n public static parseSpatialReferenceSystem(crsCode: int32, text: string, dialect: string): CRS {\n let node: WellKnownTextNode = WellKnownTextNode.parse(text);\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOCCS\")) return WellKnownText.parseGeocentric(crsCode, node, dialect);\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOGCS\")) return WellKnownText.parseGeographic(crsCode, node, dialect);\n if (Strings.equalsIgnoreCase(node.getName(), \"PROJCS\")) return WellKnownText.parseProjection(crsCode, node, dialect);\n if (Strings.equalsIgnoreCase(node.getName(), \"VERTCS\")) return WellKnownText.parseVertical(crsCode, node, dialect);\n Message.printWarning(WellKnownText.MODULE, \"Invalid spatial reference system WKT '\" + text + \"'\");\n return null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WellKnownText.js","sourceRoot":"","sources":["../../../../src/spatial/ecrs/WellKnownText.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n//package orbitgt.spatial.ecrs;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { AList } from \"../../system/collection/AList\";\nimport { ASystem } from \"../../system/runtime/ASystem\";\nimport { Message } from \"../../system/runtime/Message\";\nimport { Numbers } from \"../../system/runtime/Numbers\";\nimport { Strings } from \"../../system/runtime/Strings\";\nimport { CRS } from \"./CRS\";\nimport { Datum } from \"./Datum\";\nimport { Ellipsoid } from \"./Ellipsoid\";\nimport { Operation } from \"./Operation\";\nimport { OperationMethod } from \"./OperationMethod\";\nimport { ParameterValue } from \"./ParameterValue\";\nimport { ParameterValueList } from \"./ParameterValueList\";\nimport { PrimeMeridian } from \"./PrimeMeridian\";\nimport { HotineObliqueMercator } from \"./projection/HotineObliqueMercator\";\nimport { KrovakObliqueConformalConic } from \"./projection/KrovakObliqueConformalConic\";\nimport { KrovakObliqueConformalConicEN } from \"./projection/KrovakObliqueConformalConicEN\";\nimport { LambertConical1SP } from \"./projection/LambertConical1SP\";\nimport { LambertConical2SP } from \"./projection/LambertConical2SP\";\nimport { Mercator1SP } from \"./projection/Mercator1SP\";\nimport { ObliqueMercator } from \"./projection/ObliqueMercator\";\nimport { ObliqueStereographic } from \"./projection/ObliqueStereographic\";\nimport { TransverseMercator } from \"./projection/TransverseMercator\";\nimport { Registry } from \"./Registry\";\nimport { PositionVector } from \"./transformation/PositionVector\";\nimport { Unit } from \"./Unit\";\nimport { WellKnownTextNode } from \"./WellKnownTextNode\";\n\n/**\n * Class WellKnownText parses Well-known Text Representations of Spatial Reference Systems.\n *\n * @version 1.0 December 2010\n */\n/** @internal */\nexport class WellKnownText {\n /** The name of this module */\n private static readonly MODULE: string = \"WellKnownText\";\n\n /** The dialect type in case of generic WKT */\n public static readonly TYPE_GENERIC: string = \"generic\";\n\n /** The conversion ratio from \"arc-sec\" to \"radian\" */\n private static readonly _ARC_SEC_TO_RAD: float64 = (1.0 / 3600.0 * Math.PI / 180.0);\n\n /** The counter for creating unique codes */\n private static _CODES: int32 = 100000;\n\n /**\n * No instances.\n */\n private constructor() { }\n\n /**\n * Unquote a name.\n * @param name the name.\n * @return the unquoted name.\n */\n private static unquote(name: string): string {\n name = Strings.trim(name);\n ASystem.assert0(Strings.startsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not start with a quote\");\n ASystem.assert0(Strings.endsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not end with a quote\");\n return Strings.substring(name, 1, Strings.getLength(name) - 1);\n }\n\n /**\n * Get a number.\n * @param value the string value.\n * @return the number.\n */\n private static getInteger(value: string): int32 {\n return Numbers.getInteger(value, 0);\n }\n\n /**\n * Get a number.\n * @param value the string value.\n * @return the number.\n */\n private static getDouble(value: string): float64 {\n return Numbers.getDouble(value, 0.0);\n }\n\n /**\n * Get a number.\n * @param value the node value.\n * @return the number.\n */\n private static getNodeDouble(value: WellKnownTextNode): float64 {\n if (value == null) return 0.0;\n return Numbers.getDouble(value.getName(), 0.0);\n }\n\n /**\n * Get an EPSG code for an element.\n * @param authority the authority for the element.\n * @param dialect the dialect of WKT to parse.\n * @return the EPSG code (zero if not found).\n */\n private static getEPSGCode(authority: WellKnownTextNode, dialect: string): int32 {\n // example: AUTHORITY[\"EPSG\",\"2320\"]\n if (authority == null) return 0;\n let name: string = WellKnownText.unquote(authority.getArgument(0).getName());\n let code: string = WellKnownText.unquote(authority.getArgument(1).getName());\n if (Strings.equalsIgnoreCase(name, \"EPSG\") == false) return 0;\n let epsgCode: int32 = Numbers.getInteger(code, 0);\n return epsgCode; // Enabled on 06/06/2014\n }\n\n /**\n * Parse a linear unit.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the unit.\n */\n private static parseLinearUnit(node: WellKnownTextNode, dialect: string): Unit {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the unit */\n return new Unit(code, name, name/*abbreviation*/, \"length\", Unit.METER/*targetUnitCode*/, conversionFactor, 1.0);\n }\n\n /**\n * Parse an angular unit.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the unit.\n */\n private static parseAngularUnit(node: WellKnownTextNode, dialect: string): Unit {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the unit */\n return new Unit(code, name, name/*abbreviation*/, \"angle\", Unit.RADIAN/*targetUnitCode*/, conversionFactor, 1.0);\n }\n\n /**\n * Parse a spheroid.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the ellipsoid.\n */\n private static parseSpheroid(crsCode: int32, node: WellKnownTextNode, dialect: string): Ellipsoid {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let semiMajorAxis: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let invFlattening: float64 = WellKnownText.getDouble(node.getArgument(2).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the ellipsoid */\n return new Ellipsoid(code, name, Unit.METER, semiMajorAxis, invFlattening, 0.0);\n }\n\n /**\n * Parse a prime-meridian.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the prime-meridian.\n */\n private static parsePrimeMeridian(crsCode: int32, node: WellKnownTextNode, dialect: string): PrimeMeridian {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let longitude: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the prime-meridian */\n return new PrimeMeridian(code, name, longitude/*lonFromGreenwich*/, Unit.DEGREE/*?*/);\n }\n\n /**\n * Parse a to-wgs84 transform.\n * @param node the well-known-text node (method position vector).\n * @param dialect the dialect of WKT to parse.\n * @return the transform.\n */\n public static parseToWGS84(node: WellKnownTextNode, dialect: string): OperationMethod {\n /* No transform ? */\n if (node == null) return null;\n /* Get the parameters */\n let dx: float64 = WellKnownText.getNodeDouble(node.getArgument(0)); // meter\n let dy: float64 = WellKnownText.getNodeDouble(node.getArgument(1));\n let dz: float64 = WellKnownText.getNodeDouble(node.getArgument(2));\n let rx: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(3)); // arc-second\n let ry: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(4));\n let rz: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(5));\n let ppm: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(6)); // parts-per-million\n /* Return the transform */\n return PositionVector.create(dx, dy, dz, rx * WellKnownText._ARC_SEC_TO_RAD, ry * WellKnownText._ARC_SEC_TO_RAD, rz * WellKnownText._ARC_SEC_TO_RAD, ppm / 1.0e6);\n }\n\n /**\n * Parse a datum.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param primeMeridian the prime meridian.\n * @param dialect the dialect of WKT to parse.\n * @return the datum (with optional embedded datum transformation to WGS84).\n */\n private static parseDatum(crsCode: int32, node: WellKnownTextNode, primeMeridian: PrimeMeridian, dialect: string): Datum {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let spheroid: Ellipsoid = WellKnownText.parseSpheroid(crsCode, node.getArgumentByName(\"SPHEROID\"), dialect);\n let toWGS84: OperationMethod = WellKnownText.parseToWGS84(node.getArgumentByName(\"TOWGS84\"), dialect);\n if (toWGS84 == null) toWGS84 = PositionVector.create(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); // default (identity) transform added on 19/06/2013 to allow ViewTransform creation.\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\n /* Return the datum */\n let datum: Datum = new Datum(code, name, Datum.TYPE_GEODETIC, spheroid, primeMeridian);\n datum.setToWGS84(toWGS84);\n return datum;\n }\n\n /**\n * Parse a projection method.\n * @param projection the well-known-text projection node.\n * @param parameters the well-known-text parameter nodes.\n * @param dialect the dialect of WKT to parse.\n * @return the projection method.\n */\n private static parseProjectionMethod(projection: WellKnownTextNode, parameters: AList<WellKnownTextNode>, dialect: string): OperationMethod {\n // See: http://www.remotesensing.org/geotiff/proj_list/\n // for method names and parameter names and units\n //\n /* Get the projection name */\n let projectionName: string = WellKnownText.unquote(projection.getArgument(0).getName());\n /* Get the standard units */\n let DEG: Unit = Registry.getUnit(Unit.DEGREE);\n let METER: Unit = Registry.getUnit(Unit.METER);\n let SCALE: Unit = Registry.getUnit(Unit.UNITY);\n /* Convert to standard parameters */\n let parameterList: ParameterValueList = new ParameterValueList();\n for (let i: number = 0; i < parameters.size(); i++) {\n /* Get the parameter name and value */\n let parameter: WellKnownTextNode = parameters.get(i);\n let parameterName: string = WellKnownText.unquote(parameter.getArgument(0).getName());\n let parameterValue: float64 = WellKnownText.getDouble(parameter.getArgument(1).getName());\n /* Hotine_Oblique_Mercator */\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Krovak */\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\") || Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8833, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(1036, parameterValue, DEG)); // changed from 8813 to 1036 on 31/08/2017\n if (Strings.equalsIgnoreCase(parameterName, \"pseudo_standard_parallel_1\")) parameterList.add(new ParameterValue(8818, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8819, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Lambert_Conformal_Conic_1SP */\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Lambert_Conformal_Conic_2SP / Lambert_Conformal_Conic_2SP_Belgium / Lambert_Conformal_Conic */\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP_Belgium\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8821, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8822, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_1\")) parameterList.add(new ParameterValue(8823, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_2\")) parameterList.add(new ParameterValue(8824, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8826, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8827, parameterValue, METER));\n // if (Strings.equalsIgnoreCase(parameterName,\"scale_factor\")) {if (parameterValue!=1.0) throw new IllegalArgumentException(MODULE+\" : Invalid parameter '\"+parameterName+\"' with value \"+parameterValue);}\n }\n /* Mercator_1SP */\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n /* Oblique_Mercator */\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8816, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8817, parameterValue, METER));\n }\n /* Oblique_Stereographic /Transverse_Mercator */\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\") || Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) {\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\n }\n }\n /* Create the right method */\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) return new HotineObliqueMercator(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\")) return new KrovakObliqueConformalConic(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) return new KrovakObliqueConformalConicEN(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) return new LambertConical1SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\")) return new LambertConical2SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) return new LambertConical2SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) return new Mercator1SP(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) return new ObliqueMercator(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\")) return new ObliqueStereographic(parameterList);\n if (Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) return new TransverseMercator(parameterList);\n ASystem.assert0(false, \"Unknown projection type '\" + projectionName + \"'\");\n return null;\n }\n\n /**\n * Parse a geocentric CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseGeocentric(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\n let toWGS84m: OperationMethod = datum.getToWGS84();\n let toWGS84s: AList<Operation> = new AList<Operation>();\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Return the CRS */\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\n return new CRS(code, name, 0/*area*/, CRS.GEOCENTRIC, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\n }\n\n /**\n * Parse a geographic CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseGeographic(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\n let toWGS84m: OperationMethod = datum.getToWGS84();\n let toWGS84s: AList<Operation> = new AList<Operation>();\n let angularUnit: Unit = WellKnownText.parseAngularUnit(node.getArgumentByName(\"UNIT\"), dialect);\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Return the CRS */\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\n return new CRS(code, name, 0/*area*/, CRS.GEOGRAPHIC_2D, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\n }\n\n /**\n * Parse a projected CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseProjection(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let baseCRS: CRS = WellKnownText.parseGeographic(-crsCode, node.getArgumentByName(\"GEOGCS\"), dialect);\n let projection: WellKnownTextNode = node.getArgumentByName(\"PROJECTION\");\n let parameters: AList<WellKnownTextNode> = node.getArgumentsByName(\"PARAMETER\");\n let projectionMethod: OperationMethod = WellKnownText.parseProjectionMethod(projection, parameters, dialect);\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Return the CRS */\n let projectionOperation: Operation = new Operation(0/*code*/, \"\"/*name*/, Operation.CONVERSION, code, baseCRS.getCode(), 0/*area*/, projectionMethod);\n return new CRS(code, name, 0/*area*/, CRS.PROJECTED, 0/*csCode*/, null/*datum*/, baseCRS, projectionOperation, null/*toWGS84*/);\n }\n\n /**\n * Parse a vertical CRS.\n * @param crsCode the code of the CRS.\n * @param node the well-known-text node.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS.\n */\n private static parseVertical(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\n /* Get the parameters */\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\n /* Do we have an EPGS code ? */\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\n /* Create the datum */\n let datum: Datum = new Datum(code, name, Datum.TYPE_VERTICAL, null/*spheroid*/, null/*primeMeridian*/);\n /* Return the CRS */\n return new CRS(code, name, 0/*area*/, CRS.VERTICAL, 6499/*csCode*/, datum, null/*baseCRS*/, null/*projectionOperation*/, null/*toWGS84*/);\n }\n\n /**\n * Parse a CRS well-known-text.\n * @param crsCode the code of the CRS.\n * @param text the well-known-text.\n * @param dialect the dialect of WKT to parse.\n * @return the CRS (null if unable to parse).\n */\n public static parseSpatialReferenceSystem(crsCode: int32, text: string, dialect: string): CRS {\n let node: WellKnownTextNode = WellKnownTextNode.parse(text);\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOCCS\")) return WellKnownText.parseGeocentric(crsCode, node, dialect);\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOGCS\")) return WellKnownText.parseGeographic(crsCode, node, dialect);\n if (Strings.equalsIgnoreCase(node.getName(), \"PROJCS\")) return WellKnownText.parseProjection(crsCode, node, dialect);\n if (Strings.equalsIgnoreCase(node.getName(), \"VERTCS\")) return WellKnownText.parseVertical(crsCode, node, dialect);\n Message.printWarning(WellKnownText.MODULE, \"Invalid spatial reference system WKT '\" + text + \"'\");\n return null;\n }\n}\n"]}
|
|
@@ -24,7 +24,7 @@ import { OperationMethod } from "../OperationMethod";
|
|
|
24
24
|
* @version 1.0 May 2008
|
|
25
25
|
*/
|
|
26
26
|
/** @internal */
|
|
27
|
-
class HotineObliqueMercator extends OperationMethod {
|
|
27
|
+
export class HotineObliqueMercator extends OperationMethod {
|
|
28
28
|
/**
|
|
29
29
|
* Create a new projection.
|
|
30
30
|
* @param parameters the values of the parameters.
|
|
@@ -156,5 +156,4 @@ class HotineObliqueMercator extends OperationMethod {
|
|
|
156
156
|
}
|
|
157
157
|
/** The code of this method */
|
|
158
158
|
HotineObliqueMercator.METHOD_CODE = 9812;
|
|
159
|
-
export { HotineObliqueMercator };
|
|
160
159
|
//# sourceMappingURL=HotineObliqueMercator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotineObliqueMercator.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/HotineObliqueMercator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n// package orbitgt.spatial.ecrs.projection;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { Coordinate } from \"../../geom/Coordinate\";\nimport { CRS } from \"../CRS\";\nimport { Ellipsoid } from \"../Ellipsoid\";\nimport { Operation } from \"../Operation\";\nimport { OperationMethod } from \"../OperationMethod\";\nimport { ParameterValueList } from \"../ParameterValueList\";\n\n/**\n * Class HotineObliqueMercator defines a Hotine Oblique Mercator projection.\n *\n * The 'source' CRS is the geographic CRS.\n * The 'target' CRS is the projected CRS.\n *\n * Based on the following document:\n *\n * Coordinate Conversions and Transformations including Formulas\n * Guidance Note Number 7, part 2\n * Revised August 2006\n * Available at: http://www.epsg.org/\n *\n * Formulas: see 1.4.6: Oblique Mercator and Hotine Oblique Mercator\n *\n * @version 1.0 May 2008\n */\n/** @internal */\nexport class HotineObliqueMercator extends OperationMethod {\n /** The code of this method */\n public static readonly METHOD_CODE: int32 = 9812;\n\n /** Latitude of the projection center */\n private _latC: float64;\n /** Longitude of the projection center */\n private _lonC: float64;\n /** Azimuth of the initial line passing through the projection center */\n private _aziC: float64;\n /** Angle from the recified grid to the skew (oblique) grid */\n private _gamC: float64;\n /** Scale factor on the initial line of projection */\n private _kC: float64;\n /** False easting at the natural origin */\n private _fe: float64;\n /** False northing at the natural origin */\n private _fn: float64;\n\n /** Forward calculation parameters */\n private _a: float64;\n private _e: float64;\n private _e2: float64;\n private _B: float64;\n private _A: float64;\n private _tO: float64;\n private _D: float64;\n private _F: float64;\n private _H: float64;\n private _G: float64;\n private _latO: float64;\n private _lonO: float64;\n private _vC: float64;\n private _uC: float64;\n /** Reverse calculation parameters */\n private _rev1: float64;\n private _rev2: float64;\n private _rev3: float64;\n private _rev4: float64;\n\n /**\n * Create a new projection.\n * @param parameters the values of the parameters.\n */\n public constructor(parameters: ParameterValueList) {\n super(HotineObliqueMercator.METHOD_CODE, \"Hotine Oblique Mercator\", parameters);\n /* Store the parameters */\n this._latC = parameters.getValue(8811);\n this._lonC = parameters.getValue(8812);\n this._aziC = parameters.getValue(8813);\n this._gamC = parameters.getValue(8814);\n this._kC = parameters.getValue(8815);\n this._fe = parameters.getValue(8806);\n this._fn = parameters.getValue(8807);\n }\n\n /**\n * Get the sign of a number.\n */\n private static sign(v: float64): float64 {\n return (v < 0.0) ? (-1.0) : (1.0);\n }\n\n /**\n * Get the power of a number (must be able to handle negative 'n' values).\n */\n private static pow(n: float64, e: int32): float64 {\n let p: float64 = 1.0;\n for (let i: number = 0; i < e; i++) p *= n;\n return p;\n }\n\n /**\n * Initialize the projection.\n * @param ellipsoid the ellipsoid to use.\n * @return this projection (for convenience).\n */\n public initializeProjection(ellipsoid: Ellipsoid): HotineObliqueMercator {\n /* Prepare the forward parameters */\n this._a = ellipsoid.getA();\n this._e = ellipsoid.getE();\n this._e2 = this._e * this._e;\n this._B = Math.sqrt(1.0 + (this._e2 * HotineObliqueMercator.pow(Math.cos(this._latC), 4) / (1.0 - this._e2)));\n const esinLatC: float64 = this._e * Math.sin(this._latC);\n this._A = this._a * this._B * this._kC * Math.sqrt(1.0 - this._e2) / (1.0 - HotineObliqueMercator.pow(esinLatC, 2));\n this._tO = Math.tan(Math.PI / 4.0 - this._latC / 2.0) / Math.pow((1.0 - esinLatC) / (1.0 + esinLatC), this._e / 2.0);\n this._D = this._B * Math.sqrt(1.0 - this._e2) / (Math.cos(this._latC) * Math.sqrt(1.0 - HotineObliqueMercator.pow(esinLatC, 2)));\n const D2: float64 = (this._D < 1.0) ? (1.0) : (this._D * this._D);\n this._F = this._D + Math.sqrt(D2 - 1.0) * HotineObliqueMercator.sign(this._latC);\n this._H = this._F * Math.pow(this._tO, this._B);\n this._G = (this._F - 1.0 / this._F) / 2.0;\n this._latO = Math.asin(Math.sin(this._aziC) / this._D);\n this._lonO = this._lonC - Math.asin(this._G * Math.tan(this._latO)) / this._B;\n this._vC = 0.0;\n if (Math.abs(this._aziC - 0.5 * Math.PI) < 0.00001) this._uC = this._A * (this._lonC - this._lonO); // special case Hungary, Switzerland\n else this._uC = (this._A / this._B) * Math.atan(Math.sqrt(D2 - 1.0) / Math.cos(this._aziC)) * HotineObliqueMercator.sign(this._latC);\n /* Prepare the reverse parameters */\n const e4: float64 = this._e2 * this._e2;\n const e6: float64 = e4 * this._e2;\n const e8: float64 = e4 * e4;\n this._rev1 = (this._e2 / 2 + 5 * e4 / 24 + e6 / 12 + 13 * e8 / 360);\n this._rev2 = (7 * e4 / 48 + 29 * e6 / 240 + 811 * e8 / 11520);\n this._rev3 = (7 * e6 / 120 + 81 * e8 / 1120);\n this._rev4 = (4279 * e8 / 161280);\n /* Return the projection */\n return this;\n }\n\n /**\n * OperationMethod method.\n * @see OperationMethod#initialize\n */\n public override initialize(operation: Operation): void {\n this.initializeProjection(operation.getSourceCRS().getEllipsoid());\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#forward\n */\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the parameters */\n const lon: float64 = source.getX();\n const lat: float64 = source.getY();\n /* Make the calculation */\n const esinLat: float64 = this._e * Math.sin(lat);\n const t: float64 = Math.tan(Math.PI / 4.0 - lat / 2.0) / Math.pow((1.0 - esinLat) / (1.0 + esinLat), this._e / 2.0);\n const Q: float64 = this._H / Math.pow(t, this._B);\n const S: float64 = (Q - 1.0 / Q) / 2.0;\n const T: float64 = (Q + 1.0 / Q) / 2.0;\n const V: float64 = Math.sin(this._B * (lon - this._lonO));\n const U: float64 = (-V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\n const v: float64 = this._A * Math.log((1.0 - U) / (1.0 + U)) / (2.0 * this._B);\n const u: float64 = (this._A * Math.atan((S * Math.cos(this._latO) + V * Math.sin(this._latO)) / Math.cos(this._B * (lon - this._lonO))) / this._B); // possibly related to method 9815 atan2 problem? (LER 15/06/2018)\n const sinGamC: float64 = Math.sin(this._gamC);\n const cosGamC: float64 = Math.cos(this._gamC);\n const E: float64 = v * cosGamC + u * sinGamC + this._fe;\n const N: float64 = u * cosGamC - v * sinGamC + this._fn;\n /* Save the position */\n target.setX(E);\n target.setY(N);\n target.setZ(source.getZ()); // Keep the Z value\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#reverse\n */\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the parameters */\n const E: float64 = target.getX();\n const N: float64 = target.getY();\n /* Make the calculation */\n const sinGamC: float64 = Math.sin(this._gamC);\n const cosGamC: float64 = Math.cos(this._gamC);\n const v: float64 = (E - this._fe) * cosGamC - (N - this._fn) * sinGamC;\n const u: float64 = (N - this._fn) * cosGamC + (E - this._fe) * sinGamC;\n const Q: float64 = Math.exp(-this._B * v / this._A);\n const S: float64 = (Q - 1.0 / Q) / 2.0;\n const T: float64 = (Q + 1.0 / Q) / 2.0;\n const V: float64 = Math.sin(this._B * u / this._A);\n const U: float64 = (V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\n const t: float64 = Math.pow(this._H / Math.sqrt((1.0 + U) / (1.0 - U)), 1.0 / this._B);\n const chi: float64 = Math.PI / 2.0 - 2.0 * Math.atan(t);\n const lat: float64 = chi + Math.sin(2.0 * chi) * this._rev1 + Math.sin(4.0 * chi) * this._rev2 + Math.sin(6.0 * chi) * this._rev3 + Math.sin(8.0 * chi) * this._rev4;\n const lon: float64 = this._lonO - Math.atan((S * cosGamC - V * sinGamC) / Math.cos(this._B * u / this._A)) / this._B; // possibly related to method 9815 atan2 problem? (LER 15/06/2018)\n /* Save the position */\n source.setX(lon);\n source.setY(lat);\n source.setZ(target.getZ()); // Keep the Z value\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HotineObliqueMercator.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/HotineObliqueMercator.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAcH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD;;;;;;;;;;;;;;;;GAgBG;AACH,gBAAgB;AAChB,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAwCtD;;;SAGK;IACL,YAAmB,UAA8B;QAC7C,KAAK,CAAC,qBAAqB,CAAC,WAAW,EAAE,yBAAyB,EAAE,UAAU,CAAC,CAAC;QAChF,0BAA0B;QAC1B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;SAEK;IACG,MAAM,CAAC,IAAI,CAAC,CAAU;QAC1B,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;SAEK;IACG,MAAM,CAAC,GAAG,CAAC,CAAU,EAAE,CAAQ;QACnC,IAAI,CAAC,GAAY,GAAG,CAAC;QACrB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;;;SAIK;IACE,oBAAoB,CAAC,SAAoB;QAC5C,oCAAoC;QACpC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QACrH,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjI,MAAM,EAAE,GAAY,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAoC;;YACnI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrI,oCAAoC;QACpC,MAAM,EAAE,GAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACxC,MAAM,EAAE,GAAY,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAClC,MAAM,EAAE,GAAY,EAAE,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;QAClC,2BAA2B;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;SAGK;IACW,UAAU,CAAC,SAAoB;QAC3C,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;SAGK;IACE,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,wBAAwB;QACxB,MAAM,GAAG,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,0BAA0B;QAC1B,MAAM,OAAO,GAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,CAAC,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QACpH,MAAM,CAAC,GAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,GAAY,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACvC,MAAM,CAAC,GAAY,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACvC,MAAM,CAAC,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9E,MAAM,CAAC,GAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAY,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,kEAAkE;QACtN,MAAM,OAAO,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAY,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QACxD,MAAM,CAAC,GAAY,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QACxD,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB;IACnD,CAAC;IAED;;;SAGK;IACE,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,wBAAwB;QACxB,MAAM,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,0BAA0B;QAC1B,MAAM,OAAO,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAY,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACvE,MAAM,CAAC,GAAY,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACvE,MAAM,CAAC,GAAY,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,GAAY,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACvC,MAAM,CAAC,GAAY,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACvC,MAAM,CAAC,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,GAAY,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,CAAC,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,MAAM,GAAG,GAAY,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrK,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,kEAAkE;QACxL,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB;IACnD,CAAC;;AAzKD,8BAA8B;AACP,iCAAW,GAAU,IAAI,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n// package orbitgt.spatial.ecrs.projection;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { Coordinate } from \"../../geom/Coordinate\";\nimport { CRS } from \"../CRS\";\nimport { Ellipsoid } from \"../Ellipsoid\";\nimport { Operation } from \"../Operation\";\nimport { OperationMethod } from \"../OperationMethod\";\nimport { ParameterValueList } from \"../ParameterValueList\";\n\n/**\n * Class HotineObliqueMercator defines a Hotine Oblique Mercator projection.\n *\n * The 'source' CRS is the geographic CRS.\n * The 'target' CRS is the projected CRS.\n *\n * Based on the following document:\n *\n * Coordinate Conversions and Transformations including Formulas\n * Guidance Note Number 7, part 2\n * Revised August 2006\n * Available at: http://www.epsg.org/\n *\n * Formulas: see 1.4.6: Oblique Mercator and Hotine Oblique Mercator\n *\n * @version 1.0 May 2008\n */\n/** @internal */\nexport class HotineObliqueMercator extends OperationMethod {\n /** The code of this method */\n public static readonly METHOD_CODE: int32 = 9812;\n\n /** Latitude of the projection center */\n private _latC: float64;\n /** Longitude of the projection center */\n private _lonC: float64;\n /** Azimuth of the initial line passing through the projection center */\n private _aziC: float64;\n /** Angle from the recified grid to the skew (oblique) grid */\n private _gamC: float64;\n /** Scale factor on the initial line of projection */\n private _kC: float64;\n /** False easting at the natural origin */\n private _fe: float64;\n /** False northing at the natural origin */\n private _fn: float64;\n\n /** Forward calculation parameters */\n private _a: float64;\n private _e: float64;\n private _e2: float64;\n private _B: float64;\n private _A: float64;\n private _tO: float64;\n private _D: float64;\n private _F: float64;\n private _H: float64;\n private _G: float64;\n private _latO: float64;\n private _lonO: float64;\n private _vC: float64;\n private _uC: float64;\n /** Reverse calculation parameters */\n private _rev1: float64;\n private _rev2: float64;\n private _rev3: float64;\n private _rev4: float64;\n\n /**\n * Create a new projection.\n * @param parameters the values of the parameters.\n */\n public constructor(parameters: ParameterValueList) {\n super(HotineObliqueMercator.METHOD_CODE, \"Hotine Oblique Mercator\", parameters);\n /* Store the parameters */\n this._latC = parameters.getValue(8811);\n this._lonC = parameters.getValue(8812);\n this._aziC = parameters.getValue(8813);\n this._gamC = parameters.getValue(8814);\n this._kC = parameters.getValue(8815);\n this._fe = parameters.getValue(8806);\n this._fn = parameters.getValue(8807);\n }\n\n /**\n * Get the sign of a number.\n */\n private static sign(v: float64): float64 {\n return (v < 0.0) ? (-1.0) : (1.0);\n }\n\n /**\n * Get the power of a number (must be able to handle negative 'n' values).\n */\n private static pow(n: float64, e: int32): float64 {\n let p: float64 = 1.0;\n for (let i: number = 0; i < e; i++) p *= n;\n return p;\n }\n\n /**\n * Initialize the projection.\n * @param ellipsoid the ellipsoid to use.\n * @return this projection (for convenience).\n */\n public initializeProjection(ellipsoid: Ellipsoid): HotineObliqueMercator {\n /* Prepare the forward parameters */\n this._a = ellipsoid.getA();\n this._e = ellipsoid.getE();\n this._e2 = this._e * this._e;\n this._B = Math.sqrt(1.0 + (this._e2 * HotineObliqueMercator.pow(Math.cos(this._latC), 4) / (1.0 - this._e2)));\n const esinLatC: float64 = this._e * Math.sin(this._latC);\n this._A = this._a * this._B * this._kC * Math.sqrt(1.0 - this._e2) / (1.0 - HotineObliqueMercator.pow(esinLatC, 2));\n this._tO = Math.tan(Math.PI / 4.0 - this._latC / 2.0) / Math.pow((1.0 - esinLatC) / (1.0 + esinLatC), this._e / 2.0);\n this._D = this._B * Math.sqrt(1.0 - this._e2) / (Math.cos(this._latC) * Math.sqrt(1.0 - HotineObliqueMercator.pow(esinLatC, 2)));\n const D2: float64 = (this._D < 1.0) ? (1.0) : (this._D * this._D);\n this._F = this._D + Math.sqrt(D2 - 1.0) * HotineObliqueMercator.sign(this._latC);\n this._H = this._F * Math.pow(this._tO, this._B);\n this._G = (this._F - 1.0 / this._F) / 2.0;\n this._latO = Math.asin(Math.sin(this._aziC) / this._D);\n this._lonO = this._lonC - Math.asin(this._G * Math.tan(this._latO)) / this._B;\n this._vC = 0.0;\n if (Math.abs(this._aziC - 0.5 * Math.PI) < 0.00001) this._uC = this._A * (this._lonC - this._lonO); // special case Hungary, Switzerland\n else this._uC = (this._A / this._B) * Math.atan(Math.sqrt(D2 - 1.0) / Math.cos(this._aziC)) * HotineObliqueMercator.sign(this._latC);\n /* Prepare the reverse parameters */\n const e4: float64 = this._e2 * this._e2;\n const e6: float64 = e4 * this._e2;\n const e8: float64 = e4 * e4;\n this._rev1 = (this._e2 / 2 + 5 * e4 / 24 + e6 / 12 + 13 * e8 / 360);\n this._rev2 = (7 * e4 / 48 + 29 * e6 / 240 + 811 * e8 / 11520);\n this._rev3 = (7 * e6 / 120 + 81 * e8 / 1120);\n this._rev4 = (4279 * e8 / 161280);\n /* Return the projection */\n return this;\n }\n\n /**\n * OperationMethod method.\n * @see OperationMethod#initialize\n */\n public override initialize(operation: Operation): void {\n this.initializeProjection(operation.getSourceCRS().getEllipsoid());\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#forward\n */\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the parameters */\n const lon: float64 = source.getX();\n const lat: float64 = source.getY();\n /* Make the calculation */\n const esinLat: float64 = this._e * Math.sin(lat);\n const t: float64 = Math.tan(Math.PI / 4.0 - lat / 2.0) / Math.pow((1.0 - esinLat) / (1.0 + esinLat), this._e / 2.0);\n const Q: float64 = this._H / Math.pow(t, this._B);\n const S: float64 = (Q - 1.0 / Q) / 2.0;\n const T: float64 = (Q + 1.0 / Q) / 2.0;\n const V: float64 = Math.sin(this._B * (lon - this._lonO));\n const U: float64 = (-V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\n const v: float64 = this._A * Math.log((1.0 - U) / (1.0 + U)) / (2.0 * this._B);\n const u: float64 = (this._A * Math.atan((S * Math.cos(this._latO) + V * Math.sin(this._latO)) / Math.cos(this._B * (lon - this._lonO))) / this._B); // possibly related to method 9815 atan2 problem? (LER 15/06/2018)\n const sinGamC: float64 = Math.sin(this._gamC);\n const cosGamC: float64 = Math.cos(this._gamC);\n const E: float64 = v * cosGamC + u * sinGamC + this._fe;\n const N: float64 = u * cosGamC - v * sinGamC + this._fn;\n /* Save the position */\n target.setX(E);\n target.setY(N);\n target.setZ(source.getZ()); // Keep the Z value\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#reverse\n */\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the parameters */\n const E: float64 = target.getX();\n const N: float64 = target.getY();\n /* Make the calculation */\n const sinGamC: float64 = Math.sin(this._gamC);\n const cosGamC: float64 = Math.cos(this._gamC);\n const v: float64 = (E - this._fe) * cosGamC - (N - this._fn) * sinGamC;\n const u: float64 = (N - this._fn) * cosGamC + (E - this._fe) * sinGamC;\n const Q: float64 = Math.exp(-this._B * v / this._A);\n const S: float64 = (Q - 1.0 / Q) / 2.0;\n const T: float64 = (Q + 1.0 / Q) / 2.0;\n const V: float64 = Math.sin(this._B * u / this._A);\n const U: float64 = (V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\n const t: float64 = Math.pow(this._H / Math.sqrt((1.0 + U) / (1.0 - U)), 1.0 / this._B);\n const chi: float64 = Math.PI / 2.0 - 2.0 * Math.atan(t);\n const lat: float64 = chi + Math.sin(2.0 * chi) * this._rev1 + Math.sin(4.0 * chi) * this._rev2 + Math.sin(6.0 * chi) * this._rev3 + Math.sin(8.0 * chi) * this._rev4;\n const lon: float64 = this._lonO - Math.atan((S * cosGamC - V * sinGamC) / Math.cos(this._B * u / this._A)) / this._B; // possibly related to method 9815 atan2 problem? (LER 15/06/2018)\n /* Save the position */\n source.setX(lon);\n source.setY(lat);\n source.setZ(target.getZ()); // Keep the Z value\n }\n}\n"]}
|
|
@@ -26,7 +26,7 @@ import { OperationMethod } from "../OperationMethod";
|
|
|
26
26
|
* @version 1.0 October 2009
|
|
27
27
|
*/
|
|
28
28
|
/** @internal */
|
|
29
|
-
class KrovakObliqueConformalConic extends OperationMethod {
|
|
29
|
+
export class KrovakObliqueConformalConic extends OperationMethod {
|
|
30
30
|
/**
|
|
31
31
|
* Create a new projection.
|
|
32
32
|
* @param parameters the values of the parameters.
|
|
@@ -119,5 +119,4 @@ class KrovakObliqueConformalConic extends OperationMethod {
|
|
|
119
119
|
}
|
|
120
120
|
/** The code of this method */
|
|
121
121
|
KrovakObliqueConformalConic.METHOD_CODE = 9819;
|
|
122
|
-
export { KrovakObliqueConformalConic };
|
|
123
122
|
//# sourceMappingURL=KrovakObliqueConformalConic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KrovakObliqueConformalConic.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/KrovakObliqueConformalConic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n// package orbitgt.spatial.ecrs.projection;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { Coordinate } from \"../../geom/Coordinate\";\nimport { CRS } from \"../CRS\";\nimport { Ellipsoid } from \"../Ellipsoid\";\nimport { Operation } from \"../Operation\";\nimport { OperationMethod } from \"../OperationMethod\";\nimport { ParameterValueList } from \"../ParameterValueList\";\n\n/**\n * Class KrovakObliqueConformalConic defines the Krovak Oblique Conformal Conic projection as used in the Czech Republic and Slovakia.\n *\n * The 'source' CRS is the geographic CRS.\n * The 'target' CRS is the projected CRS.\n *\n * Based on the following document:\n *\n * Coordinate Conversions and Transformations including Formulas\n * Guidance Note Number 7, part 2 (version 6.18.3)\n * Revised January 2009\n * Available at: http://www.epsg.org/\n *\n * Formulas: see 1.3.2 \"Krovak Oblique Conformal Conic\"\n *\n * NOTE: the X axis runs north to south and the Y axis runs east to west. This differs from most other projections.\n *\n * @version 1.0 October 2009\n */\n/** @internal */\nexport class KrovakObliqueConformalConic extends OperationMethod {\n /** The code of this method */\n public static readonly METHOD_CODE: int32 = 9819;\n\n /** Latitude of projection center */\n private _latC: float64;\n /** Longitude of origin */\n private _lonO: float64;\n /** Azimuth of initial line through the projection center */\n private _aziC: float64;\n /** Latitude of pseudo standard parallel */\n private _latP: float64;\n /** Scale factor on pseudo standard parallel */\n private _kP: float64;\n /** Easting at grid origin */\n private _FE: float64;\n /** Northing at grid origin */\n private _FN: float64;\n\n /** The constants */\n private _A: float64;\n private _B: float64;\n private _gO: float64;\n private _tO: float64;\n private _n: float64;\n private _rO: float64;\n\n /**\n * Create a new projection.\n * @param parameters the values of the parameters.\n */\n public constructor(parameters: ParameterValueList) {\n super(KrovakObliqueConformalConic.METHOD_CODE, \"Krovak Oblique Conic Conformal\", parameters);\n /* Store the parameters */\n this._latC = parameters.getValue(8811);\n this._lonO = parameters.getValue(8833);\n this._aziC = parameters.getValue(1036); // Parameter 8813 has been changed to 1036 for method 9819 in EPSG version 7.7. updated on 31/08/2017.\n this._latP = parameters.getValue(8818);\n this._kP = parameters.getValue(8819);\n this._FE = parameters.getValue(8806);\n this._FN = parameters.getValue(8807);\n }\n\n /**\n * Get the square of a number.\n */\n private static sqr(v: float64): float64 {\n return (v * v);\n }\n\n /**\n * OperationMethod method.\n * @see OperationMethod#initialize\n */\n public override initialize(operation: Operation): void {\n /* Prepare the parameters */\n const ellipsoid: Ellipsoid = operation.getSourceCRS().getEllipsoid();\n const a: float64 = ellipsoid.getA();\n const e: float64 = ellipsoid.getE();\n const e2: float64 = e * e;\n this._A = a * Math.sqrt(1.0 - e2) / (1.0 - KrovakObliqueConformalConic.sqr(e * Math.sin(this._latC)));\n this._B = Math.sqrt(1.0 + e2 * Math.pow(Math.cos(this._latC), 4) / (1.0 - e2));\n this._gO = Math.asin(Math.sin(this._latC) / this._B);\n this._tO = Math.tan(Math.PI / 4 + this._gO / 2) * Math.pow((1 + e * Math.sin(this._latC)) / (1 - e * Math.sin(this._latC)), e * this._B / 2) / Math.pow(Math.tan(Math.PI / 4 + this._latC / 2), this._B);\n this._n = Math.sin(this._latP);\n this._rO = this._kP * this._A / Math.tan(this._latP);\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#forward\n */\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the parameters */\n const lon: float64 = source.getX();\n const lat: float64 = source.getY();\n /* Calculate easting and northing */\n const e: float64 = sourceCRS.getEllipsoid().getE();\n const U: float64 = 2 * (Math.atan(this._tO * Math.pow(Math.tan(lat / 2 + Math.PI / 4), this._B) / Math.pow((1 + e * Math.sin(lat)) / (1 - e * Math.sin(lat)), e * this._B / 2)) - Math.PI / 4);\n const V: float64 = this._B * (this._lonO - lon);\n const S: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(U) + Math.sin(this._aziC) * Math.cos(U) * Math.cos(V));\n const D: float64 = Math.asin(Math.cos(U) * Math.sin(V) / Math.cos(S));\n const theta: float64 = this._n * D;\n const r: float64 = this._rO * Math.pow(Math.tan(Math.PI / 4 + this._latP / 2), this._n) / Math.pow(Math.tan(S / 2 + Math.PI / 4), this._n);\n const E: float64 = this._FE + r * Math.cos(theta);\n const N: float64 = this._FN + r * Math.sin(theta);\n /* Save the position */\n target.setX(E);\n target.setY(N);\n target.setZ(source.getZ()); // Keep the Z value\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#reverse\n */\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the easting and northing */\n const E: float64 = target.getX();\n const N: float64 = target.getY();\n /* Get the ellipsoid parameters */\n const e: float64 = sourceCRS.getEllipsoid().getE();\n /* Calculate longitude and latitude */\n const r: float64 = Math.sqrt(KrovakObliqueConformalConic.sqr(E - this._FE) + KrovakObliqueConformalConic.sqr(N - this._FN));\n const theta: float64 = Math.atan2((N - this._FN), (E - this._FE));\n const D: float64 = theta / Math.sin(this._latP);\n const S: float64 = 2 * (Math.atan(Math.pow(this._rO / r, 1 / this._n) * Math.tan(Math.PI / 4 + this._latP / 2)) - Math.PI / 4);\n const U: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(S) - Math.sin(this._aziC) * Math.cos(S) * Math.cos(D));\n const V: float64 = Math.asin(Math.cos(S) * Math.sin(D) / Math.cos(U));\n /* Iterate */\n let lat: float64 = U;\n for (let i: number = 1; i < 5; i++) {\n lat = 2 * (Math.atan(Math.pow(this._tO, -1 / this._B) * Math.pow(Math.tan(U / 2 + Math.PI / 4), 1 / this._B) * Math.pow((1 + e * Math.sin(lat)) / (1 - e * Math.sin(lat)), e / 2)) - Math.PI / 4);\n }\n const lon: float64 = this._lonO - V / this._B;\n /* Save the position */\n source.setX(lon);\n source.setY(lat);\n source.setZ(target.getZ()); // Keep the Z value\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"KrovakObliqueConformalConic.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/KrovakObliqueConformalConic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module OrbitGT\n */\n\n// package orbitgt.spatial.ecrs.projection;\n\ntype int8 = number;\ntype int16 = number;\ntype int32 = number;\ntype float32 = number;\ntype float64 = number;\n\nimport { Coordinate } from \"../../geom/Coordinate\";\nimport { CRS } from \"../CRS\";\nimport { Ellipsoid } from \"../Ellipsoid\";\nimport { Operation } from \"../Operation\";\nimport { OperationMethod } from \"../OperationMethod\";\nimport { ParameterValueList } from \"../ParameterValueList\";\n\n/**\n * Class KrovakObliqueConformalConic defines the Krovak Oblique Conformal Conic projection as used in the Czech Republic and Slovakia.\n *\n * The 'source' CRS is the geographic CRS.\n * The 'target' CRS is the projected CRS.\n *\n * Based on the following document:\n *\n * Coordinate Conversions and Transformations including Formulas\n * Guidance Note Number 7, part 2 (version 6.18.3)\n * Revised January 2009\n * Available at: http://www.epsg.org/\n *\n * Formulas: see 1.3.2 \"Krovak Oblique Conformal Conic\"\n *\n * NOTE: the X axis runs north to south and the Y axis runs east to west. This differs from most other projections.\n *\n * @version 1.0 October 2009\n */\n/** @internal */\nexport class KrovakObliqueConformalConic extends OperationMethod {\n /** The code of this method */\n public static readonly METHOD_CODE: int32 = 9819;\n\n /** Latitude of projection center */\n private _latC: float64;\n /** Longitude of origin */\n private _lonO: float64;\n /** Azimuth of initial line through the projection center */\n private _aziC: float64;\n /** Latitude of pseudo standard parallel */\n private _latP: float64;\n /** Scale factor on pseudo standard parallel */\n private _kP: float64;\n /** Easting at grid origin */\n private _FE: float64;\n /** Northing at grid origin */\n private _FN: float64;\n\n /** The constants */\n private _A: float64;\n private _B: float64;\n private _gO: float64;\n private _tO: float64;\n private _n: float64;\n private _rO: float64;\n\n /**\n * Create a new projection.\n * @param parameters the values of the parameters.\n */\n public constructor(parameters: ParameterValueList) {\n super(KrovakObliqueConformalConic.METHOD_CODE, \"Krovak Oblique Conic Conformal\", parameters);\n /* Store the parameters */\n this._latC = parameters.getValue(8811);\n this._lonO = parameters.getValue(8833);\n this._aziC = parameters.getValue(1036); // Parameter 8813 has been changed to 1036 for method 9819 in EPSG version 7.7. updated on 31/08/2017.\n this._latP = parameters.getValue(8818);\n this._kP = parameters.getValue(8819);\n this._FE = parameters.getValue(8806);\n this._FN = parameters.getValue(8807);\n }\n\n /**\n * Get the square of a number.\n */\n private static sqr(v: float64): float64 {\n return (v * v);\n }\n\n /**\n * OperationMethod method.\n * @see OperationMethod#initialize\n */\n public override initialize(operation: Operation): void {\n /* Prepare the parameters */\n const ellipsoid: Ellipsoid = operation.getSourceCRS().getEllipsoid();\n const a: float64 = ellipsoid.getA();\n const e: float64 = ellipsoid.getE();\n const e2: float64 = e * e;\n this._A = a * Math.sqrt(1.0 - e2) / (1.0 - KrovakObliqueConformalConic.sqr(e * Math.sin(this._latC)));\n this._B = Math.sqrt(1.0 + e2 * Math.pow(Math.cos(this._latC), 4) / (1.0 - e2));\n this._gO = Math.asin(Math.sin(this._latC) / this._B);\n this._tO = Math.tan(Math.PI / 4 + this._gO / 2) * Math.pow((1 + e * Math.sin(this._latC)) / (1 - e * Math.sin(this._latC)), e * this._B / 2) / Math.pow(Math.tan(Math.PI / 4 + this._latC / 2), this._B);\n this._n = Math.sin(this._latP);\n this._rO = this._kP * this._A / Math.tan(this._latP);\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#forward\n */\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the parameters */\n const lon: float64 = source.getX();\n const lat: float64 = source.getY();\n /* Calculate easting and northing */\n const e: float64 = sourceCRS.getEllipsoid().getE();\n const U: float64 = 2 * (Math.atan(this._tO * Math.pow(Math.tan(lat / 2 + Math.PI / 4), this._B) / Math.pow((1 + e * Math.sin(lat)) / (1 - e * Math.sin(lat)), e * this._B / 2)) - Math.PI / 4);\n const V: float64 = this._B * (this._lonO - lon);\n const S: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(U) + Math.sin(this._aziC) * Math.cos(U) * Math.cos(V));\n const D: float64 = Math.asin(Math.cos(U) * Math.sin(V) / Math.cos(S));\n const theta: float64 = this._n * D;\n const r: float64 = this._rO * Math.pow(Math.tan(Math.PI / 4 + this._latP / 2), this._n) / Math.pow(Math.tan(S / 2 + Math.PI / 4), this._n);\n const E: float64 = this._FE + r * Math.cos(theta);\n const N: float64 = this._FN + r * Math.sin(theta);\n /* Save the position */\n target.setX(E);\n target.setY(N);\n target.setZ(source.getZ()); // Keep the Z value\n }\n\n /**\n * OperationMethod interface method.\n * @see OperationMethod#reverse\n */\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\n /* Get the easting and northing */\n const E: float64 = target.getX();\n const N: float64 = target.getY();\n /* Get the ellipsoid parameters */\n const e: float64 = sourceCRS.getEllipsoid().getE();\n /* Calculate longitude and latitude */\n const r: float64 = Math.sqrt(KrovakObliqueConformalConic.sqr(E - this._FE) + KrovakObliqueConformalConic.sqr(N - this._FN));\n const theta: float64 = Math.atan2((N - this._FN), (E - this._FE));\n const D: float64 = theta / Math.sin(this._latP);\n const S: float64 = 2 * (Math.atan(Math.pow(this._rO / r, 1 / this._n) * Math.tan(Math.PI / 4 + this._latP / 2)) - Math.PI / 4);\n const U: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(S) - Math.sin(this._aziC) * Math.cos(S) * Math.cos(D));\n const V: float64 = Math.asin(Math.cos(S) * Math.sin(D) / Math.cos(U));\n /* Iterate */\n let lat: float64 = U;\n for (let i: number = 1; i < 5; i++) {\n lat = 2 * (Math.atan(Math.pow(this._tO, -1 / this._B) * Math.pow(Math.tan(U / 2 + Math.PI / 4), 1 / this._B) * Math.pow((1 + e * Math.sin(lat)) / (1 - e * Math.sin(lat)), e / 2)) - Math.PI / 4);\n }\n const lon: float64 = this._lonO - V / this._B;\n /* Save the position */\n source.setX(lon);\n source.setY(lat);\n source.setZ(target.getZ()); // Keep the Z value\n }\n}\n"]}
|
|
@@ -18,7 +18,7 @@ import { KrovakObliqueConformalConic } from "./KrovakObliqueConformalConic";
|
|
|
18
18
|
* @version 1.0 October 2009
|
|
19
19
|
*/
|
|
20
20
|
/** @internal */
|
|
21
|
-
class KrovakObliqueConformalConicEN extends OperationMethod {
|
|
21
|
+
export class KrovakObliqueConformalConicEN extends OperationMethod {
|
|
22
22
|
/**
|
|
23
23
|
* Create a new projection.
|
|
24
24
|
* @param parameters the values of the parameters.
|
|
@@ -67,5 +67,4 @@ class KrovakObliqueConformalConicEN extends OperationMethod {
|
|
|
67
67
|
}
|
|
68
68
|
/** The code of this method */
|
|
69
69
|
KrovakObliqueConformalConicEN.METHOD_CODE = 1041;
|
|
70
|
-
export { KrovakObliqueConformalConicEN };
|
|
71
70
|
//# sourceMappingURL=KrovakObliqueConformalConicEN.js.map
|