package geospatial // SpatialValidatorImpl implements SpatialValidator interface type SpatialValidatorImpl struct { config *Config } // NewSpatialValidator creates a new spatial validator func NewSpatialValidator(config *Config) SpatialValidator { return &SpatialValidatorImpl{ config: config, } } // ValidatePoint validates a geographic point func (sv *SpatialValidatorImpl) ValidatePoint(point Point) error { return validatePoint(point) } // ValidateBoundingBox validates a bounding box func (sv *SpatialValidatorImpl) ValidateBoundingBox(bbox BoundingBox) error { if err := validatePoint(bbox.NorthEast); err != nil { return err } if err := validatePoint(bbox.SouthWest); err != nil { return err } if bbox.NorthEast.Latitude < bbox.SouthWest.Latitude { return ErrInvalidBoundingBox } return nil } // ValidateLatitude validates a latitude value func (sv *SpatialValidatorImpl) ValidateLatitude(lat float64) error { if lat < sv.config.MinLatitude || lat > sv.config.MaxLatitude { return ErrInvalidLatitude } return nil } // ValidateLongitude validates a longitude value func (sv *SpatialValidatorImpl) ValidateLongitude(lng float64) error { if lng < sv.config.MinLongitude || lng > sv.config.MaxLongitude { return ErrInvalidLongitude } return nil }