A storm surge on the east coast of Spain has swept 3km (two miles) inland, devastating rice paddies in the Ebro river delta south of Barcelona.
Storm Gloria began wreaking havoc on Monday and five people have died. The storm has wrecked beach facilities, blocked roads and caused power cuts.
Seawater has caused major damage to beaches around Barcelona, Valencia and on the Balearic Islands.
The Ebro, lying between Barcelona and Valencia, is Spain's longest river.
The mayor of the delta region, Lluís Soler, said "we've never had anything like this before". Seawater has flooded about 30sq km (12sq miles) of rice plants.
The beach resorts of Lloret de Mar and Tossa de Mar, just north of Barcelona, are also witnessing extraordinary scenes. A carpet of foam engulfed streets in Tossa de Mar.
The Barcelona port authorities say it is too dangerous for boats to venture out to sea.
The waves there have reached as high as 7m (23ft), crashing over a dyke protecting boats moored in the Port Olímpic marina. One anchored boat there has sunk.
Residents have been told to avoid the beachfront areas in Catalonia.
Meanwhile, there has been heavy snow in Ávila, northwest of Madrid, and Alicante, just south of Valencia. The snow forced the closure of Alicante airport on Monday.
A 63-year-old man in Ávila province was killed by flying roof tiles in the storm. The freezing cold was also blamed for the death of a 54-year-old homeless woman near Valencia.
The storm is now moving across the Pyrenees, bringing heavy snow to the mountains.
What about France?
Storm Gloria has arrived in Pyrénées-Orientales, France's southernmost Mediterranean department, which has been placed on high alert.
Dozens of extra police and firefighters have been deployed in the region.
The A9 motorway on the French side of the border was closed as a precautionary measure.
Gloria was the worst storm to have hit the region in the winter period since January 1982, Météo France forecaster Olivier Proust told Franceinfo.
Spain and France were also hit by heavy flooding in October last year.