Some birds are opportunistic, persistent birds. Once they pick a place they like, they tend to return year after year. Continuous visitation by birds can cause damage to property. They leave droppings all over a roof and ledges and often nest under the eaves. It is possible to bird-proof a roof, but it may take several tries before finding something that repels your feathered visitors. Being as persistent as the birds is key.
Seal all openings, such as under the eaves, from nesting birds. Use a bird netting or chicken wire with holes an inch in diameter or less.
Use an inflatable "predator" that will frighten the birds away.
Hang tape that flashes different colors, reflected in the sun, or old compact disks, around the roof top.
Place bird netting over the rooftop using posts at the corners. Some bird netting is light in color and hard to see so that it isn't obvious. The netting will have to cover the whole area you are trying to protect and surround it so that pigeons can't get underneath.
Try an ultrasonic noise device designed to frighten the birds away. Some of these devices mimic the pigeon's distress call and warn other pigeons not to land there.
Place a spike strip or "hot" wire on an area of a roof, like a ridge line, that is attracting a lot of pigeons. A spike strip is uncomfortable to land on and an electrical wire will shock the birds. However, it can be difficult to install an electrical wire for this purpose properly. Seek a professional if you need help.