UNPKG

faker-brasil

Version:

This library provides fake data for users data from Brazil

83 lines (67 loc) 3 kB
'use strict'; const GeoHelpers = require("../helpers/GeoHelpers"); const RandomArrayElement = require('../services/RandomArrayElement') class GeoData { geoRandomBrCoordState(state = null) { let randomStateCoord = null; if (!state) { randomStateCoord = RandomArrayElement.randomElement(GeoHelpers.stateCoords()); } else { let geoJson = GeoHelpers.stateCoords(); randomStateCoord = geoJson.find(geo => geo.state.code == state); } if (!randomStateCoord) { return null; } let point1 = RandomArrayElement.randomElement(randomStateCoord.borders[0]); let point2 = RandomArrayElement.randomElement(randomStateCoord.borders[0]); let xM = this.calcMiddlePoint(point1.lat, point2.lat) let yM = this.calcMiddlePoint(point1.lng, point2.lng) if (xM != point1.lat && yM != point1.lng) { //In this point we can move by x and y to get random point and not always the middle return { state: randomStateCoord.state.code, lat: RandomArrayElement.superRandom(xM, xM - RandomArrayElement.randoNumberIn(-.0000000000050, .0000000500)), lng: RandomArrayElement.superRandom(yM, yM - RandomArrayElement.randoNumberIn(-.0000000000050, .0000000500)) } } else { return { state: randomStateCoord.state.code, lat: xM, lng: yM } } } getRandomCoordsByCity(city = null) { let randomcityCoord = null; if (!city) { randomcityCoord = RandomArrayElement.randomElement(GeoHelpers.municipios()); } else { let geoJson = GeoHelpers.municipios(); randomcityCoord = geoJson.find(geo => geo.city.name.normalize('NFD').replace(/[\u0300-\u036f]/g, "") == city); } if (!randomcityCoord) { return null; } let point1 = RandomArrayElement.randomElement(randomcityCoord.borders[0]); let point2 = RandomArrayElement.randomElement(randomcityCoord.borders[0]); let xM = this.calcMiddlePoint(point1.lat, point2.lat) let yM = this.calcMiddlePoint(point1.lng, point2.lng) let point3 = RandomArrayElement.randomElement(randomcityCoord.borders[0]); let point4 = RandomArrayElement.randomElement(randomcityCoord.borders[0]); let xM2 = this.calcMiddlePoint(point3.lat, point4.lat) let yM2 = this.calcMiddlePoint(point3.lng, point4.lng) let xf = this.calcMiddlePoint(xM, xM2) let yf = this.calcMiddlePoint(yM, yM2) return { state: randomcityCoord.city.state, city: randomcityCoord.city.name, lat: xf, lng: yf } } calcMiddlePoint(n1, n2) { return (n1 + n2) / 2 } } module.exports = GeoData;