UNPKG

16.3 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/geo.ts"],"names":["originShift","Math","PI","extent","data","dataExtent","Infinity","forEach","item","coordinates","caculExtent","coords","Array","isArray","coord","tranfrormCoord","cb","transform","map","lngLatToMeters","lnglat","validate","accuracy","enable","decimal","validateLngLat","lng","lat","x","y","log","tan","Number","toFixed","length","metersToLngLat","meters","atan","exp","undefined","longitude","Error","latitude","aProjectFlat","maxs","max","min","scale","d","a","b","c","floor","unProjectFlat","px","pow","E","lnglatDistance","coordinates1","coordinates2","units","dLat","dLon","lat1","lat2","sin","cos","atan2","sqrt","project","earthRadius","padBounds","bufferRatio","heightBuffer","abs","widthBuffer","boundsContains","b1","b2","bBoxToBounds"],"mappings":"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","sourcesContent":["import {\n BBox,\n Coord,\n degreesToRadians,\n isObject,\n radiansToLength,\n Units,\n} from '@turf/helpers';\n\nexport type IBounds = [[number, number], [number, number]];\ninterface ILngLat {\n lng: number;\n lat: number;\n}\ninterface IPoint {\n x: number;\n y: number;\n}\nconst originShift = (2 * Math.PI * 6378137) / 2.0;\ntype Point = number[];\n/**\n * 计算地理数据范围\n * @param {dataArray} data 地理坐标数据\n * @return {Array} dataExtent\n */\nexport function extent(data: any[]): BBox {\n const dataExtent: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n data.forEach((item) => {\n const { coordinates } = item;\n caculExtent(dataExtent, coordinates);\n });\n return dataExtent;\n}\nfunction caculExtent(dataExtent: BBox, coords: any[]) {\n if (Array.isArray(coords[0])) {\n coords.forEach((coord) => {\n caculExtent(dataExtent, coord);\n });\n } else {\n if (dataExtent[0] > coords[0]) {\n dataExtent[0] = coords[0];\n }\n if (dataExtent[1] > coords[1]) {\n dataExtent[1] = coords[1];\n }\n if (dataExtent[2] < coords[0]) {\n dataExtent[2] = coords[0];\n }\n if (dataExtent[3] < coords[1]) {\n dataExtent[3] = coords[1];\n }\n }\n return dataExtent;\n}\n\nexport function tranfrormCoord(data: any[], cb: (item: any[]) => any) {\n return transform(data, cb);\n}\nfunction transform(item: any[], cb: (item: any[]) => any): any {\n if (Array.isArray(item[0])) {\n return item.map((coord) => {\n return transform(coord, cb);\n });\n }\n return cb(item);\n}\nexport function lngLatToMeters(lnglat: Point): Point;\nexport function lngLatToMeters(\n lnglat: Point,\n validate: boolean = true,\n accuracy = { enable: true, decimal: 1 },\n) {\n lnglat = validateLngLat(lnglat, validate);\n const lng = lnglat[0];\n const lat = lnglat[1];\n let x = (lng * originShift) / 180.0;\n let y =\n Math.log(Math.tan(((90 + lat) * Math.PI) / 360.0)) / (Math.PI / 180.0);\n y = (y * originShift) / 180.0;\n if (accuracy.enable) {\n x = Number(x.toFixed(accuracy.decimal));\n y = Number(y.toFixed(accuracy.decimal));\n }\n return lnglat.length === 3 ? [x, y, lnglat[2]] : [x, y];\n}\n\nexport function metersToLngLat(meters: Point, decimal = 6) {\n const x = meters[0];\n const y = meters[1];\n let lng = (x / originShift) * 180.0;\n let lat = (y / originShift) * 180.0;\n lat =\n (180 / Math.PI) *\n (2 * Math.atan(Math.exp((lat * Math.PI) / 180.0)) - Math.PI / 2.0);\n if (decimal !== undefined && decimal !== null) {\n lng = Number(lng.toFixed(decimal));\n lat = Number(lat.toFixed(decimal));\n }\n return meters.length === 3 ? [lng, lat, meters[2]] : [lng, lat];\n}\nexport function longitude(lng: number) {\n if (lng === undefined || lng === null) {\n throw new Error('lng is required');\n }\n\n // lngitudes cannot extends beyond +/-90 degrees\n if (lng > 180 || lng < -180) {\n lng = lng % 360;\n if (lng > 180) {\n lng = -360 + lng;\n }\n if (lng < -180) {\n lng = 360 + lng;\n }\n if (lng === 0) {\n lng = 0;\n }\n }\n return lng;\n}\nexport function latitude(lat: number) {\n if (lat === undefined || lat === null) {\n throw new Error('lat is required');\n }\n\n if (lat > 90 || lat < -90) {\n lat = lat % 180;\n if (lat > 90) {\n lat = -180 + lat;\n }\n if (lat < -90) {\n lat = 180 + lat;\n }\n if (lat === 0) {\n lat = 0;\n }\n }\n return lat;\n}\nexport function validateLngLat(lnglat: Point, validate: boolean): Point {\n if (validate === false) {\n return lnglat;\n }\n\n const lng = longitude(lnglat[0]);\n let lat = latitude(lnglat[1]);\n\n // Global Mercator does not support latitudes within 85 to 90 degrees\n if (lat > 85) {\n lat = 85;\n }\n if (lat < -85) {\n lat = -85;\n }\n return lnglat.length === 3 ? [lng, lat, lnglat[2]] : [lng, lat];\n}\nexport function aProjectFlat(lnglat: number[]) {\n const maxs = 85.0511287798;\n const lat = Math.max(Math.min(maxs, lnglat[1]), -maxs);\n const scale = 256 << 20;\n let d = Math.PI / 180;\n let x = lnglat[0] * d;\n let y = lat * d;\n y = Math.log(Math.tan(Math.PI / 4 + y / 2));\n\n const a = 0.5 / Math.PI;\n const b = 0.5;\n const c = -0.5 / Math.PI;\n d = 0.5;\n x = scale * (a * x + b);\n y = scale * (c * y + d);\n return [Math.floor(x), Math.floor(y)];\n}\nexport function unProjectFlat(px: number[]): [number, number] {\n const a = 0.5 / Math.PI;\n const b = 0.5;\n const c = -0.5 / Math.PI;\n let d = 0.5;\n const scale = 256 << 20;\n let [x, y] = px;\n x = (x / scale - b) / a;\n y = (y / scale - d) / c;\n y = (Math.atan(Math.pow(Math.E, y)) - Math.PI / 4) * 2;\n d = Math.PI / 180;\n const lat = y / d;\n const lng = x / d;\n return [lng, lat];\n}\nexport function lnglatDistance(\n coordinates1: [number, number],\n coordinates2: [number, number],\n units?: Units,\n): number {\n const dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n const dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n const lat1 = degreesToRadians(coordinates1[1]);\n const lat2 = degreesToRadians(coordinates2[1]);\n const a =\n Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n\n return radiansToLength(\n 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)),\n (units = 'meters'),\n );\n}\n\nexport function project(lnglat: [number, number]) {\n const d = Math.PI / 180;\n const max = 85.0511287798;\n const earthRadius = 6378137;\n const lat = Math.max(Math.min(max, lnglat[1]), -max);\n const sin = Math.sin(lat * d);\n const x = earthRadius * lnglat[0] * d;\n const y = (earthRadius * Math.log((1 + sin) / (1 - sin))) / 2;\n\n return [x, y];\n}\n\nexport function padBounds(b: IBounds, bufferRatio: number): IBounds {\n const heightBuffer = Math.abs(b[1][1] - b[0][1]) * bufferRatio;\n const widthBuffer = Math.abs(b[1][0] - b[0][0]) * bufferRatio;\n\n return [\n [b[0][0] - widthBuffer, b[0][1] - heightBuffer],\n [b[1][0] + widthBuffer, b[1][1] + heightBuffer],\n ];\n}\n/**\n * b1 包含 b2 返回 true 否则false\n * @param b1 bounds1\n * @param b2 bounds2\n */\nexport function boundsContains(b1: IBounds, b2: IBounds): boolean {\n return (\n b1[0][0] <= b2[0][0] &&\n b1[0][1] <= b2[0][1] &&\n b1[1][0] >= b2[1][0] &&\n b1[1][1] >= b2[1][1]\n );\n}\n/**\n * bbox 转换为Bounds\n * @param b1 bbox\n *\n */\nexport function bBoxToBounds(b1: BBox): IBounds {\n return [\n [b1[0], b1[1]],\n [b1[2], b1[3]],\n ];\n}\n"],"file":"geo.js"}
\No newline at end of file