//IntersectsFilter creates a Filter allowing to skip tiles outside of a given geometry func IntersectsFilter(g *geos.Geometry) raster.Filter { //TODO: use a prepared geometry return func(level, x, y int) (bool, error) { tile, err := newTilePolygon(level, x, y) if err != nil { return false, err } intersects, err := g.Intersects(tile) if err != nil { return false, err } return !intersects, nil //Tiles that do not intersect are excluded } }