fix edge cases again
This commit is contained in:
parent
641624d238
commit
ddda0706e4
19
main.go
19
main.go
@ -186,11 +186,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Convert each CombiData into a CombiRoute and store it
|
// Convert each CombiData into a CombiRoute and store it
|
||||||
for idx, combi := range combis {
|
for _, combi := range combis {
|
||||||
if idx > 10 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Printf("Processing %s %s", combi.Company, combi.Ref)
|
log.Printf("Processing %s %s", combi.Company, combi.Ref)
|
||||||
returnCoord := make([][]float64, 0)
|
returnCoord := make([][]float64, 0)
|
||||||
combiRoute := CombiRoute{
|
combiRoute := CombiRoute{
|
||||||
@ -208,6 +204,14 @@ func main() {
|
|||||||
func getCoordinates(ways *[]OsmWay, nodes map[int64]*OsmNode, membersSlice *[]OsmMember) *[][]float64 {
|
func getCoordinates(ways *[]OsmWay, nodes map[int64]*OsmNode, membersSlice *[]OsmMember) *[][]float64 {
|
||||||
coordinates := make([][]float64, 0)
|
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
|
// The coordinate list may be reversed
|
||||||
// we shold check that the end of the previous set
|
// we shold check that the end of the previous set
|
||||||
// matches the beginning of the next 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
|
var previousWayId int64 = -1
|
||||||
|
|
||||||
// get all coordinates from each
|
// get all coordinates from each
|
||||||
for _, member := range *membersSlice {
|
for _, member := range newMembers {
|
||||||
|
|
||||||
// get the way
|
// get the way
|
||||||
way := findOsmway(member.Ref, ways)
|
way := findOsmway(member.Ref, ways)
|
||||||
|
|
||||||
@ -234,7 +237,7 @@ func getCoordinates(ways *[]OsmWay, nodes map[int64]*OsmNode, membersSlice *[]Os
|
|||||||
|
|
||||||
if previousNodeId == -1 {
|
if previousNodeId == -1 {
|
||||||
// just add all
|
// just add all
|
||||||
secondWay := findOsmway((*membersSlice)[1].Ref, ways)
|
secondWay := findOsmway(newMembers[1].Ref, ways)
|
||||||
coords = findFirstCoord(way, secondWay, nodes)
|
coords = findFirstCoord(way, secondWay, nodes)
|
||||||
for _, c := range coords {
|
for _, c := range coords {
|
||||||
orderedCoordinates = append(orderedCoordinates, c)
|
orderedCoordinates = append(orderedCoordinates, c)
|
||||||
|
Loading…
Reference in New Issue
Block a user