Loading go-packages/meep-gis-asset-mgr/asset-mgr.go +75 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ package gisassetmgr import ( "database/sql" "encoding/json" "errors" "sort" "strconv" "strings" "time" Loading Loading @@ -2092,3 +2094,74 @@ func (am *AssetMgr) GetWithinRangeBetweenPoints(srcCoordinates string, dstCoordi } return within, err } type PowerValue struct { Rsrq float32 Rsrp float32 } type coordinate struct { Latitude float32 Longitude float32 } type Position struct { Type string `json:"type,omitempty"` Coordinates []float32 `json:"coordinates"` } // Calculate RSRQ/RSRP for a given list of coordinates func (am *AssetMgr) GetPowerValuesForCoordinates(coordinates []coordinate) ([]PowerValue, error) { poaMap, err := am.GetAllPoa() if err != nil { log.Error(err.Error()) return nil, err } var position Position var powerValues []PowerValue // bestPoa := "" for _, coord := range coordinates { var maxRsrp float32 = 0 var maxRsrq float32 = 0 for _, poa := range poaMap { _ = json.Unmarshal([]byte(poa.Position), &position) poaLat := position.Coordinates[1] poaLong := position.Coordinates[0] poaRadius := poa.Radius poaLatStr := strconv.FormatFloat(float64(poaLat), 'f', -1, 32) poaLongStr := strconv.FormatFloat(float64(poaLong), 'f', -1, 32) coordLatStr := strconv.FormatFloat(float64(coord.Latitude), 'f', -1, 32) coordLongStr := strconv.FormatFloat(float64(coord.Longitude), 'f', -1, 32) poaCoordinates := "(" + poaLongStr + " " + poaLatStr + ")" coordCoordinates := "(" + coordLongStr + " " + coordLatStr + ")" distance, err := am.GetDistanceBetweenPoints(poaCoordinates, coordCoordinates) if err != nil { log.Error(err.Error()) return nil, err } if distance > poaRadius { continue } _, rsrp, rsrq := calculatePower(poa.SubType, poaRadius, distance) if rsrp > maxRsrp { maxRsrp = rsrp maxRsrq = rsrq } } newPowerValue := PowerValue{ Rsrp: maxRsrp, Rsrq: maxRsrq, } powerValues = append(powerValues, newPowerValue) } return powerValues, nil } go-packages/meep-gis-asset-mgr/go.sum +1 −0 Original line number Diff line number Diff line github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/lib/pq v1.5.2 h1:yTSXVswvWUOQ3k1sd7vJfDrbSl8lKuscqFJRqjC0ifw= github.com/lib/pq v1.5.2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= Loading Loading
go-packages/meep-gis-asset-mgr/asset-mgr.go +75 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ package gisassetmgr import ( "database/sql" "encoding/json" "errors" "sort" "strconv" "strings" "time" Loading Loading @@ -2092,3 +2094,74 @@ func (am *AssetMgr) GetWithinRangeBetweenPoints(srcCoordinates string, dstCoordi } return within, err } type PowerValue struct { Rsrq float32 Rsrp float32 } type coordinate struct { Latitude float32 Longitude float32 } type Position struct { Type string `json:"type,omitempty"` Coordinates []float32 `json:"coordinates"` } // Calculate RSRQ/RSRP for a given list of coordinates func (am *AssetMgr) GetPowerValuesForCoordinates(coordinates []coordinate) ([]PowerValue, error) { poaMap, err := am.GetAllPoa() if err != nil { log.Error(err.Error()) return nil, err } var position Position var powerValues []PowerValue // bestPoa := "" for _, coord := range coordinates { var maxRsrp float32 = 0 var maxRsrq float32 = 0 for _, poa := range poaMap { _ = json.Unmarshal([]byte(poa.Position), &position) poaLat := position.Coordinates[1] poaLong := position.Coordinates[0] poaRadius := poa.Radius poaLatStr := strconv.FormatFloat(float64(poaLat), 'f', -1, 32) poaLongStr := strconv.FormatFloat(float64(poaLong), 'f', -1, 32) coordLatStr := strconv.FormatFloat(float64(coord.Latitude), 'f', -1, 32) coordLongStr := strconv.FormatFloat(float64(coord.Longitude), 'f', -1, 32) poaCoordinates := "(" + poaLongStr + " " + poaLatStr + ")" coordCoordinates := "(" + coordLongStr + " " + coordLatStr + ")" distance, err := am.GetDistanceBetweenPoints(poaCoordinates, coordCoordinates) if err != nil { log.Error(err.Error()) return nil, err } if distance > poaRadius { continue } _, rsrp, rsrq := calculatePower(poa.SubType, poaRadius, distance) if rsrp > maxRsrp { maxRsrp = rsrp maxRsrq = rsrq } } newPowerValue := PowerValue{ Rsrp: maxRsrp, Rsrq: maxRsrq, } powerValues = append(powerValues, newPowerValue) } return powerValues, nil }
go-packages/meep-gis-asset-mgr/go.sum +1 −0 Original line number Diff line number Diff line github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/lib/pq v1.5.2 h1:yTSXVswvWUOQ3k1sd7vJfDrbSl8lKuscqFJRqjC0ifw= github.com/lib/pq v1.5.2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= Loading