func ETRS89UTM(zone float64) ProjectedReferenceSystem {
	crs := ETRS89().TransverseMercator(zone*6-183, 0, 0.9996, 500000, 0)
	crs.Area = AreaFunc(func(lon, lat float64) bool {
		if lon < zone*6-186 || lon > zone*6-180 || lat < 0 || lat > 84 {
			return false
		}
		return true
	})
	return crs
}
ETRS89UTM represents projected Coordinate Reference System's similar to
https://epsg.io/25832
package wgs84
import "errors"
func To(to CoordinateReferenceSystem) Func {
	return LonLat().To(to)
}
func From(from CoordinateReferenceSystem) Func {
	return LonLat().From(from)
}
func XYZ() GeocentricReferenceSystem {
	return WGS84().XYZ()
}
func LonLat() GeographicReferenceSystem {
	return WGS84().LonLat()
}
func WebMercator() ProjectedReferenceSystem {
	return WGS84().WebMercator()
}
func UTM(zone float64, northern bool) ProjectedReferenceSystem {
	northf := 0.0
	if !northern {
		northf = 10000000
	}
	crs := WGS84().TransverseMercator(zone*6-183, 0, 0.9996, 500000, northf)
	crs.Area = AreaFunc(func(lon, lat float64) bool {
		if lon < zone*6-186 || lon > zone*6-180 {
			return false
		}
		if northern && (lat < 0 || lat > 84) {
			return false
		}
		if !northern && (lat > 0 || lat < -80) {
			return false
		}
		return true
	})
	return crs
}