{"version":3,"file":"operation-DMN2GpUf.js","sources":["../../../app/assets/javascripts/app/geometry/coordinates/value_from_wgs84_to_gsj02_conversion/operation.ts"],"sourcesContent":["\nimport log from \"plugins/loglevel/index\"\n\n/*\n# This operation converts coordinates value (latitude and longitude) in\n# Standard WGS84 to BD09 (used by Baidu Maps)\n#\n# References:\n# - https://en.wikipedia.org/wiki/World_Geodetic_System\n# - https://en.wikipedia.org/wiki/Restrictions_on_geographic_data_in_China\n*/\n\n\nconst MATH_A = 6378245.0\nconst MATH_EE = 0.00669342162296594323\n\n\nclass Operation {\n private lat: number\n private lng: number\n\n constructor({latitude, longitude}: {latitude: number | string, longitude: number | string}){\n this.lat = parseFloat(latitude.toString())\n this.lng = parseFloat(longitude.toString())\n }\n public call(){\n this.wgs84_to_gsj02()\n\n return {\n latitude: this.lat,\n longitude: this.lng,\n }\n }\n\n // Private\n\n // as according to the above link, do not convert if coordinates are outside the range of China\n private is_in_china(){\n return (this.lng > 72.004) && (this.lng < 137.8347) && (this.lat > 0.8293) && (this.lat < 55.8271)\n }\n\n // First convert from WGS84 (World Geodetic System) to GSJ02 (Mars Geodetic System)\n private wgs84_to_gsj02(){\n\n let dLat = transform_latitude(this.lng - 105.0, this.lat - 35.0)\n let dLon = transform_longitude(this.lng - 105.0, this.lat - 35.0)\n const radLat = this.lat / 180.0 * Math.PI\n\n let magic = Math.sin(radLat)\n magic = 1 - MATH_EE * magic * magic\n const sqrtMagic = Math.sqrt(magic)\n\n dLat = (dLat * 180.0) / ((MATH_A * (1 - MATH_EE)) / (magic * sqrtMagic) * Math.PI)\n dLon = (dLon * 180.0) / (MATH_A / sqrtMagic * Math.cos(radLat) * Math.PI)\n\n this.lat = this.lat + dLat\n this.lng = this.lng + dLon\n }\n\n // Then convert from GSJ02 (Mars Geodetic System) to BD09 (Baidu Coordinate System)\n private gsj02_to_bd09(){\n const x = this.lng\n const y = this.lat\n const z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * Math.PI * 3000.0 / 180.0)\n const theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * Math.PI * 3000.0 / 180.0)\n this.lng = z * Math.cos(theta) + 0.0065\n this.lat = z * Math.sin(theta) + 0.006\n }\n}\n\nfunction transform_latitude(lon: number, lat: number){\n log.debug(\">>> transform_latitude >>>\")\n let ret = -100.0 + 2.0 * lon + 3.0 * lat + 0.2 * lat * lat + 0.1 * lon * lat + 0.2 * Math.sqrt(Math.abs(lon))\n ret = ret + (20.0 * Math.sin(6.0 * lon * Math.PI) + 20.0 * Math.sin(2.0 * lon * Math.PI)) * 2.0 / 3.0\n ret = ret + (20.0 * Math.sin(lat * Math.PI) + 40.0 * Math.sin(lat / 3.0 * Math.PI)) * 2.0 / 3.0\n ret = ret + (160.0 * Math.sin(lat / 12.0 * Math.PI) + 320 * Math.sin(lat * Math.PI / 30.0)) * 2.0 / 3.0\n return ret\n}\n\nfunction transform_longitude(lon: number, lat: number){\n let ret = 300.0 + lon + 2.0 * lat + 0.1 * lon * lon + 0.1 * lon * lat + 0.1 * Math.sqrt(Math.abs(lon))\n ret = ret + (20.0 * Math.sin(6.0 * lon * Math.PI) + 20.0 * Math.sin(2.0 * lon * Math.PI)) * 2.0 / 3.0\n ret = ret + (20.0 * Math.sin(lon * Math.PI) + 40.0 * Math.sin(lon / 3.0 * Math.PI)) * 2.0 / 3.0\n ret = ret + (150.0 * Math.sin(lon / 12.0 * Math.PI) + 300.0 * Math.sin(lon / 30.0 * Math.PI)) * 2.0 / 3.0\n return ret\n}\n\nexport default Operation\n"],"names":["MATH_A","MATH_EE","Operation","latitude","longitude","dLat","transform_latitude","dLon","transform_longitude","radLat","magic","sqrtMagic","x","y","z","theta","lon","lat","log","ret"],"mappings":"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"}