Vilanova i la Geltrú is a coastal town approximately 45 km (28 mi) south of Barcelona, Catalonia, Spain.