@itwin/core-orbitgt 4.6.0-dev.9 → 4.7.0-dev.3

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.
Files changed (230) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/pointcloud/format/opc/AttributeMask.js.map +1 -1
  3. package/lib/cjs/pointcloud/format/opc/BlockRecord.js +1 -1
  4. package/lib/cjs/pointcloud/format/opc/BlockRecord.js.map +1 -1
  5. package/lib/cjs/pointcloud/format/opc/ContainerFile.js +1 -1
  6. package/lib/cjs/pointcloud/format/opc/ContainerFile.js.map +1 -1
  7. package/lib/cjs/pointcloud/format/opc/DirectoryReader.js.map +1 -1
  8. package/lib/cjs/pointcloud/format/opc/DirectoryRecord.js.map +1 -1
  9. package/lib/cjs/pointcloud/format/opc/EmbeddedAttributeReader.js.map +1 -1
  10. package/lib/cjs/pointcloud/format/opc/FileReader.js +1 -1
  11. package/lib/cjs/pointcloud/format/opc/FileReader.js.map +1 -1
  12. package/lib/cjs/pointcloud/format/opc/GeometryReader.js +1 -1
  13. package/lib/cjs/pointcloud/format/opc/GeometryReader.js.map +1 -1
  14. package/lib/cjs/pointcloud/format/opc/GeometryRecord.js.map +1 -1
  15. package/lib/cjs/pointcloud/format/opc/OPCReader.js.map +1 -1
  16. package/lib/cjs/pointcloud/format/opc/PointReader.js.map +1 -1
  17. package/lib/cjs/pointcloud/format/opc/TileReadBuffer.js.map +1 -1
  18. package/lib/cjs/pointcloud/format/opc/TileRecord.js +1 -1
  19. package/lib/cjs/pointcloud/format/opc/TileRecord.js.map +1 -1
  20. package/lib/cjs/pointcloud/model/AttributeTypes.js +1 -1
  21. package/lib/cjs/pointcloud/model/AttributeTypes.js.map +1 -1
  22. package/lib/cjs/pointcloud/model/AttributeValue.js +1 -1
  23. package/lib/cjs/pointcloud/model/AttributeValue.js.map +1 -1
  24. package/lib/cjs/pointcloud/model/CloudPoint.js +1 -1
  25. package/lib/cjs/pointcloud/model/CloudPoint.js.map +1 -1
  26. package/lib/cjs/pointcloud/model/PointDataRaw.js +1 -1
  27. package/lib/cjs/pointcloud/model/PointDataRaw.js.map +1 -1
  28. package/lib/cjs/pointcloud/model/ReadRequest.js +1 -1
  29. package/lib/cjs/pointcloud/model/ReadRequest.js.map +1 -1
  30. package/lib/cjs/pointcloud/model/StandardAttributes.js +1 -1
  31. package/lib/cjs/pointcloud/model/StandardAttributes.js.map +1 -1
  32. package/lib/cjs/pointcloud/render/Block.js.map +1 -1
  33. package/lib/cjs/pointcloud/render/DataManager.js +1 -1
  34. package/lib/cjs/pointcloud/render/DataManager.js.map +1 -1
  35. package/lib/cjs/pointcloud/render/TileLoadSorter.js +1 -1
  36. package/lib/cjs/pointcloud/render/TileLoadSorter.js.map +1 -1
  37. package/lib/cjs/pointcloud/render/ViewTree.js +1 -1
  38. package/lib/cjs/pointcloud/render/ViewTree.js.map +1 -1
  39. package/lib/cjs/spatial/crs/CRSEngine.js.map +1 -1
  40. package/lib/cjs/spatial/crs/CRSManager.js +1 -1
  41. package/lib/cjs/spatial/crs/CRSManager.js.map +1 -1
  42. package/lib/cjs/spatial/ecrs/CRS.js +1 -1
  43. package/lib/cjs/spatial/ecrs/CRS.js.map +1 -1
  44. package/lib/cjs/spatial/ecrs/CoordinateSystem.js +1 -1
  45. package/lib/cjs/spatial/ecrs/CoordinateSystem.js.map +1 -1
  46. package/lib/cjs/spatial/ecrs/DataFileUnit.js +1 -1
  47. package/lib/cjs/spatial/ecrs/DataFileUnit.js.map +1 -1
  48. package/lib/cjs/spatial/ecrs/Datum.js +1 -1
  49. package/lib/cjs/spatial/ecrs/Datum.js.map +1 -1
  50. package/lib/cjs/spatial/ecrs/Ellipsoid.js.map +1 -1
  51. package/lib/cjs/spatial/ecrs/OnlineEngine.js.map +1 -1
  52. package/lib/cjs/spatial/ecrs/OnlineRegistry.js +1 -1
  53. package/lib/cjs/spatial/ecrs/OnlineRegistry.js.map +1 -1
  54. package/lib/cjs/spatial/ecrs/Operation.js +1 -1
  55. package/lib/cjs/spatial/ecrs/Operation.js.map +1 -1
  56. package/lib/cjs/spatial/ecrs/ParameterValueList.js.map +1 -1
  57. package/lib/cjs/spatial/ecrs/Registry.js +1 -1
  58. package/lib/cjs/spatial/ecrs/Registry.js.map +1 -1
  59. package/lib/cjs/spatial/ecrs/Transform.js +1 -1
  60. package/lib/cjs/spatial/ecrs/Transform.js.map +1 -1
  61. package/lib/cjs/spatial/ecrs/Unit.js +1 -1
  62. package/lib/cjs/spatial/ecrs/Unit.js.map +1 -1
  63. package/lib/cjs/spatial/ecrs/WellKnownText.js +1 -1
  64. package/lib/cjs/spatial/ecrs/WellKnownText.js.map +1 -1
  65. package/lib/cjs/spatial/ecrs/projection/HotineObliqueMercator.js +1 -1
  66. package/lib/cjs/spatial/ecrs/projection/HotineObliqueMercator.js.map +1 -1
  67. package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConic.js +1 -1
  68. package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConic.js.map +1 -1
  69. package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js +1 -1
  70. package/lib/cjs/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js.map +1 -1
  71. package/lib/cjs/spatial/ecrs/projection/LambertConical1SP.js +1 -1
  72. package/lib/cjs/spatial/ecrs/projection/LambertConical1SP.js.map +1 -1
  73. package/lib/cjs/spatial/ecrs/projection/LambertConical2SP.js +1 -1
  74. package/lib/cjs/spatial/ecrs/projection/LambertConical2SP.js.map +1 -1
  75. package/lib/cjs/spatial/ecrs/projection/Mercator1SP.js +1 -1
  76. package/lib/cjs/spatial/ecrs/projection/Mercator1SP.js.map +1 -1
  77. package/lib/cjs/spatial/ecrs/projection/ObliqueMercator.js +1 -1
  78. package/lib/cjs/spatial/ecrs/projection/ObliqueMercator.js.map +1 -1
  79. package/lib/cjs/spatial/ecrs/projection/ObliqueStereographic.js +1 -1
  80. package/lib/cjs/spatial/ecrs/projection/ObliqueStereographic.js.map +1 -1
  81. package/lib/cjs/spatial/ecrs/projection/TransverseMercator.js +1 -1
  82. package/lib/cjs/spatial/ecrs/projection/TransverseMercator.js.map +1 -1
  83. package/lib/cjs/spatial/ecrs/transformation/PositionVector.js +1 -1
  84. package/lib/cjs/spatial/ecrs/transformation/PositionVector.js.map +1 -1
  85. package/lib/cjs/spatial/geom/Bounds.js.map +1 -1
  86. package/lib/cjs/spatial/geom/Line.js.map +1 -1
  87. package/lib/cjs/spatial/geom/Transform.js.map +1 -1
  88. package/lib/cjs/system/buffer/Float32Buffer.js +1 -1
  89. package/lib/cjs/system/buffer/Float32Buffer.js.map +1 -1
  90. package/lib/cjs/system/buffer/LittleEndian.js.map +1 -1
  91. package/lib/cjs/system/buffer/Uint16Buffer.js +1 -1
  92. package/lib/cjs/system/buffer/Uint16Buffer.js.map +1 -1
  93. package/lib/cjs/system/buffer/Uint8Buffer.js +1 -1
  94. package/lib/cjs/system/buffer/Uint8Buffer.js.map +1 -1
  95. package/lib/cjs/system/collection/AList.js.map +1 -1
  96. package/lib/cjs/system/runtime/ALong.js +1 -1
  97. package/lib/cjs/system/runtime/ALong.js.map +1 -1
  98. package/lib/cjs/system/runtime/ASystem.js +1 -1
  99. package/lib/cjs/system/runtime/ASystem.js.map +1 -1
  100. package/lib/cjs/system/runtime/Downloader.js +1 -1
  101. package/lib/cjs/system/runtime/Downloader.js.map +1 -1
  102. package/lib/cjs/system/runtime/DownloaderNode.js.map +1 -1
  103. package/lib/cjs/system/runtime/DownloaderXhr.js.map +1 -1
  104. package/lib/cjs/system/runtime/Message.js +1 -1
  105. package/lib/cjs/system/runtime/Message.js.map +1 -1
  106. package/lib/cjs/system/runtime/Numbers.js +1 -1
  107. package/lib/cjs/system/runtime/Numbers.js.map +1 -1
  108. package/lib/cjs/system/runtime/Strings.js +1 -1
  109. package/lib/cjs/system/runtime/Strings.js.map +1 -1
  110. package/lib/cjs/system/storage/CacheList.js.map +1 -1
  111. package/lib/cjs/system/storage/ContentLoader.js +1 -1
  112. package/lib/cjs/system/storage/ContentLoader.js.map +1 -1
  113. package/lib/cjs/system/storage/NodeFS.js.map +1 -1
  114. package/lib/cjs/system/storage/PageCachedFile.js.map +1 -1
  115. package/lib/cjs/system/storage/UrlFS.js.map +1 -1
  116. package/lib/esm/pointcloud/format/opc/AttributeMask.js.map +1 -1
  117. package/lib/esm/pointcloud/format/opc/BlockRecord.js +1 -2
  118. package/lib/esm/pointcloud/format/opc/BlockRecord.js.map +1 -1
  119. package/lib/esm/pointcloud/format/opc/ContainerFile.js +1 -2
  120. package/lib/esm/pointcloud/format/opc/ContainerFile.js.map +1 -1
  121. package/lib/esm/pointcloud/format/opc/DirectoryReader.js.map +1 -1
  122. package/lib/esm/pointcloud/format/opc/DirectoryRecord.js.map +1 -1
  123. package/lib/esm/pointcloud/format/opc/EmbeddedAttributeReader.js.map +1 -1
  124. package/lib/esm/pointcloud/format/opc/FileReader.js +1 -2
  125. package/lib/esm/pointcloud/format/opc/FileReader.js.map +1 -1
  126. package/lib/esm/pointcloud/format/opc/GeometryReader.js +1 -2
  127. package/lib/esm/pointcloud/format/opc/GeometryReader.js.map +1 -1
  128. package/lib/esm/pointcloud/format/opc/GeometryRecord.js.map +1 -1
  129. package/lib/esm/pointcloud/format/opc/OPCReader.js.map +1 -1
  130. package/lib/esm/pointcloud/format/opc/PointReader.js.map +1 -1
  131. package/lib/esm/pointcloud/format/opc/TileReadBuffer.js.map +1 -1
  132. package/lib/esm/pointcloud/format/opc/TileRecord.js +1 -2
  133. package/lib/esm/pointcloud/format/opc/TileRecord.js.map +1 -1
  134. package/lib/esm/pointcloud/model/AttributeTypes.js +1 -2
  135. package/lib/esm/pointcloud/model/AttributeTypes.js.map +1 -1
  136. package/lib/esm/pointcloud/model/AttributeValue.js +1 -2
  137. package/lib/esm/pointcloud/model/AttributeValue.js.map +1 -1
  138. package/lib/esm/pointcloud/model/CloudPoint.js +1 -2
  139. package/lib/esm/pointcloud/model/CloudPoint.js.map +1 -1
  140. package/lib/esm/pointcloud/model/PointDataRaw.js +1 -2
  141. package/lib/esm/pointcloud/model/PointDataRaw.js.map +1 -1
  142. package/lib/esm/pointcloud/model/ReadRequest.js +1 -2
  143. package/lib/esm/pointcloud/model/ReadRequest.js.map +1 -1
  144. package/lib/esm/pointcloud/model/StandardAttributes.js +1 -2
  145. package/lib/esm/pointcloud/model/StandardAttributes.js.map +1 -1
  146. package/lib/esm/pointcloud/render/Block.js.map +1 -1
  147. package/lib/esm/pointcloud/render/DataManager.js +1 -2
  148. package/lib/esm/pointcloud/render/DataManager.js.map +1 -1
  149. package/lib/esm/pointcloud/render/TileLoadSorter.js +1 -2
  150. package/lib/esm/pointcloud/render/TileLoadSorter.js.map +1 -1
  151. package/lib/esm/pointcloud/render/ViewTree.js +1 -2
  152. package/lib/esm/pointcloud/render/ViewTree.js.map +1 -1
  153. package/lib/esm/spatial/crs/CRSEngine.js.map +1 -1
  154. package/lib/esm/spatial/crs/CRSManager.js +1 -2
  155. package/lib/esm/spatial/crs/CRSManager.js.map +1 -1
  156. package/lib/esm/spatial/ecrs/CRS.js +1 -2
  157. package/lib/esm/spatial/ecrs/CRS.js.map +1 -1
  158. package/lib/esm/spatial/ecrs/CoordinateSystem.js +1 -2
  159. package/lib/esm/spatial/ecrs/CoordinateSystem.js.map +1 -1
  160. package/lib/esm/spatial/ecrs/DataFileUnit.js +1 -2
  161. package/lib/esm/spatial/ecrs/DataFileUnit.js.map +1 -1
  162. package/lib/esm/spatial/ecrs/Datum.js +1 -2
  163. package/lib/esm/spatial/ecrs/Datum.js.map +1 -1
  164. package/lib/esm/spatial/ecrs/Ellipsoid.js.map +1 -1
  165. package/lib/esm/spatial/ecrs/OnlineEngine.js.map +1 -1
  166. package/lib/esm/spatial/ecrs/OnlineRegistry.js +1 -2
  167. package/lib/esm/spatial/ecrs/OnlineRegistry.js.map +1 -1
  168. package/lib/esm/spatial/ecrs/Operation.js +1 -2
  169. package/lib/esm/spatial/ecrs/Operation.js.map +1 -1
  170. package/lib/esm/spatial/ecrs/ParameterValueList.js.map +1 -1
  171. package/lib/esm/spatial/ecrs/Registry.js +1 -2
  172. package/lib/esm/spatial/ecrs/Registry.js.map +1 -1
  173. package/lib/esm/spatial/ecrs/Transform.js +1 -2
  174. package/lib/esm/spatial/ecrs/Transform.js.map +1 -1
  175. package/lib/esm/spatial/ecrs/Unit.js +1 -2
  176. package/lib/esm/spatial/ecrs/Unit.js.map +1 -1
  177. package/lib/esm/spatial/ecrs/WellKnownText.js +1 -2
  178. package/lib/esm/spatial/ecrs/WellKnownText.js.map +1 -1
  179. package/lib/esm/spatial/ecrs/projection/HotineObliqueMercator.js +1 -2
  180. package/lib/esm/spatial/ecrs/projection/HotineObliqueMercator.js.map +1 -1
  181. package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConic.js +1 -2
  182. package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConic.js.map +1 -1
  183. package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js +1 -2
  184. package/lib/esm/spatial/ecrs/projection/KrovakObliqueConformalConicEN.js.map +1 -1
  185. package/lib/esm/spatial/ecrs/projection/LambertConical1SP.js +1 -2
  186. package/lib/esm/spatial/ecrs/projection/LambertConical1SP.js.map +1 -1
  187. package/lib/esm/spatial/ecrs/projection/LambertConical2SP.js +1 -2
  188. package/lib/esm/spatial/ecrs/projection/LambertConical2SP.js.map +1 -1
  189. package/lib/esm/spatial/ecrs/projection/Mercator1SP.js +1 -2
  190. package/lib/esm/spatial/ecrs/projection/Mercator1SP.js.map +1 -1
  191. package/lib/esm/spatial/ecrs/projection/ObliqueMercator.js +1 -2
  192. package/lib/esm/spatial/ecrs/projection/ObliqueMercator.js.map +1 -1
  193. package/lib/esm/spatial/ecrs/projection/ObliqueStereographic.js +1 -2
  194. package/lib/esm/spatial/ecrs/projection/ObliqueStereographic.js.map +1 -1
  195. package/lib/esm/spatial/ecrs/projection/TransverseMercator.js +1 -2
  196. package/lib/esm/spatial/ecrs/projection/TransverseMercator.js.map +1 -1
  197. package/lib/esm/spatial/ecrs/transformation/PositionVector.js +1 -2
  198. package/lib/esm/spatial/ecrs/transformation/PositionVector.js.map +1 -1
  199. package/lib/esm/spatial/geom/Bounds.js.map +1 -1
  200. package/lib/esm/spatial/geom/Line.js.map +1 -1
  201. package/lib/esm/spatial/geom/Transform.js.map +1 -1
  202. package/lib/esm/system/buffer/Float32Buffer.js +1 -2
  203. package/lib/esm/system/buffer/Float32Buffer.js.map +1 -1
  204. package/lib/esm/system/buffer/LittleEndian.js.map +1 -1
  205. package/lib/esm/system/buffer/Uint16Buffer.js +1 -2
  206. package/lib/esm/system/buffer/Uint16Buffer.js.map +1 -1
  207. package/lib/esm/system/buffer/Uint8Buffer.js +1 -2
  208. package/lib/esm/system/buffer/Uint8Buffer.js.map +1 -1
  209. package/lib/esm/system/collection/AList.js.map +1 -1
  210. package/lib/esm/system/runtime/ALong.js +1 -2
  211. package/lib/esm/system/runtime/ALong.js.map +1 -1
  212. package/lib/esm/system/runtime/ASystem.js +1 -2
  213. package/lib/esm/system/runtime/ASystem.js.map +1 -1
  214. package/lib/esm/system/runtime/Downloader.js +1 -2
  215. package/lib/esm/system/runtime/Downloader.js.map +1 -1
  216. package/lib/esm/system/runtime/DownloaderNode.js.map +1 -1
  217. package/lib/esm/system/runtime/DownloaderXhr.js.map +1 -1
  218. package/lib/esm/system/runtime/Message.js +1 -2
  219. package/lib/esm/system/runtime/Message.js.map +1 -1
  220. package/lib/esm/system/runtime/Numbers.js +1 -2
  221. package/lib/esm/system/runtime/Numbers.js.map +1 -1
  222. package/lib/esm/system/runtime/Strings.js +1 -2
  223. package/lib/esm/system/runtime/Strings.js.map +1 -1
  224. package/lib/esm/system/storage/CacheList.js.map +1 -1
  225. package/lib/esm/system/storage/ContentLoader.js +1 -2
  226. package/lib/esm/system/storage/ContentLoader.js.map +1 -1
  227. package/lib/esm/system/storage/NodeFS.js.map +1 -1
  228. package/lib/esm/system/storage/PageCachedFile.js.map +1 -1
  229. package/lib/esm/system/storage/UrlFS.js.map +1 -1
  230. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"WellKnownText.js","sourceRoot":"","sources":["../../../../src/spatial/ecrs/WellKnownText.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n//package orbitgt.spatial.ecrs;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { AList } from \"../../system/collection/AList\";\r\nimport { ASystem } from \"../../system/runtime/ASystem\";\r\nimport { Message } from \"../../system/runtime/Message\";\r\nimport { Numbers } from \"../../system/runtime/Numbers\";\r\nimport { Strings } from \"../../system/runtime/Strings\";\r\nimport { CRS } from \"./CRS\";\r\nimport { Datum } from \"./Datum\";\r\nimport { Ellipsoid } from \"./Ellipsoid\";\r\nimport { Operation } from \"./Operation\";\r\nimport { OperationMethod } from \"./OperationMethod\";\r\nimport { ParameterValue } from \"./ParameterValue\";\r\nimport { ParameterValueList } from \"./ParameterValueList\";\r\nimport { PrimeMeridian } from \"./PrimeMeridian\";\r\nimport { HotineObliqueMercator } from \"./projection/HotineObliqueMercator\";\r\nimport { KrovakObliqueConformalConic } from \"./projection/KrovakObliqueConformalConic\";\r\nimport { KrovakObliqueConformalConicEN } from \"./projection/KrovakObliqueConformalConicEN\";\r\nimport { LambertConical1SP } from \"./projection/LambertConical1SP\";\r\nimport { LambertConical2SP } from \"./projection/LambertConical2SP\";\r\nimport { Mercator1SP } from \"./projection/Mercator1SP\";\r\nimport { ObliqueMercator } from \"./projection/ObliqueMercator\";\r\nimport { ObliqueStereographic } from \"./projection/ObliqueStereographic\";\r\nimport { TransverseMercator } from \"./projection/TransverseMercator\";\r\nimport { Registry } from \"./Registry\";\r\nimport { PositionVector } from \"./transformation/PositionVector\";\r\nimport { Unit } from \"./Unit\";\r\nimport { WellKnownTextNode } from \"./WellKnownTextNode\";\r\n\r\n/**\r\n * Class WellKnownText parses Well-known Text Representations of Spatial Reference Systems.\r\n *\r\n * @version 1.0 December 2010\r\n */\r\n/** @internal */\r\nexport class WellKnownText {\r\n /** The name of this module */\r\n private static readonly MODULE: string = \"WellKnownText\";\r\n\r\n /** The dialect type in case of generic WKT */\r\n public static readonly TYPE_GENERIC: string = \"generic\";\r\n\r\n /** The conversion ratio from \"arc-sec\" to \"radian\" */\r\n private static readonly _ARC_SEC_TO_RAD: float64 = (1.0 / 3600.0 * Math.PI / 180.0);\r\n\r\n /** The counter for creating unique codes */\r\n private static _CODES: int32 = 100000;\r\n\r\n /**\r\n * No instances.\r\n */\r\n private constructor() { }\r\n\r\n /**\r\n * Unquote a name.\r\n * @param name the name.\r\n * @return the unquoted name.\r\n */\r\n private static unquote(name: string): string {\r\n name = Strings.trim(name);\r\n ASystem.assert0(Strings.startsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not start with a quote\");\r\n ASystem.assert0(Strings.endsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not end with a quote\");\r\n return Strings.substring(name, 1, Strings.getLength(name) - 1);\r\n }\r\n\r\n /**\r\n * Get a number.\r\n * @param value the string value.\r\n * @return the number.\r\n */\r\n private static getInteger(value: string): int32 {\r\n return Numbers.getInteger(value, 0);\r\n }\r\n\r\n /**\r\n * Get a number.\r\n * @param value the string value.\r\n * @return the number.\r\n */\r\n private static getDouble(value: string): float64 {\r\n return Numbers.getDouble(value, 0.0);\r\n }\r\n\r\n /**\r\n * Get a number.\r\n * @param value the node value.\r\n * @return the number.\r\n */\r\n private static getNodeDouble(value: WellKnownTextNode): float64 {\r\n if (value == null) return 0.0;\r\n return Numbers.getDouble(value.getName(), 0.0);\r\n }\r\n\r\n /**\r\n * Get an EPSG code for an element.\r\n * @param authority the authority for the element.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the EPSG code (zero if not found).\r\n */\r\n private static getEPSGCode(authority: WellKnownTextNode, dialect: string): int32 {\r\n // example: AUTHORITY[\"EPSG\",\"2320\"]\r\n if (authority == null) return 0;\r\n let name: string = WellKnownText.unquote(authority.getArgument(0).getName());\r\n let code: string = WellKnownText.unquote(authority.getArgument(1).getName());\r\n if (Strings.equalsIgnoreCase(name, \"EPSG\") == false) return 0;\r\n let epsgCode: int32 = Numbers.getInteger(code, 0);\r\n return epsgCode; // Enabled on 06/06/2014\r\n }\r\n\r\n /**\r\n * Parse a linear unit.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the unit.\r\n */\r\n private static parseLinearUnit(node: WellKnownTextNode, dialect: string): Unit {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the unit */\r\n return new Unit(code, name, name/*abbreviation*/, \"length\", Unit.METER/*targetUnitCode*/, conversionFactor, 1.0);\r\n }\r\n\r\n /**\r\n * Parse an angular unit.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the unit.\r\n */\r\n private static parseAngularUnit(node: WellKnownTextNode, dialect: string): Unit {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the unit */\r\n return new Unit(code, name, name/*abbreviation*/, \"angle\", Unit.RADIAN/*targetUnitCode*/, conversionFactor, 1.0);\r\n }\r\n\r\n /**\r\n * Parse a spheroid.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the ellipsoid.\r\n */\r\n private static parseSpheroid(crsCode: int32, node: WellKnownTextNode, dialect: string): Ellipsoid {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let semiMajorAxis: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let invFlattening: float64 = WellKnownText.getDouble(node.getArgument(2).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the ellipsoid */\r\n return new Ellipsoid(code, name, Unit.METER, semiMajorAxis, invFlattening, 0.0);\r\n }\r\n\r\n /**\r\n * Parse a prime-meridian.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the prime-meridian.\r\n */\r\n private static parsePrimeMeridian(crsCode: int32, node: WellKnownTextNode, dialect: string): PrimeMeridian {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let longitude: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the prime-meridian */\r\n return new PrimeMeridian(code, name, longitude/*lonFromGreenwich*/, Unit.DEGREE/*?*/);\r\n }\r\n\r\n /**\r\n * Parse a to-wgs84 transform.\r\n * @param node the well-known-text node (method position vector).\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the transform.\r\n */\r\n public static parseToWGS84(node: WellKnownTextNode, dialect: string): OperationMethod {\r\n /* No transform ? */\r\n if (node == null) return null;\r\n /* Get the parameters */\r\n let dx: float64 = WellKnownText.getNodeDouble(node.getArgument(0)); // meter\r\n let dy: float64 = WellKnownText.getNodeDouble(node.getArgument(1));\r\n let dz: float64 = WellKnownText.getNodeDouble(node.getArgument(2));\r\n let rx: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(3)); // arc-second\r\n let ry: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(4));\r\n let rz: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(5));\r\n let ppm: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(6)); // parts-per-million\r\n /* Return the transform */\r\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);\r\n }\r\n\r\n /**\r\n * Parse a datum.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param primeMeridian the prime meridian.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the datum (with optional embedded datum transformation to WGS84).\r\n */\r\n private static parseDatum(crsCode: int32, node: WellKnownTextNode, primeMeridian: PrimeMeridian, dialect: string): Datum {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let spheroid: Ellipsoid = WellKnownText.parseSpheroid(crsCode, node.getArgumentByName(\"SPHEROID\"), dialect);\r\n let toWGS84: OperationMethod = WellKnownText.parseToWGS84(node.getArgumentByName(\"TOWGS84\"), dialect);\r\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.\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the datum */\r\n let datum: Datum = new Datum(code, name, Datum.TYPE_GEODETIC, spheroid, primeMeridian);\r\n datum.setToWGS84(toWGS84);\r\n return datum;\r\n }\r\n\r\n /**\r\n * Parse a projection method.\r\n * @param projection the well-known-text projection node.\r\n * @param parameters the well-known-text parameter nodes.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the projection method.\r\n */\r\n private static parseProjectionMethod(projection: WellKnownTextNode, parameters: AList<WellKnownTextNode>, dialect: string): OperationMethod {\r\n // See: http://www.remotesensing.org/geotiff/proj_list/\r\n // for method names and parameter names and units\r\n //\r\n /* Get the projection name */\r\n let projectionName: string = WellKnownText.unquote(projection.getArgument(0).getName());\r\n /* Get the standard units */\r\n let DEG: Unit = Registry.getUnit(Unit.DEGREE);\r\n let METER: Unit = Registry.getUnit(Unit.METER);\r\n let SCALE: Unit = Registry.getUnit(Unit.UNITY);\r\n /* Convert to standard parameters */\r\n let parameterList: ParameterValueList = new ParameterValueList();\r\n for (let i: number = 0; i < parameters.size(); i++) {\r\n /* Get the parameter name and value */\r\n let parameter: WellKnownTextNode = parameters.get(i);\r\n let parameterName: string = WellKnownText.unquote(parameter.getArgument(0).getName());\r\n let parameterValue: float64 = WellKnownText.getDouble(parameter.getArgument(1).getName());\r\n /* Hotine_Oblique_Mercator */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Krovak */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\") || Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8833, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(1036, parameterValue, DEG)); // changed from 8813 to 1036 on 31/08/2017\r\n if (Strings.equalsIgnoreCase(parameterName, \"pseudo_standard_parallel_1\")) parameterList.add(new ParameterValue(8818, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8819, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Lambert_Conformal_Conic_1SP */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Lambert_Conformal_Conic_2SP / Lambert_Conformal_Conic_2SP_Belgium / Lambert_Conformal_Conic */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP_Belgium\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8821, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8822, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_1\")) parameterList.add(new ParameterValue(8823, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_2\")) parameterList.add(new ParameterValue(8824, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8826, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8827, parameterValue, METER));\r\n // if (Strings.equalsIgnoreCase(parameterName,\"scale_factor\")) {if (parameterValue!=1.0) throw new IllegalArgumentException(MODULE+\" : Invalid parameter '\"+parameterName+\"' with value \"+parameterValue);}\r\n }\r\n /* Mercator_1SP */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Oblique_Mercator */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8816, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8817, parameterValue, METER));\r\n }\r\n /* Oblique_Stereographic /Transverse_Mercator */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\") || Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n }\r\n /* Create the right method */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) return new HotineObliqueMercator(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\")) return new KrovakObliqueConformalConic(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) return new KrovakObliqueConformalConicEN(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) return new LambertConical1SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\")) return new LambertConical2SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) return new LambertConical2SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) return new Mercator1SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) return new ObliqueMercator(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\")) return new ObliqueStereographic(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) return new TransverseMercator(parameterList);\r\n ASystem.assert0(false, \"Unknown projection type '\" + projectionName + \"'\");\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse a geocentric CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseGeocentric(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\r\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\r\n let toWGS84m: OperationMethod = datum.getToWGS84();\r\n let toWGS84s: AList<Operation> = new AList<Operation>();\r\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\r\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Return the CRS */\r\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\r\n return new CRS(code, name, 0/*area*/, CRS.GEOCENTRIC, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\r\n }\r\n\r\n /**\r\n * Parse a geographic CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseGeographic(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\r\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\r\n let toWGS84m: OperationMethod = datum.getToWGS84();\r\n let toWGS84s: AList<Operation> = new AList<Operation>();\r\n let angularUnit: Unit = WellKnownText.parseAngularUnit(node.getArgumentByName(\"UNIT\"), dialect);\r\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Return the CRS */\r\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\r\n return new CRS(code, name, 0/*area*/, CRS.GEOGRAPHIC_2D, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\r\n }\r\n\r\n /**\r\n * Parse a projected CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseProjection(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let baseCRS: CRS = WellKnownText.parseGeographic(-crsCode, node.getArgumentByName(\"GEOGCS\"), dialect);\r\n let projection: WellKnownTextNode = node.getArgumentByName(\"PROJECTION\");\r\n let parameters: AList<WellKnownTextNode> = node.getArgumentsByName(\"PARAMETER\");\r\n let projectionMethod: OperationMethod = WellKnownText.parseProjectionMethod(projection, parameters, dialect);\r\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\r\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Return the CRS */\r\n let projectionOperation: Operation = new Operation(0/*code*/, \"\"/*name*/, Operation.CONVERSION, code, baseCRS.getCode(), 0/*area*/, projectionMethod);\r\n return new CRS(code, name, 0/*area*/, CRS.PROJECTED, 0/*csCode*/, null/*datum*/, baseCRS, projectionOperation, null/*toWGS84*/);\r\n }\r\n\r\n /**\r\n * Parse a vertical CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseVertical(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Create the datum */\r\n let datum: Datum = new Datum(code, name, Datum.TYPE_VERTICAL, null/*spheroid*/, null/*primeMeridian*/);\r\n /* Return the CRS */\r\n return new CRS(code, name, 0/*area*/, CRS.VERTICAL, 6499/*csCode*/, datum, null/*baseCRS*/, null/*projectionOperation*/, null/*toWGS84*/);\r\n }\r\n\r\n /**\r\n * Parse a CRS well-known-text.\r\n * @param crsCode the code of the CRS.\r\n * @param text the well-known-text.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS (null if unable to parse).\r\n */\r\n public static parseSpatialReferenceSystem(crsCode: int32, text: string, dialect: string): CRS {\r\n let node: WellKnownTextNode = WellKnownTextNode.parse(text);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOCCS\")) return WellKnownText.parseGeocentric(crsCode, node, dialect);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOGCS\")) return WellKnownText.parseGeographic(crsCode, node, dialect);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"PROJCS\")) return WellKnownText.parseProjection(crsCode, node, dialect);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"VERTCS\")) return WellKnownText.parseVertical(crsCode, node, dialect);\r\n Message.printWarning(WellKnownText.MODULE, \"Invalid spatial reference system WKT '\" + text + \"'\");\r\n return null;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"WellKnownText.js","sourceRoot":"","sources":["../../../../src/spatial/ecrs/WellKnownText.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n//package orbitgt.spatial.ecrs;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { AList } from \"../../system/collection/AList\";\r\nimport { ASystem } from \"../../system/runtime/ASystem\";\r\nimport { Message } from \"../../system/runtime/Message\";\r\nimport { Numbers } from \"../../system/runtime/Numbers\";\r\nimport { Strings } from \"../../system/runtime/Strings\";\r\nimport { CRS } from \"./CRS\";\r\nimport { Datum } from \"./Datum\";\r\nimport { Ellipsoid } from \"./Ellipsoid\";\r\nimport { Operation } from \"./Operation\";\r\nimport { OperationMethod } from \"./OperationMethod\";\r\nimport { ParameterValue } from \"./ParameterValue\";\r\nimport { ParameterValueList } from \"./ParameterValueList\";\r\nimport { PrimeMeridian } from \"./PrimeMeridian\";\r\nimport { HotineObliqueMercator } from \"./projection/HotineObliqueMercator\";\r\nimport { KrovakObliqueConformalConic } from \"./projection/KrovakObliqueConformalConic\";\r\nimport { KrovakObliqueConformalConicEN } from \"./projection/KrovakObliqueConformalConicEN\";\r\nimport { LambertConical1SP } from \"./projection/LambertConical1SP\";\r\nimport { LambertConical2SP } from \"./projection/LambertConical2SP\";\r\nimport { Mercator1SP } from \"./projection/Mercator1SP\";\r\nimport { ObliqueMercator } from \"./projection/ObliqueMercator\";\r\nimport { ObliqueStereographic } from \"./projection/ObliqueStereographic\";\r\nimport { TransverseMercator } from \"./projection/TransverseMercator\";\r\nimport { Registry } from \"./Registry\";\r\nimport { PositionVector } from \"./transformation/PositionVector\";\r\nimport { Unit } from \"./Unit\";\r\nimport { WellKnownTextNode } from \"./WellKnownTextNode\";\r\n\r\n/**\r\n * Class WellKnownText parses Well-known Text Representations of Spatial Reference Systems.\r\n *\r\n * @version 1.0 December 2010\r\n */\r\n/** @internal */\r\nexport class WellKnownText {\r\n /** The name of this module */\r\n private static readonly MODULE: string = \"WellKnownText\";\r\n\r\n /** The dialect type in case of generic WKT */\r\n public static readonly TYPE_GENERIC: string = \"generic\";\r\n\r\n /** The conversion ratio from \"arc-sec\" to \"radian\" */\r\n private static readonly _ARC_SEC_TO_RAD: float64 = (1.0 / 3600.0 * Math.PI / 180.0);\r\n\r\n /** The counter for creating unique codes */\r\n private static _CODES: int32 = 100000;\r\n\r\n /**\r\n * No instances.\r\n */\r\n private constructor() { }\r\n\r\n /**\r\n * Unquote a name.\r\n * @param name the name.\r\n * @return the unquoted name.\r\n */\r\n private static unquote(name: string): string {\r\n name = Strings.trim(name);\r\n ASystem.assert0(Strings.startsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not start with a quote\");\r\n ASystem.assert0(Strings.endsWith(name, \"\\\"\"), \"Name '\" + name + \"' does not end with a quote\");\r\n return Strings.substring(name, 1, Strings.getLength(name) - 1);\r\n }\r\n\r\n /**\r\n * Get a number.\r\n * @param value the string value.\r\n * @return the number.\r\n */\r\n private static getInteger(value: string): int32 {\r\n return Numbers.getInteger(value, 0);\r\n }\r\n\r\n /**\r\n * Get a number.\r\n * @param value the string value.\r\n * @return the number.\r\n */\r\n private static getDouble(value: string): float64 {\r\n return Numbers.getDouble(value, 0.0);\r\n }\r\n\r\n /**\r\n * Get a number.\r\n * @param value the node value.\r\n * @return the number.\r\n */\r\n private static getNodeDouble(value: WellKnownTextNode): float64 {\r\n if (value == null) return 0.0;\r\n return Numbers.getDouble(value.getName(), 0.0);\r\n }\r\n\r\n /**\r\n * Get an EPSG code for an element.\r\n * @param authority the authority for the element.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the EPSG code (zero if not found).\r\n */\r\n private static getEPSGCode(authority: WellKnownTextNode, dialect: string): int32 {\r\n // example: AUTHORITY[\"EPSG\",\"2320\"]\r\n if (authority == null) return 0;\r\n let name: string = WellKnownText.unquote(authority.getArgument(0).getName());\r\n let code: string = WellKnownText.unquote(authority.getArgument(1).getName());\r\n if (Strings.equalsIgnoreCase(name, \"EPSG\") == false) return 0;\r\n let epsgCode: int32 = Numbers.getInteger(code, 0);\r\n return epsgCode; // Enabled on 06/06/2014\r\n }\r\n\r\n /**\r\n * Parse a linear unit.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the unit.\r\n */\r\n private static parseLinearUnit(node: WellKnownTextNode, dialect: string): Unit {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the unit */\r\n return new Unit(code, name, name/*abbreviation*/, \"length\", Unit.METER/*targetUnitCode*/, conversionFactor, 1.0);\r\n }\r\n\r\n /**\r\n * Parse an angular unit.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the unit.\r\n */\r\n private static parseAngularUnit(node: WellKnownTextNode, dialect: string): Unit {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let conversionFactor: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the unit */\r\n return new Unit(code, name, name/*abbreviation*/, \"angle\", Unit.RADIAN/*targetUnitCode*/, conversionFactor, 1.0);\r\n }\r\n\r\n /**\r\n * Parse a spheroid.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the ellipsoid.\r\n */\r\n private static parseSpheroid(crsCode: int32, node: WellKnownTextNode, dialect: string): Ellipsoid {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let semiMajorAxis: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let invFlattening: float64 = WellKnownText.getDouble(node.getArgument(2).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the ellipsoid */\r\n return new Ellipsoid(code, name, Unit.METER, semiMajorAxis, invFlattening, 0.0);\r\n }\r\n\r\n /**\r\n * Parse a prime-meridian.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the prime-meridian.\r\n */\r\n private static parsePrimeMeridian(crsCode: int32, node: WellKnownTextNode, dialect: string): PrimeMeridian {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let longitude: float64 = WellKnownText.getDouble(node.getArgument(1).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the prime-meridian */\r\n return new PrimeMeridian(code, name, longitude/*lonFromGreenwich*/, Unit.DEGREE/*?*/);\r\n }\r\n\r\n /**\r\n * Parse a to-wgs84 transform.\r\n * @param node the well-known-text node (method position vector).\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the transform.\r\n */\r\n public static parseToWGS84(node: WellKnownTextNode, dialect: string): OperationMethod {\r\n /* No transform ? */\r\n if (node == null) return null;\r\n /* Get the parameters */\r\n let dx: float64 = WellKnownText.getNodeDouble(node.getArgument(0)); // meter\r\n let dy: float64 = WellKnownText.getNodeDouble(node.getArgument(1));\r\n let dz: float64 = WellKnownText.getNodeDouble(node.getArgument(2));\r\n let rx: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(3)); // arc-second\r\n let ry: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(4));\r\n let rz: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(5));\r\n let ppm: float64 = WellKnownText.getNodeDouble(node.getOptionalArgument(6)); // parts-per-million\r\n /* Return the transform */\r\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);\r\n }\r\n\r\n /**\r\n * Parse a datum.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param primeMeridian the prime meridian.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the datum (with optional embedded datum transformation to WGS84).\r\n */\r\n private static parseDatum(crsCode: int32, node: WellKnownTextNode, primeMeridian: PrimeMeridian, dialect: string): Datum {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let spheroid: Ellipsoid = WellKnownText.parseSpheroid(crsCode, node.getArgumentByName(\"SPHEROID\"), dialect);\r\n let toWGS84: OperationMethod = WellKnownText.parseToWGS84(node.getArgumentByName(\"TOWGS84\"), dialect);\r\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.\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? WellKnownText._CODES++ : epsgCode;\r\n /* Return the datum */\r\n let datum: Datum = new Datum(code, name, Datum.TYPE_GEODETIC, spheroid, primeMeridian);\r\n datum.setToWGS84(toWGS84);\r\n return datum;\r\n }\r\n\r\n /**\r\n * Parse a projection method.\r\n * @param projection the well-known-text projection node.\r\n * @param parameters the well-known-text parameter nodes.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the projection method.\r\n */\r\n private static parseProjectionMethod(projection: WellKnownTextNode, parameters: AList<WellKnownTextNode>, dialect: string): OperationMethod {\r\n // See: http://www.remotesensing.org/geotiff/proj_list/\r\n // for method names and parameter names and units\r\n //\r\n /* Get the projection name */\r\n let projectionName: string = WellKnownText.unquote(projection.getArgument(0).getName());\r\n /* Get the standard units */\r\n let DEG: Unit = Registry.getUnit(Unit.DEGREE);\r\n let METER: Unit = Registry.getUnit(Unit.METER);\r\n let SCALE: Unit = Registry.getUnit(Unit.UNITY);\r\n /* Convert to standard parameters */\r\n let parameterList: ParameterValueList = new ParameterValueList();\r\n for (let i: number = 0; i < parameters.size(); i++) {\r\n /* Get the parameter name and value */\r\n let parameter: WellKnownTextNode = parameters.get(i);\r\n let parameterName: string = WellKnownText.unquote(parameter.getArgument(0).getName());\r\n let parameterValue: float64 = WellKnownText.getDouble(parameter.getArgument(1).getName());\r\n /* Hotine_Oblique_Mercator */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Krovak */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\") || Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8833, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(1036, parameterValue, DEG)); // changed from 8813 to 1036 on 31/08/2017\r\n if (Strings.equalsIgnoreCase(parameterName, \"pseudo_standard_parallel_1\")) parameterList.add(new ParameterValue(8818, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8819, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Lambert_Conformal_Conic_1SP */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Lambert_Conformal_Conic_2SP / Lambert_Conformal_Conic_2SP_Belgium / Lambert_Conformal_Conic */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP_Belgium\") || Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8821, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8822, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_1\")) parameterList.add(new ParameterValue(8823, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"standard_parallel_2\")) parameterList.add(new ParameterValue(8824, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8826, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8827, parameterValue, METER));\r\n // if (Strings.equalsIgnoreCase(parameterName,\"scale_factor\")) {if (parameterValue!=1.0) throw new IllegalArgumentException(MODULE+\" : Invalid parameter '\"+parameterName+\"' with value \"+parameterValue);}\r\n }\r\n /* Mercator_1SP */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n /* Oblique_Mercator */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_center\")) parameterList.add(new ParameterValue(8811, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"longitude_of_center\")) parameterList.add(new ParameterValue(8812, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"azimuth\")) parameterList.add(new ParameterValue(8813, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"rectified_grid_angle\")) parameterList.add(new ParameterValue(8814, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8815, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8816, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8817, parameterValue, METER));\r\n }\r\n /* Oblique_Stereographic /Transverse_Mercator */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\") || Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) {\r\n if (Strings.equalsIgnoreCase(parameterName, \"latitude_of_origin\")) parameterList.add(new ParameterValue(8801, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"central_meridian\")) parameterList.add(new ParameterValue(8802, parameterValue, DEG));\r\n if (Strings.equalsIgnoreCase(parameterName, \"scale_factor\")) parameterList.add(new ParameterValue(8805, parameterValue, SCALE));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_easting\")) parameterList.add(new ParameterValue(8806, parameterValue, METER));\r\n if (Strings.equalsIgnoreCase(parameterName, \"false_northing\")) parameterList.add(new ParameterValue(8807, parameterValue, METER));\r\n }\r\n }\r\n /* Create the right method */\r\n if (Strings.equalsIgnoreCase(projectionName, \"Hotine_Oblique_Mercator\")) return new HotineObliqueMercator(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Krovak\")) return new KrovakObliqueConformalConic(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"KrovakEN\")) return new KrovakObliqueConformalConicEN(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_1SP\")) return new LambertConical1SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic_2SP\")) return new LambertConical2SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Lambert_Conformal_Conic\")) return new LambertConical2SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Mercator_1SP\")) return new Mercator1SP(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Mercator\")) return new ObliqueMercator(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Oblique_Stereographic\")) return new ObliqueStereographic(parameterList);\r\n if (Strings.equalsIgnoreCase(projectionName, \"Transverse_Mercator\")) return new TransverseMercator(parameterList);\r\n ASystem.assert0(false, \"Unknown projection type '\" + projectionName + \"'\");\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse a geocentric CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseGeocentric(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\r\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\r\n let toWGS84m: OperationMethod = datum.getToWGS84();\r\n let toWGS84s: AList<Operation> = new AList<Operation>();\r\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\r\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Return the CRS */\r\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\r\n return new CRS(code, name, 0/*area*/, CRS.GEOCENTRIC, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\r\n }\r\n\r\n /**\r\n * Parse a geographic CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseGeographic(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let primeMeridian: PrimeMeridian = WellKnownText.parsePrimeMeridian(crsCode, node.getArgumentByName(\"PRIMEM\"), dialect);\r\n let datum: Datum = WellKnownText.parseDatum(crsCode, node.getArgumentByName(\"DATUM\"), primeMeridian, dialect);\r\n let toWGS84m: OperationMethod = datum.getToWGS84();\r\n let toWGS84s: AList<Operation> = new AList<Operation>();\r\n let angularUnit: Unit = WellKnownText.parseAngularUnit(node.getArgumentByName(\"UNIT\"), dialect);\r\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Return the CRS */\r\n if (toWGS84m != null) toWGS84s.add(new Operation(0/*code*/, \"\"/*name*/, Operation.TRANSFORMATION, code, CRS.WGS84_2D_CRS_CODE, 0/*area*/, toWGS84m));\r\n return new CRS(code, name, 0/*area*/, CRS.GEOGRAPHIC_2D, 0/*csCode*/, datum, null/*baseCRS*/, null/*projection*/, toWGS84s);\r\n }\r\n\r\n /**\r\n * Parse a projected CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseProjection(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let baseCRS: CRS = WellKnownText.parseGeographic(-crsCode, node.getArgumentByName(\"GEOGCS\"), dialect);\r\n let projection: WellKnownTextNode = node.getArgumentByName(\"PROJECTION\");\r\n let parameters: AList<WellKnownTextNode> = node.getArgumentsByName(\"PARAMETER\");\r\n let projectionMethod: OperationMethod = WellKnownText.parseProjectionMethod(projection, parameters, dialect);\r\n let linearUnit: Unit = WellKnownText.parseLinearUnit(node.getArgumentByName(\"UNIT\"), dialect);\r\n let axis: AList<WellKnownTextNode> = node.getArgumentsByName(\"AXIS\");\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Return the CRS */\r\n let projectionOperation: Operation = new Operation(0/*code*/, \"\"/*name*/, Operation.CONVERSION, code, baseCRS.getCode(), 0/*area*/, projectionMethod);\r\n return new CRS(code, name, 0/*area*/, CRS.PROJECTED, 0/*csCode*/, null/*datum*/, baseCRS, projectionOperation, null/*toWGS84*/);\r\n }\r\n\r\n /**\r\n * Parse a vertical CRS.\r\n * @param crsCode the code of the CRS.\r\n * @param node the well-known-text node.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS.\r\n */\r\n private static parseVertical(crsCode: int32, node: WellKnownTextNode, dialect: string): CRS {\r\n /* Get the parameters */\r\n let name: string = WellKnownText.unquote(node.getArgument(0).getName());\r\n let authority: WellKnownTextNode = node.getArgumentByName(\"AUTHORITY\");\r\n /* Do we have an EPGS code ? */\r\n let epsgCode: int32 = WellKnownText.getEPSGCode(authority, dialect);\r\n let code: int32 = (epsgCode == 0) ? crsCode : epsgCode;\r\n /* Create the datum */\r\n let datum: Datum = new Datum(code, name, Datum.TYPE_VERTICAL, null/*spheroid*/, null/*primeMeridian*/);\r\n /* Return the CRS */\r\n return new CRS(code, name, 0/*area*/, CRS.VERTICAL, 6499/*csCode*/, datum, null/*baseCRS*/, null/*projectionOperation*/, null/*toWGS84*/);\r\n }\r\n\r\n /**\r\n * Parse a CRS well-known-text.\r\n * @param crsCode the code of the CRS.\r\n * @param text the well-known-text.\r\n * @param dialect the dialect of WKT to parse.\r\n * @return the CRS (null if unable to parse).\r\n */\r\n public static parseSpatialReferenceSystem(crsCode: int32, text: string, dialect: string): CRS {\r\n let node: WellKnownTextNode = WellKnownTextNode.parse(text);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOCCS\")) return WellKnownText.parseGeocentric(crsCode, node, dialect);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"GEOGCS\")) return WellKnownText.parseGeographic(crsCode, node, dialect);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"PROJCS\")) return WellKnownText.parseProjection(crsCode, node, dialect);\r\n if (Strings.equalsIgnoreCase(node.getName(), \"VERTCS\")) return WellKnownText.parseVertical(crsCode, node, dialect);\r\n Message.printWarning(WellKnownText.MODULE, \"Invalid spatial reference system WKT '\" + text + \"'\");\r\n return null;\r\n }\r\n}\r\n"]}
@@ -157,7 +157,7 @@ class HotineObliqueMercator extends OperationMethod_1.OperationMethod {
157
157
  source.setZ(target.getZ()); // Keep the Z value
158
158
  }
159
159
  }
160
+ exports.HotineObliqueMercator = HotineObliqueMercator;
160
161
  /** The code of this method */
161
162
  HotineObliqueMercator.METHOD_CODE = 9812;
162
- exports.HotineObliqueMercator = HotineObliqueMercator;
163
163
  //# 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":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n// package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { Ellipsoid } from \"../Ellipsoid\";\r\nimport { Operation } from \"../Operation\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\n\r\n/**\r\n * Class HotineObliqueMercator defines a Hotine Oblique Mercator projection.\r\n *\r\n * The 'source' CRS is the geographic CRS.\r\n * The 'target' CRS is the projected CRS.\r\n *\r\n * Based on the following document:\r\n *\r\n * Coordinate Conversions and Transformations including Formulas\r\n * Guidance Note Number 7, part 2\r\n * Revised August 2006\r\n * Available at: http://www.epsg.org/\r\n *\r\n * Formulas: see 1.4.6: Oblique Mercator and Hotine Oblique Mercator\r\n *\r\n * @version 1.0 May 2008\r\n */\r\n/** @internal */\r\nexport class HotineObliqueMercator extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 9812;\r\n\r\n /** Latitude of the projection center */\r\n private _latC: float64;\r\n /** Longitude of the projection center */\r\n private _lonC: float64;\r\n /** Azimuth of the initial line passing through the projection center */\r\n private _aziC: float64;\r\n /** Angle from the recified grid to the skew (oblique) grid */\r\n private _gamC: float64;\r\n /** Scale factor on the initial line of projection */\r\n private _kC: float64;\r\n /** False easting at the natural origin */\r\n private _fe: float64;\r\n /** False northing at the natural origin */\r\n private _fn: float64;\r\n\r\n /** Forward calculation parameters */\r\n private _a: float64;\r\n private _e: float64;\r\n private _e2: float64;\r\n private _B: float64;\r\n private _A: float64;\r\n private _tO: float64;\r\n private _D: float64;\r\n private _F: float64;\r\n private _H: float64;\r\n private _G: float64;\r\n private _latO: float64;\r\n private _lonO: float64;\r\n private _vC: float64;\r\n private _uC: float64;\r\n /** Reverse calculation parameters */\r\n private _rev1: float64;\r\n private _rev2: float64;\r\n private _rev3: float64;\r\n private _rev4: float64;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(HotineObliqueMercator.METHOD_CODE, \"Hotine Oblique Mercator\", parameters);\r\n /* Store the parameters */\r\n this._latC = parameters.getValue(8811);\r\n this._lonC = parameters.getValue(8812);\r\n this._aziC = parameters.getValue(8813);\r\n this._gamC = parameters.getValue(8814);\r\n this._kC = parameters.getValue(8815);\r\n this._fe = parameters.getValue(8806);\r\n this._fn = parameters.getValue(8807);\r\n }\r\n\r\n /**\r\n * Get the sign of a number.\r\n */\r\n private static sign(v: float64): float64 {\r\n return (v < 0.0) ? (-1.0) : (1.0);\r\n }\r\n\r\n /**\r\n * Get the power of a number (must be able to handle negative 'n' values).\r\n */\r\n private static pow(n: float64, e: int32): float64 {\r\n let p: float64 = 1.0;\r\n for (let i: number = 0; i < e; i++) p *= n;\r\n return p;\r\n }\r\n\r\n /**\r\n * Initialize the projection.\r\n * @param ellipsoid the ellipsoid to use.\r\n * @return this projection (for convenience).\r\n */\r\n public initializeProjection(ellipsoid: Ellipsoid): HotineObliqueMercator {\r\n /* Prepare the forward parameters */\r\n this._a = ellipsoid.getA();\r\n this._e = ellipsoid.getE();\r\n this._e2 = this._e * this._e;\r\n this._B = Math.sqrt(1.0 + (this._e2 * HotineObliqueMercator.pow(Math.cos(this._latC), 4) / (1.0 - this._e2)));\r\n const esinLatC: float64 = this._e * Math.sin(this._latC);\r\n this._A = this._a * this._B * this._kC * Math.sqrt(1.0 - this._e2) / (1.0 - HotineObliqueMercator.pow(esinLatC, 2));\r\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);\r\n this._D = this._B * Math.sqrt(1.0 - this._e2) / (Math.cos(this._latC) * Math.sqrt(1.0 - HotineObliqueMercator.pow(esinLatC, 2)));\r\n const D2: float64 = (this._D < 1.0) ? (1.0) : (this._D * this._D);\r\n this._F = this._D + Math.sqrt(D2 - 1.0) * HotineObliqueMercator.sign(this._latC);\r\n this._H = this._F * Math.pow(this._tO, this._B);\r\n this._G = (this._F - 1.0 / this._F) / 2.0;\r\n this._latO = Math.asin(Math.sin(this._aziC) / this._D);\r\n this._lonO = this._lonC - Math.asin(this._G * Math.tan(this._latO)) / this._B;\r\n this._vC = 0.0;\r\n if (Math.abs(this._aziC - 0.5 * Math.PI) < 0.00001) this._uC = this._A * (this._lonC - this._lonO); // special case Hungary, Switzerland\r\n else this._uC = (this._A / this._B) * Math.atan(Math.sqrt(D2 - 1.0) / Math.cos(this._aziC)) * HotineObliqueMercator.sign(this._latC);\r\n /* Prepare the reverse parameters */\r\n const e4: float64 = this._e2 * this._e2;\r\n const e6: float64 = e4 * this._e2;\r\n const e8: float64 = e4 * e4;\r\n this._rev1 = (this._e2 / 2 + 5 * e4 / 24 + e6 / 12 + 13 * e8 / 360);\r\n this._rev2 = (7 * e4 / 48 + 29 * e6 / 240 + 811 * e8 / 11520);\r\n this._rev3 = (7 * e6 / 120 + 81 * e8 / 1120);\r\n this._rev4 = (4279 * e8 / 161280);\r\n /* Return the projection */\r\n return this;\r\n }\r\n\r\n /**\r\n * OperationMethod method.\r\n * @see OperationMethod#initialize\r\n */\r\n public override initialize(operation: Operation): void {\r\n this.initializeProjection(operation.getSourceCRS().getEllipsoid());\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n const lon: float64 = source.getX();\r\n const lat: float64 = source.getY();\r\n /* Make the calculation */\r\n const esinLat: float64 = this._e * Math.sin(lat);\r\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);\r\n const Q: float64 = this._H / Math.pow(t, this._B);\r\n const S: float64 = (Q - 1.0 / Q) / 2.0;\r\n const T: float64 = (Q + 1.0 / Q) / 2.0;\r\n const V: float64 = Math.sin(this._B * (lon - this._lonO));\r\n const U: float64 = (-V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\r\n const v: float64 = this._A * Math.log((1.0 - U) / (1.0 + U)) / (2.0 * this._B);\r\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)\r\n const sinGamC: float64 = Math.sin(this._gamC);\r\n const cosGamC: float64 = Math.cos(this._gamC);\r\n const E: float64 = v * cosGamC + u * sinGamC + this._fe;\r\n const N: float64 = u * cosGamC - v * sinGamC + this._fn;\r\n /* Save the position */\r\n target.setX(E);\r\n target.setY(N);\r\n target.setZ(source.getZ()); // Keep the Z value\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n const E: float64 = target.getX();\r\n const N: float64 = target.getY();\r\n /* Make the calculation */\r\n const sinGamC: float64 = Math.sin(this._gamC);\r\n const cosGamC: float64 = Math.cos(this._gamC);\r\n const v: float64 = (E - this._fe) * cosGamC - (N - this._fn) * sinGamC;\r\n const u: float64 = (N - this._fn) * cosGamC + (E - this._fe) * sinGamC;\r\n const Q: float64 = Math.exp(-this._B * v / this._A);\r\n const S: float64 = (Q - 1.0 / Q) / 2.0;\r\n const T: float64 = (Q + 1.0 / Q) / 2.0;\r\n const V: float64 = Math.sin(this._B * u / this._A);\r\n const U: float64 = (V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\r\n const t: float64 = Math.pow(this._H / Math.sqrt((1.0 + U) / (1.0 - U)), 1.0 / this._B);\r\n const chi: float64 = Math.PI / 2.0 - 2.0 * Math.atan(t);\r\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;\r\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)\r\n /* Save the position */\r\n source.setX(lon);\r\n source.setY(lat);\r\n source.setZ(target.getZ()); // Keep the Z value\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"HotineObliqueMercator.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/HotineObliqueMercator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n// package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { Ellipsoid } from \"../Ellipsoid\";\r\nimport { Operation } from \"../Operation\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\n\r\n/**\r\n * Class HotineObliqueMercator defines a Hotine Oblique Mercator projection.\r\n *\r\n * The 'source' CRS is the geographic CRS.\r\n * The 'target' CRS is the projected CRS.\r\n *\r\n * Based on the following document:\r\n *\r\n * Coordinate Conversions and Transformations including Formulas\r\n * Guidance Note Number 7, part 2\r\n * Revised August 2006\r\n * Available at: http://www.epsg.org/\r\n *\r\n * Formulas: see 1.4.6: Oblique Mercator and Hotine Oblique Mercator\r\n *\r\n * @version 1.0 May 2008\r\n */\r\n/** @internal */\r\nexport class HotineObliqueMercator extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 9812;\r\n\r\n /** Latitude of the projection center */\r\n private _latC: float64;\r\n /** Longitude of the projection center */\r\n private _lonC: float64;\r\n /** Azimuth of the initial line passing through the projection center */\r\n private _aziC: float64;\r\n /** Angle from the recified grid to the skew (oblique) grid */\r\n private _gamC: float64;\r\n /** Scale factor on the initial line of projection */\r\n private _kC: float64;\r\n /** False easting at the natural origin */\r\n private _fe: float64;\r\n /** False northing at the natural origin */\r\n private _fn: float64;\r\n\r\n /** Forward calculation parameters */\r\n private _a: float64;\r\n private _e: float64;\r\n private _e2: float64;\r\n private _B: float64;\r\n private _A: float64;\r\n private _tO: float64;\r\n private _D: float64;\r\n private _F: float64;\r\n private _H: float64;\r\n private _G: float64;\r\n private _latO: float64;\r\n private _lonO: float64;\r\n private _vC: float64;\r\n private _uC: float64;\r\n /** Reverse calculation parameters */\r\n private _rev1: float64;\r\n private _rev2: float64;\r\n private _rev3: float64;\r\n private _rev4: float64;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(HotineObliqueMercator.METHOD_CODE, \"Hotine Oblique Mercator\", parameters);\r\n /* Store the parameters */\r\n this._latC = parameters.getValue(8811);\r\n this._lonC = parameters.getValue(8812);\r\n this._aziC = parameters.getValue(8813);\r\n this._gamC = parameters.getValue(8814);\r\n this._kC = parameters.getValue(8815);\r\n this._fe = parameters.getValue(8806);\r\n this._fn = parameters.getValue(8807);\r\n }\r\n\r\n /**\r\n * Get the sign of a number.\r\n */\r\n private static sign(v: float64): float64 {\r\n return (v < 0.0) ? (-1.0) : (1.0);\r\n }\r\n\r\n /**\r\n * Get the power of a number (must be able to handle negative 'n' values).\r\n */\r\n private static pow(n: float64, e: int32): float64 {\r\n let p: float64 = 1.0;\r\n for (let i: number = 0; i < e; i++) p *= n;\r\n return p;\r\n }\r\n\r\n /**\r\n * Initialize the projection.\r\n * @param ellipsoid the ellipsoid to use.\r\n * @return this projection (for convenience).\r\n */\r\n public initializeProjection(ellipsoid: Ellipsoid): HotineObliqueMercator {\r\n /* Prepare the forward parameters */\r\n this._a = ellipsoid.getA();\r\n this._e = ellipsoid.getE();\r\n this._e2 = this._e * this._e;\r\n this._B = Math.sqrt(1.0 + (this._e2 * HotineObliqueMercator.pow(Math.cos(this._latC), 4) / (1.0 - this._e2)));\r\n const esinLatC: float64 = this._e * Math.sin(this._latC);\r\n this._A = this._a * this._B * this._kC * Math.sqrt(1.0 - this._e2) / (1.0 - HotineObliqueMercator.pow(esinLatC, 2));\r\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);\r\n this._D = this._B * Math.sqrt(1.0 - this._e2) / (Math.cos(this._latC) * Math.sqrt(1.0 - HotineObliqueMercator.pow(esinLatC, 2)));\r\n const D2: float64 = (this._D < 1.0) ? (1.0) : (this._D * this._D);\r\n this._F = this._D + Math.sqrt(D2 - 1.0) * HotineObliqueMercator.sign(this._latC);\r\n this._H = this._F * Math.pow(this._tO, this._B);\r\n this._G = (this._F - 1.0 / this._F) / 2.0;\r\n this._latO = Math.asin(Math.sin(this._aziC) / this._D);\r\n this._lonO = this._lonC - Math.asin(this._G * Math.tan(this._latO)) / this._B;\r\n this._vC = 0.0;\r\n if (Math.abs(this._aziC - 0.5 * Math.PI) < 0.00001) this._uC = this._A * (this._lonC - this._lonO); // special case Hungary, Switzerland\r\n else this._uC = (this._A / this._B) * Math.atan(Math.sqrt(D2 - 1.0) / Math.cos(this._aziC)) * HotineObliqueMercator.sign(this._latC);\r\n /* Prepare the reverse parameters */\r\n const e4: float64 = this._e2 * this._e2;\r\n const e6: float64 = e4 * this._e2;\r\n const e8: float64 = e4 * e4;\r\n this._rev1 = (this._e2 / 2 + 5 * e4 / 24 + e6 / 12 + 13 * e8 / 360);\r\n this._rev2 = (7 * e4 / 48 + 29 * e6 / 240 + 811 * e8 / 11520);\r\n this._rev3 = (7 * e6 / 120 + 81 * e8 / 1120);\r\n this._rev4 = (4279 * e8 / 161280);\r\n /* Return the projection */\r\n return this;\r\n }\r\n\r\n /**\r\n * OperationMethod method.\r\n * @see OperationMethod#initialize\r\n */\r\n public override initialize(operation: Operation): void {\r\n this.initializeProjection(operation.getSourceCRS().getEllipsoid());\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n const lon: float64 = source.getX();\r\n const lat: float64 = source.getY();\r\n /* Make the calculation */\r\n const esinLat: float64 = this._e * Math.sin(lat);\r\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);\r\n const Q: float64 = this._H / Math.pow(t, this._B);\r\n const S: float64 = (Q - 1.0 / Q) / 2.0;\r\n const T: float64 = (Q + 1.0 / Q) / 2.0;\r\n const V: float64 = Math.sin(this._B * (lon - this._lonO));\r\n const U: float64 = (-V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\r\n const v: float64 = this._A * Math.log((1.0 - U) / (1.0 + U)) / (2.0 * this._B);\r\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)\r\n const sinGamC: float64 = Math.sin(this._gamC);\r\n const cosGamC: float64 = Math.cos(this._gamC);\r\n const E: float64 = v * cosGamC + u * sinGamC + this._fe;\r\n const N: float64 = u * cosGamC - v * sinGamC + this._fn;\r\n /* Save the position */\r\n target.setX(E);\r\n target.setY(N);\r\n target.setZ(source.getZ()); // Keep the Z value\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n const E: float64 = target.getX();\r\n const N: float64 = target.getY();\r\n /* Make the calculation */\r\n const sinGamC: float64 = Math.sin(this._gamC);\r\n const cosGamC: float64 = Math.cos(this._gamC);\r\n const v: float64 = (E - this._fe) * cosGamC - (N - this._fn) * sinGamC;\r\n const u: float64 = (N - this._fn) * cosGamC + (E - this._fe) * sinGamC;\r\n const Q: float64 = Math.exp(-this._B * v / this._A);\r\n const S: float64 = (Q - 1.0 / Q) / 2.0;\r\n const T: float64 = (Q + 1.0 / Q) / 2.0;\r\n const V: float64 = Math.sin(this._B * u / this._A);\r\n const U: float64 = (V * Math.cos(this._latO) + S * Math.sin(this._latO)) / T;\r\n const t: float64 = Math.pow(this._H / Math.sqrt((1.0 + U) / (1.0 - U)), 1.0 / this._B);\r\n const chi: float64 = Math.PI / 2.0 - 2.0 * Math.atan(t);\r\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;\r\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)\r\n /* Save the position */\r\n source.setX(lon);\r\n source.setY(lat);\r\n source.setZ(target.getZ()); // Keep the Z value\r\n }\r\n}\r\n"]}
@@ -120,7 +120,7 @@ class KrovakObliqueConformalConic extends OperationMethod_1.OperationMethod {
120
120
  source.setZ(target.getZ()); // Keep the Z value
121
121
  }
122
122
  }
123
+ exports.KrovakObliqueConformalConic = KrovakObliqueConformalConic;
123
124
  /** The code of this method */
124
125
  KrovakObliqueConformalConic.METHOD_CODE = 9819;
125
- exports.KrovakObliqueConformalConic = KrovakObliqueConformalConic;
126
126
  //# 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":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n// package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { Ellipsoid } from \"../Ellipsoid\";\r\nimport { Operation } from \"../Operation\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\n\r\n/**\r\n * Class KrovakObliqueConformalConic defines the Krovak Oblique Conformal Conic projection as used in the Czech Republic and Slovakia.\r\n *\r\n * The 'source' CRS is the geographic CRS.\r\n * The 'target' CRS is the projected CRS.\r\n *\r\n * Based on the following document:\r\n *\r\n * Coordinate Conversions and Transformations including Formulas\r\n * Guidance Note Number 7, part 2 (version 6.18.3)\r\n * Revised January 2009\r\n * Available at: http://www.epsg.org/\r\n *\r\n * Formulas: see 1.3.2 \"Krovak Oblique Conformal Conic\"\r\n *\r\n * NOTE: the X axis runs north to south and the Y axis runs east to west. This differs from most other projections.\r\n *\r\n * @version 1.0 October 2009\r\n */\r\n/** @internal */\r\nexport class KrovakObliqueConformalConic extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 9819;\r\n\r\n /** Latitude of projection center */\r\n private _latC: float64;\r\n /** Longitude of origin */\r\n private _lonO: float64;\r\n /** Azimuth of initial line through the projection center */\r\n private _aziC: float64;\r\n /** Latitude of pseudo standard parallel */\r\n private _latP: float64;\r\n /** Scale factor on pseudo standard parallel */\r\n private _kP: float64;\r\n /** Easting at grid origin */\r\n private _FE: float64;\r\n /** Northing at grid origin */\r\n private _FN: float64;\r\n\r\n /** The constants */\r\n private _A: float64;\r\n private _B: float64;\r\n private _gO: float64;\r\n private _tO: float64;\r\n private _n: float64;\r\n private _rO: float64;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(KrovakObliqueConformalConic.METHOD_CODE, \"Krovak Oblique Conic Conformal\", parameters);\r\n /* Store the parameters */\r\n this._latC = parameters.getValue(8811);\r\n this._lonO = parameters.getValue(8833);\r\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.\r\n this._latP = parameters.getValue(8818);\r\n this._kP = parameters.getValue(8819);\r\n this._FE = parameters.getValue(8806);\r\n this._FN = parameters.getValue(8807);\r\n }\r\n\r\n /**\r\n * Get the square of a number.\r\n */\r\n private static sqr(v: float64): float64 {\r\n return (v * v);\r\n }\r\n\r\n /**\r\n * OperationMethod method.\r\n * @see OperationMethod#initialize\r\n */\r\n public override initialize(operation: Operation): void {\r\n /* Prepare the parameters */\r\n const ellipsoid: Ellipsoid = operation.getSourceCRS().getEllipsoid();\r\n const a: float64 = ellipsoid.getA();\r\n const e: float64 = ellipsoid.getE();\r\n const e2: float64 = e * e;\r\n this._A = a * Math.sqrt(1.0 - e2) / (1.0 - KrovakObliqueConformalConic.sqr(e * Math.sin(this._latC)));\r\n this._B = Math.sqrt(1.0 + e2 * Math.pow(Math.cos(this._latC), 4) / (1.0 - e2));\r\n this._gO = Math.asin(Math.sin(this._latC) / this._B);\r\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);\r\n this._n = Math.sin(this._latP);\r\n this._rO = this._kP * this._A / Math.tan(this._latP);\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n const lon: float64 = source.getX();\r\n const lat: float64 = source.getY();\r\n /* Calculate easting and northing */\r\n const e: float64 = sourceCRS.getEllipsoid().getE();\r\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);\r\n const V: float64 = this._B * (this._lonO - lon);\r\n const S: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(U) + Math.sin(this._aziC) * Math.cos(U) * Math.cos(V));\r\n const D: float64 = Math.asin(Math.cos(U) * Math.sin(V) / Math.cos(S));\r\n const theta: float64 = this._n * D;\r\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);\r\n const E: float64 = this._FE + r * Math.cos(theta);\r\n const N: float64 = this._FN + r * Math.sin(theta);\r\n /* Save the position */\r\n target.setX(E);\r\n target.setY(N);\r\n target.setZ(source.getZ()); // Keep the Z value\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the easting and northing */\r\n const E: float64 = target.getX();\r\n const N: float64 = target.getY();\r\n /* Get the ellipsoid parameters */\r\n const e: float64 = sourceCRS.getEllipsoid().getE();\r\n /* Calculate longitude and latitude */\r\n const r: float64 = Math.sqrt(KrovakObliqueConformalConic.sqr(E - this._FE) + KrovakObliqueConformalConic.sqr(N - this._FN));\r\n const theta: float64 = Math.atan2((N - this._FN), (E - this._FE));\r\n const D: float64 = theta / Math.sin(this._latP);\r\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);\r\n const U: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(S) - Math.sin(this._aziC) * Math.cos(S) * Math.cos(D));\r\n const V: float64 = Math.asin(Math.cos(S) * Math.sin(D) / Math.cos(U));\r\n /* Iterate */\r\n let lat: float64 = U;\r\n for (let i: number = 1; i < 5; i++) {\r\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);\r\n }\r\n const lon: float64 = this._lonO - V / this._B;\r\n /* Save the position */\r\n source.setX(lon);\r\n source.setY(lat);\r\n source.setZ(target.getZ()); // Keep the Z value\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"KrovakObliqueConformalConic.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/KrovakObliqueConformalConic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n// package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { Ellipsoid } from \"../Ellipsoid\";\r\nimport { Operation } from \"../Operation\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\n\r\n/**\r\n * Class KrovakObliqueConformalConic defines the Krovak Oblique Conformal Conic projection as used in the Czech Republic and Slovakia.\r\n *\r\n * The 'source' CRS is the geographic CRS.\r\n * The 'target' CRS is the projected CRS.\r\n *\r\n * Based on the following document:\r\n *\r\n * Coordinate Conversions and Transformations including Formulas\r\n * Guidance Note Number 7, part 2 (version 6.18.3)\r\n * Revised January 2009\r\n * Available at: http://www.epsg.org/\r\n *\r\n * Formulas: see 1.3.2 \"Krovak Oblique Conformal Conic\"\r\n *\r\n * NOTE: the X axis runs north to south and the Y axis runs east to west. This differs from most other projections.\r\n *\r\n * @version 1.0 October 2009\r\n */\r\n/** @internal */\r\nexport class KrovakObliqueConformalConic extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 9819;\r\n\r\n /** Latitude of projection center */\r\n private _latC: float64;\r\n /** Longitude of origin */\r\n private _lonO: float64;\r\n /** Azimuth of initial line through the projection center */\r\n private _aziC: float64;\r\n /** Latitude of pseudo standard parallel */\r\n private _latP: float64;\r\n /** Scale factor on pseudo standard parallel */\r\n private _kP: float64;\r\n /** Easting at grid origin */\r\n private _FE: float64;\r\n /** Northing at grid origin */\r\n private _FN: float64;\r\n\r\n /** The constants */\r\n private _A: float64;\r\n private _B: float64;\r\n private _gO: float64;\r\n private _tO: float64;\r\n private _n: float64;\r\n private _rO: float64;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(KrovakObliqueConformalConic.METHOD_CODE, \"Krovak Oblique Conic Conformal\", parameters);\r\n /* Store the parameters */\r\n this._latC = parameters.getValue(8811);\r\n this._lonO = parameters.getValue(8833);\r\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.\r\n this._latP = parameters.getValue(8818);\r\n this._kP = parameters.getValue(8819);\r\n this._FE = parameters.getValue(8806);\r\n this._FN = parameters.getValue(8807);\r\n }\r\n\r\n /**\r\n * Get the square of a number.\r\n */\r\n private static sqr(v: float64): float64 {\r\n return (v * v);\r\n }\r\n\r\n /**\r\n * OperationMethod method.\r\n * @see OperationMethod#initialize\r\n */\r\n public override initialize(operation: Operation): void {\r\n /* Prepare the parameters */\r\n const ellipsoid: Ellipsoid = operation.getSourceCRS().getEllipsoid();\r\n const a: float64 = ellipsoid.getA();\r\n const e: float64 = ellipsoid.getE();\r\n const e2: float64 = e * e;\r\n this._A = a * Math.sqrt(1.0 - e2) / (1.0 - KrovakObliqueConformalConic.sqr(e * Math.sin(this._latC)));\r\n this._B = Math.sqrt(1.0 + e2 * Math.pow(Math.cos(this._latC), 4) / (1.0 - e2));\r\n this._gO = Math.asin(Math.sin(this._latC) / this._B);\r\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);\r\n this._n = Math.sin(this._latP);\r\n this._rO = this._kP * this._A / Math.tan(this._latP);\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n const lon: float64 = source.getX();\r\n const lat: float64 = source.getY();\r\n /* Calculate easting and northing */\r\n const e: float64 = sourceCRS.getEllipsoid().getE();\r\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);\r\n const V: float64 = this._B * (this._lonO - lon);\r\n const S: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(U) + Math.sin(this._aziC) * Math.cos(U) * Math.cos(V));\r\n const D: float64 = Math.asin(Math.cos(U) * Math.sin(V) / Math.cos(S));\r\n const theta: float64 = this._n * D;\r\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);\r\n const E: float64 = this._FE + r * Math.cos(theta);\r\n const N: float64 = this._FN + r * Math.sin(theta);\r\n /* Save the position */\r\n target.setX(E);\r\n target.setY(N);\r\n target.setZ(source.getZ()); // Keep the Z value\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the easting and northing */\r\n const E: float64 = target.getX();\r\n const N: float64 = target.getY();\r\n /* Get the ellipsoid parameters */\r\n const e: float64 = sourceCRS.getEllipsoid().getE();\r\n /* Calculate longitude and latitude */\r\n const r: float64 = Math.sqrt(KrovakObliqueConformalConic.sqr(E - this._FE) + KrovakObliqueConformalConic.sqr(N - this._FN));\r\n const theta: float64 = Math.atan2((N - this._FN), (E - this._FE));\r\n const D: float64 = theta / Math.sin(this._latP);\r\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);\r\n const U: float64 = Math.asin(Math.cos(this._aziC) * Math.sin(S) - Math.sin(this._aziC) * Math.cos(S) * Math.cos(D));\r\n const V: float64 = Math.asin(Math.cos(S) * Math.sin(D) / Math.cos(U));\r\n /* Iterate */\r\n let lat: float64 = U;\r\n for (let i: number = 1; i < 5; i++) {\r\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);\r\n }\r\n const lon: float64 = this._lonO - V / this._B;\r\n /* Save the position */\r\n source.setX(lon);\r\n source.setY(lat);\r\n source.setZ(target.getZ()); // Keep the Z value\r\n }\r\n}\r\n"]}
@@ -68,7 +68,7 @@ class KrovakObliqueConformalConicEN extends OperationMethod_1.OperationMethod {
68
68
  this.projection.reverse(sourceCRS, source, targetCRS, source /* target*/);
69
69
  }
70
70
  }
71
+ exports.KrovakObliqueConformalConicEN = KrovakObliqueConformalConicEN;
71
72
  /** The code of this method */
72
73
  KrovakObliqueConformalConicEN.METHOD_CODE = 1041;
73
- exports.KrovakObliqueConformalConicEN = KrovakObliqueConformalConicEN;
74
74
  //# sourceMappingURL=KrovakObliqueConformalConicEN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KrovakObliqueConformalConicEN.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/KrovakObliqueConformalConicEN.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAaH,wDAAqD;AAErD,+EAA4E;AAE5E;;;;;;;;;GASG;AACH,gBAAgB;AAChB,MAAa,6BAA8B,SAAQ,iCAAe;IAO9D;;;SAGK;IACL,YAAmB,UAA8B;QAC7C,KAAK,CAAC,6BAA6B,CAAC,WAAW,EAAE,2CAA2C,EAAE,UAAU,CAAC,CAAC;QAC1G,2BAA2B;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,yDAA2B,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED;;;SAGK;IACW,UAAU,CAAC,SAAoB;QAC3C,4BAA4B;QAC5B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;SAGK;IACE,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9D,+BAA+B;QAC/B,MAAM,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;;SAGK;IACE,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,8BAA8B;QAC9B,MAAM,CAAC,GAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,CAAC,GAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,kDAAkD;QAClD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAA,WAAW,CAAC,CAAC;IAC7E,CAAC;;AArDD,8BAA8B;AACP,yCAAW,GAAU,IAAI,CAAC;AAFxC,sEAA6B","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n// package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { Operation } from \"../Operation\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\nimport { KrovakObliqueConformalConic } from \"./KrovakObliqueConformalConic\";\r\n\r\n/**\r\n * Class KrovakObliqueConformalConicEN defines the \"East-North\" variant of the Krovak Oblique Conformal Conic projection.\r\n *\r\n * In the standard projection X runs from north to south and Y runs from east to west.\r\n * This seems awkward to most users. They prefer X from west to east and Y from south to north.\r\n * Therefore an alternative is provided in which both axes are inversed and swapped.\r\n * This leads to a more traditional map.\r\n *\r\n * @version 1.0 October 2009\r\n */\r\n/** @internal */\r\nexport class KrovakObliqueConformalConicEN extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 1041;\r\n\r\n /** The original projection */\r\n private projection: KrovakObliqueConformalConic;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(KrovakObliqueConformalConicEN.METHOD_CODE, \"Krovak Oblique Conic Conformal East-North\", parameters);\r\n /* Create the projection */\r\n this.projection = new KrovakObliqueConformalConic(parameters);\r\n }\r\n\r\n /**\r\n * OperationMethod method.\r\n * @see OperationMethod#initialize\r\n */\r\n public override initialize(operation: Operation): void {\r\n /* Prepare the projection */\r\n this.projection.initialize(operation);\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Do the forward projection */\r\n this.projection.forward(sourceCRS, source, targetCRS, target);\r\n /* Get the original position */\r\n const E: float64 = target.getX();\r\n const N: float64 = target.getY();\r\n /* Swap */\r\n target.setX(-N);\r\n target.setY(-E);\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the swapped position */\r\n const N: float64 = -target.getX();\r\n const E: float64 = -target.getY();\r\n /* Swap (leave the target coordinate untouched) */\r\n source.setX(E);\r\n source.setY(N);\r\n /* Do the reverse projection */\r\n this.projection.reverse(sourceCRS, source, targetCRS, source/* target*/);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"KrovakObliqueConformalConicEN.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/KrovakObliqueConformalConicEN.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAaH,wDAAqD;AAErD,+EAA4E;AAE5E;;;;;;;;;GASG;AACH,gBAAgB;AAChB,MAAa,6BAA8B,SAAQ,iCAAe;IAO9D;;;SAGK;IACL,YAAmB,UAA8B;QAC7C,KAAK,CAAC,6BAA6B,CAAC,WAAW,EAAE,2CAA2C,EAAE,UAAU,CAAC,CAAC;QAC1G,2BAA2B;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,yDAA2B,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED;;;SAGK;IACW,UAAU,CAAC,SAAoB;QAC3C,4BAA4B;QAC5B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;SAGK;IACE,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9D,+BAA+B;QAC/B,MAAM,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;;SAGK;IACE,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,8BAA8B;QAC9B,MAAM,CAAC,GAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,CAAC,GAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,kDAAkD;QAClD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAA,WAAW,CAAC,CAAC;IAC7E,CAAC;;AAtDL,sEAuDC;AAtDG,8BAA8B;AACP,yCAAW,GAAU,IAAI,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n// package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { Operation } from \"../Operation\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\nimport { KrovakObliqueConformalConic } from \"./KrovakObliqueConformalConic\";\r\n\r\n/**\r\n * Class KrovakObliqueConformalConicEN defines the \"East-North\" variant of the Krovak Oblique Conformal Conic projection.\r\n *\r\n * In the standard projection X runs from north to south and Y runs from east to west.\r\n * This seems awkward to most users. They prefer X from west to east and Y from south to north.\r\n * Therefore an alternative is provided in which both axes are inversed and swapped.\r\n * This leads to a more traditional map.\r\n *\r\n * @version 1.0 October 2009\r\n */\r\n/** @internal */\r\nexport class KrovakObliqueConformalConicEN extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 1041;\r\n\r\n /** The original projection */\r\n private projection: KrovakObliqueConformalConic;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(KrovakObliqueConformalConicEN.METHOD_CODE, \"Krovak Oblique Conic Conformal East-North\", parameters);\r\n /* Create the projection */\r\n this.projection = new KrovakObliqueConformalConic(parameters);\r\n }\r\n\r\n /**\r\n * OperationMethod method.\r\n * @see OperationMethod#initialize\r\n */\r\n public override initialize(operation: Operation): void {\r\n /* Prepare the projection */\r\n this.projection.initialize(operation);\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Do the forward projection */\r\n this.projection.forward(sourceCRS, source, targetCRS, target);\r\n /* Get the original position */\r\n const E: float64 = target.getX();\r\n const N: float64 = target.getY();\r\n /* Swap */\r\n target.setX(-N);\r\n target.setY(-E);\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the swapped position */\r\n const N: float64 = -target.getX();\r\n const E: float64 = -target.getY();\r\n /* Swap (leave the target coordinate untouched) */\r\n source.setX(E);\r\n source.setY(N);\r\n /* Do the reverse projection */\r\n this.projection.reverse(sourceCRS, source, targetCRS, source/* target*/);\r\n }\r\n}\r\n"]}
@@ -124,7 +124,7 @@ class LambertConical1SP extends OperationMethod_1.OperationMethod {
124
124
  source.setZ(target.getZ()); // Keep the Z value
125
125
  }
126
126
  }
127
+ exports.LambertConical1SP = LambertConical1SP;
127
128
  /** The code of this method */
128
129
  LambertConical1SP.METHOD_CODE = 9801;
129
- exports.LambertConical1SP = LambertConical1SP;
130
130
  //# sourceMappingURL=LambertConical1SP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LambertConical1SP.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/LambertConical1SP.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n//package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\n\r\n/**\r\n * Class LambertConical1SP defines a Lambert Conical Conformal map projection with 1 standard parallel.\r\n *\r\n * The 'source' CRS is the geographic CRS.\r\n * The 'target' CRS is the projected CRS.\r\n *\r\n * Based on the following document:\r\n *\r\n * Coordinate Conversions and Transformations including Formulas\r\n * Guidance Note Number 7, part 2\r\n * Revised August 2006\r\n * Available at: http://www.epsg.org/\r\n *\r\n * Formulas: see 1.4.1.1 -> 1.4.1.4\r\n *\r\n * @version 1.0 January 2007\r\n */\r\n/** @internal */\r\nexport class LambertConical1SP extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 9801;\r\n\r\n /** Latitude of natural origin */\r\n private _latN: float64;\r\n /** Longitude of natural origin (the central meridian) */\r\n private _lonN: float64;\r\n /** Scale factor at natural origin */\r\n private _k0: float64;\r\n /** False easting */\r\n private _fE: float64;\r\n /** False northing */\r\n private _fN: float64;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(LambertConical1SP.METHOD_CODE, \"Lambert Conic Conformal (1SP)\", parameters);\r\n /* Store the parameters */\r\n this._latN = parameters.getValue(8801);\r\n this._lonN = parameters.getValue(8802);\r\n this._k0 = parameters.getValue(8805);\r\n this._fE = parameters.getValue(8806);\r\n this._fN = parameters.getValue(8807);\r\n }\r\n\r\n /**\r\n * Get the sign of a number.\r\n */\r\n private static sign(v: float64): float64 {\r\n return (v < 0.0) ? (-1.0) : (1.0);\r\n }\r\n\r\n /**\r\n * Calculate M.\r\n */\r\n private static calcM(e: float64, lat: float64): float64 {\r\n return Math.cos(lat) / Math.pow(1.0 - Math.pow(e * Math.sin(lat), 2.0), 0.5);\r\n }\r\n\r\n /**\r\n * Calculate T.\r\n */\r\n private static calcT(e: float64, lat: float64): float64 {\r\n return Math.tan(Math.PI * 0.25 - lat * 0.5) / Math.pow((1.0 - e * Math.sin(lat)) / (1.0 + e * Math.sin(lat)), e * 0.5);\r\n }\r\n\r\n /**\r\n * Calculate R.\r\n */\r\n private static calcR(a: float64, F: float64, t: float64, n: float64, k0: float64): float64 {\r\n if (Math.abs(t) < 1.0e-6) return 0.0;\r\n return a * F * Math.pow(t, n) * k0;\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n let lon: float64 = source.getX();\r\n let lat: float64 = source.getY();\r\n /* Get the ellipsoid parameters */\r\n let e: float64 = sourceCRS.getEllipsoid().getE();\r\n let a: float64 = sourceCRS.getEllipsoid().getA();\r\n /* Make the calculation */\r\n let m0: float64 = LambertConical1SP.calcM(e, this._latN);\r\n let t0: float64 = LambertConical1SP.calcT(e, this._latN);\r\n let n: float64 = Math.sin(this._latN);\r\n let F: float64 = m0 / (n * Math.pow(t0, n));\r\n let r0: float64 = LambertConical1SP.calcR(a, F, t0, n, this._k0);\r\n let t: float64 = LambertConical1SP.calcT(e, lat);\r\n let r: float64 = LambertConical1SP.calcR(a, F, t, n, this._k0);\r\n let theta: float64 = n * (lon - this._lonN);\r\n let E: float64 = this._fE + r * Math.sin(theta);\r\n let N: float64 = this._fN + r0 - r * Math.cos(theta);\r\n /* Save the position */\r\n target.setX(E);\r\n target.setY(N);\r\n target.setZ(source.getZ()); // Keep the Z value\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n let E: float64 = target.getX();\r\n let N: float64 = target.getY();\r\n /* Get the ellipsoid parameters */\r\n let e: float64 = sourceCRS.getEllipsoid().getE();\r\n let a: float64 = sourceCRS.getEllipsoid().getA();\r\n /* Make the calculation */\r\n let m0: float64 = LambertConical1SP.calcM(e, this._latN);\r\n let t0: float64 = LambertConical1SP.calcT(e, this._latN);\r\n let n: float64 = Math.sin(this._latN);\r\n let F: float64 = m0 / (n * Math.pow(t0, n));\r\n let r0: float64 = LambertConical1SP.calcR(a, F, t0, n, this._k0);\r\n let r_: float64 = LambertConical1SP.sign(n) * Math.pow(Math.pow(E - this._fE, 2.0) + Math.pow(r0 - (N - this._fN), 2.0), 0.5);\r\n let t_: float64 = Math.pow(r_ / (a * this._k0 * F), 1.0 / n);\r\n let theta_: float64 = Math.atan((E - this._fE) / (r0 - (N - this._fN)));\r\n let lat: float64 = Math.PI * 0.5 - 2.0 * Math.atan(t_);\r\n for (let i: number = 0; i < 7; i++) lat = Math.PI * 0.5 - 2.0 * Math.atan(t_ * Math.pow((1.0 - e * Math.sin(lat)) / (1.0 + e * Math.sin(lat)), e * 0.5)); // recursive formula\r\n let lon: float64 = (theta_) / n + this._lonN;\r\n /* Save the position */\r\n source.setX(lon);\r\n source.setY(lat);\r\n source.setZ(target.getZ()); // Keep the Z value\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"LambertConical1SP.js","sourceRoot":"","sources":["../../../../../src/spatial/ecrs/projection/LambertConical1SP.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAYH,wDAAqD;AAGrD;;;;;;;;;;;;;;;;GAgBG;AACH,gBAAgB;AAChB,MAAa,iBAAkB,SAAQ,iCAAe;IAelD;;;OAGG;IACH,YAAmB,UAA8B;QAC7C,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,+BAA+B,EAAE,UAAU,CAAC,CAAC;QAClF,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,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;;OAEG;IACK,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;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,CAAU,EAAE,GAAY;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,CAAU,EAAE,GAAY;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IAC3H,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,CAAU,EAAE,CAAU,EAAE,CAAU,EAAE,CAAU,EAAE,EAAW;QAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,wBAAwB;QACxB,IAAI,GAAG,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,GAAG,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,kCAAkC;QAClC,IAAI,CAAC,GAAY,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,GAAY,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;QACjD,0BAA0B;QAC1B,IAAI,EAAE,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,EAAE,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAY,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,EAAE,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,KAAK,GAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAY,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,GAAY,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrD,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;;;OAGG;IACI,OAAO,CAAC,SAAc,EAAE,MAAkB,EAAE,SAAc,EAAE,MAAkB;QACjF,wBAAwB;QACxB,IAAI,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,kCAAkC;QAClC,IAAI,CAAC,GAAY,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,GAAY,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;QACjD,0BAA0B;QAC1B,IAAI,EAAE,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,EAAE,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,GAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAY,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,EAAE,GAAY,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,EAAE,GAAY,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9H,IAAI,EAAE,GAAY,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAI,MAAM,GAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,GAAG,GAAY,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAC9K,IAAI,GAAG,GAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,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;;AAjHL,8CAkHC;AAjHG,8BAA8B;AACP,6BAAW,GAAU,IAAI,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module OrbitGT\r\n */\r\n\r\n//package orbitgt.spatial.ecrs.projection;\r\n\r\ntype int8 = number;\r\ntype int16 = number;\r\ntype int32 = number;\r\ntype float32 = number;\r\ntype float64 = number;\r\n\r\nimport { Coordinate } from \"../../geom/Coordinate\";\r\nimport { CRS } from \"../CRS\";\r\nimport { OperationMethod } from \"../OperationMethod\";\r\nimport { ParameterValueList } from \"../ParameterValueList\";\r\n\r\n/**\r\n * Class LambertConical1SP defines a Lambert Conical Conformal map projection with 1 standard parallel.\r\n *\r\n * The 'source' CRS is the geographic CRS.\r\n * The 'target' CRS is the projected CRS.\r\n *\r\n * Based on the following document:\r\n *\r\n * Coordinate Conversions and Transformations including Formulas\r\n * Guidance Note Number 7, part 2\r\n * Revised August 2006\r\n * Available at: http://www.epsg.org/\r\n *\r\n * Formulas: see 1.4.1.1 -> 1.4.1.4\r\n *\r\n * @version 1.0 January 2007\r\n */\r\n/** @internal */\r\nexport class LambertConical1SP extends OperationMethod {\r\n /** The code of this method */\r\n public static readonly METHOD_CODE: int32 = 9801;\r\n\r\n /** Latitude of natural origin */\r\n private _latN: float64;\r\n /** Longitude of natural origin (the central meridian) */\r\n private _lonN: float64;\r\n /** Scale factor at natural origin */\r\n private _k0: float64;\r\n /** False easting */\r\n private _fE: float64;\r\n /** False northing */\r\n private _fN: float64;\r\n\r\n /**\r\n * Create a new projection.\r\n * @param parameters the values of the parameters.\r\n */\r\n public constructor(parameters: ParameterValueList) {\r\n super(LambertConical1SP.METHOD_CODE, \"Lambert Conic Conformal (1SP)\", parameters);\r\n /* Store the parameters */\r\n this._latN = parameters.getValue(8801);\r\n this._lonN = parameters.getValue(8802);\r\n this._k0 = parameters.getValue(8805);\r\n this._fE = parameters.getValue(8806);\r\n this._fN = parameters.getValue(8807);\r\n }\r\n\r\n /**\r\n * Get the sign of a number.\r\n */\r\n private static sign(v: float64): float64 {\r\n return (v < 0.0) ? (-1.0) : (1.0);\r\n }\r\n\r\n /**\r\n * Calculate M.\r\n */\r\n private static calcM(e: float64, lat: float64): float64 {\r\n return Math.cos(lat) / Math.pow(1.0 - Math.pow(e * Math.sin(lat), 2.0), 0.5);\r\n }\r\n\r\n /**\r\n * Calculate T.\r\n */\r\n private static calcT(e: float64, lat: float64): float64 {\r\n return Math.tan(Math.PI * 0.25 - lat * 0.5) / Math.pow((1.0 - e * Math.sin(lat)) / (1.0 + e * Math.sin(lat)), e * 0.5);\r\n }\r\n\r\n /**\r\n * Calculate R.\r\n */\r\n private static calcR(a: float64, F: float64, t: float64, n: float64, k0: float64): float64 {\r\n if (Math.abs(t) < 1.0e-6) return 0.0;\r\n return a * F * Math.pow(t, n) * k0;\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#forward\r\n */\r\n public forward(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n let lon: float64 = source.getX();\r\n let lat: float64 = source.getY();\r\n /* Get the ellipsoid parameters */\r\n let e: float64 = sourceCRS.getEllipsoid().getE();\r\n let a: float64 = sourceCRS.getEllipsoid().getA();\r\n /* Make the calculation */\r\n let m0: float64 = LambertConical1SP.calcM(e, this._latN);\r\n let t0: float64 = LambertConical1SP.calcT(e, this._latN);\r\n let n: float64 = Math.sin(this._latN);\r\n let F: float64 = m0 / (n * Math.pow(t0, n));\r\n let r0: float64 = LambertConical1SP.calcR(a, F, t0, n, this._k0);\r\n let t: float64 = LambertConical1SP.calcT(e, lat);\r\n let r: float64 = LambertConical1SP.calcR(a, F, t, n, this._k0);\r\n let theta: float64 = n * (lon - this._lonN);\r\n let E: float64 = this._fE + r * Math.sin(theta);\r\n let N: float64 = this._fN + r0 - r * Math.cos(theta);\r\n /* Save the position */\r\n target.setX(E);\r\n target.setY(N);\r\n target.setZ(source.getZ()); // Keep the Z value\r\n }\r\n\r\n /**\r\n * OperationMethod interface method.\r\n * @see OperationMethod#reverse\r\n */\r\n public reverse(sourceCRS: CRS, source: Coordinate, targetCRS: CRS, target: Coordinate): void {\r\n /* Get the parameters */\r\n let E: float64 = target.getX();\r\n let N: float64 = target.getY();\r\n /* Get the ellipsoid parameters */\r\n let e: float64 = sourceCRS.getEllipsoid().getE();\r\n let a: float64 = sourceCRS.getEllipsoid().getA();\r\n /* Make the calculation */\r\n let m0: float64 = LambertConical1SP.calcM(e, this._latN);\r\n let t0: float64 = LambertConical1SP.calcT(e, this._latN);\r\n let n: float64 = Math.sin(this._latN);\r\n let F: float64 = m0 / (n * Math.pow(t0, n));\r\n let r0: float64 = LambertConical1SP.calcR(a, F, t0, n, this._k0);\r\n let r_: float64 = LambertConical1SP.sign(n) * Math.pow(Math.pow(E - this._fE, 2.0) + Math.pow(r0 - (N - this._fN), 2.0), 0.5);\r\n let t_: float64 = Math.pow(r_ / (a * this._k0 * F), 1.0 / n);\r\n let theta_: float64 = Math.atan((E - this._fE) / (r0 - (N - this._fN)));\r\n let lat: float64 = Math.PI * 0.5 - 2.0 * Math.atan(t_);\r\n for (let i: number = 0; i < 7; i++) lat = Math.PI * 0.5 - 2.0 * Math.atan(t_ * Math.pow((1.0 - e * Math.sin(lat)) / (1.0 + e * Math.sin(lat)), e * 0.5)); // recursive formula\r\n let lon: float64 = (theta_) / n + this._lonN;\r\n /* Save the position */\r\n source.setX(lon);\r\n source.setY(lat);\r\n source.setZ(target.getZ()); // Keep the Z value\r\n }\r\n}\r\n"]}
@@ -170,11 +170,11 @@ class LambertConical2SP extends OperationMethod_1.OperationMethod {
170
170
  source.setZ(target.getZ()); // Keep the Z value
171
171
  }
172
172
  }
173
+ exports.LambertConical2SP = LambertConical2SP;
173
174
  /** The code of this method */
174
175
  LambertConical2SP.METHOD_CODE = 9802;
175
176
  /** The value of PI */
176
177
  LambertConical2SP.PI = Math.PI;
177
178
  /** The half value of PI */
178
179
  LambertConical2SP.hPI = 0.5 * Math.PI;
179
- exports.LambertConical2SP = LambertConical2SP;
180
180
  //# sourceMappingURL=LambertConical2SP.js.map