photoprism/pkg/s2/level.go

56 lines
916 B
Go

package s2
// DefaultLevel specifies the default S2 cell size.
var DefaultLevel = 21
// Level returns the applicable cell level based on the search range in km,
// see https://s2geometry.io/resources/s2cell_statistics.html.
func Level(km float64) (level int) {
switch {
case km >= 7842:
return 0
case km >= 3921:
return 1
case km >= 1825:
return 2
case km >= 1130:
return 3
case km >= 579:
return 4
case km >= 287:
return 5
case km >= 143:
return 6
case km >= 72:
return 7
case km >= 36:
return 8
case km >= 18:
return 9
case km >= 9:
return 10
case km >= 4:
return 11
case km >= 2:
return 12
case km >= 1:
return 13
case km >= 0.425:
return 14
case km >= 0.212:
return 15
case km >= 0.106:
return 16
case km >= 0.053:
return 17
case km >= 0.027:
return 18
case km >= 0.013:
return 19
case km >= 0.007:
return 20
default:
return DefaultLevel
}
}