コード例 #1
0
func TimeInRegion(locations Locations, filter config.Filter) []TimeEnterExit {
	var time_enter_exit []TimeEnterExit

	inregion := false
	fmt.Println(filter)
	var count int
	// Time goes backward in this struct
	for _, location := range locations.Locations {
		if InRegion(location, filter) {
			if inregion == false {
				time_enter_exit = append(time_enter_exit, TimeEnterExit{Exit: comparedates.ParseTimeNs(location.TimestampMs)})
				fmt.Printf("Exit %v \n", comparedates.ParseTimeNs(location.TimestampMs))
				fmt.Println(location)
			}
			count++
			inregion = true
		} else {
			if inregion == true {
				time_enter_exit[len(time_enter_exit)-1].Enter = comparedates.ParseTimeNs(location.TimestampMs)
				fmt.Printf("Enter %v \n", comparedates.ParseTimeNs(location.TimestampMs))
				fmt.Println(location)
				//time_enter_exit[len(time_enter_exit)-1].TimeDiff = comparedates.ParseTimeNs(location.TimestampMs) - time_enter_exit[len(time_enter_exit)-1].Enter
				count = 0
			}
			inregion = false
		}
	}
	fmt.Print(time_enter_exit)
	return time_enter_exit
}
コード例 #2
0
func InRegion(location Location, filter config.Filter) bool {
	var beginTime = comparedates.ParseTimeStr(filter.Time.Min)
	var endTime = comparedates.ParseTimeStr(filter.Time.Max)

	/*fmt.Printf("BEGIN: %v", beginTime)
	fmt.Printf("END:   %v", endTime)
	*/

	var compareTime = false
	if filter.Time.Min != "" && filter.Time.Max != "" {
		compareTime = true
	}
	var timeStamp time.Time

	if location.LatitudeE7 < filter.Latitude.Min {
		return false
	}
	if location.LatitudeE7 > filter.Latitude.Max {
		return false
	}
	if location.LongitudeE7 < filter.Longitude.Min {
		return false
	}
	if location.LongitudeE7 > filter.Longitude.Max {
		return false
	}
	if compareTime {
		timeStamp = comparedates.ParseTimeNs(location.TimestampMs)
		if !comparedates.InTimespan(beginTime, endTime, timeStamp) {
			return false
		}
	}
	return true

}