From ddda0706e4b038093c630669396cb9883e6e7ee5 Mon Sep 17 00:00:00 2001 From: Araozu Date: Tue, 10 Sep 2024 18:06:38 -0500 Subject: [PATCH] fix edge cases again --- main.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index 8e8c06a..182eb2b 100644 --- a/main.go +++ b/main.go @@ -186,11 +186,7 @@ func main() { } // Convert each CombiData into a CombiRoute and store it - for idx, combi := range combis { - if idx > 10 { - break - } - + for _, combi := range combis { log.Printf("Processing %s %s", combi.Company, combi.Ref) returnCoord := make([][]float64, 0) combiRoute := CombiRoute{ @@ -208,6 +204,14 @@ func main() { func getCoordinates(ways *[]OsmWay, nodes map[int64]*OsmNode, membersSlice *[]OsmMember) *[][]float64 { coordinates := make([][]float64, 0) + // filter members, retain only those with type="way" + newMembers := make([]*OsmMember, 0) + for _, m := range *membersSlice { + if m.Type == "way" { + newMembers = append(newMembers, &m) + } + } + // The coordinate list may be reversed // we shold check that the end of the previous set // matches the beginning of the next set @@ -219,8 +223,7 @@ func getCoordinates(ways *[]OsmWay, nodes map[int64]*OsmNode, membersSlice *[]Os var previousWayId int64 = -1 // get all coordinates from each - for _, member := range *membersSlice { - + for _, member := range newMembers { // get the way way := findOsmway(member.Ref, ways) @@ -234,7 +237,7 @@ func getCoordinates(ways *[]OsmWay, nodes map[int64]*OsmNode, membersSlice *[]Os if previousNodeId == -1 { // just add all - secondWay := findOsmway((*membersSlice)[1].Ref, ways) + secondWay := findOsmway(newMembers[1].Ref, ways) coords = findFirstCoord(way, secondWay, nodes) for _, c := range coords { orderedCoordinates = append(orderedCoordinates, c)