Season ham with salt and pepper; place in a roasting pan large enough to hold while leaving room for pineapple and onion. Roast ham until it reaches an internal temperature of 140°F, about 2 hours and 40 minutes. Pour off fat from pan, leaving any browned bits. Add pineapples and onion, increase temperature to 400°F, and roast until ham reaches an internal temperature of 165°F and pineapples and onion begin to brown, about 50 minutes longer. Transfer ham to a warm platter, cover with a clean kitchen towel, and let stand 15 minutes.
Meanwhile, in a small skillet over medium heat, toast coriander seeds until they smell like oranges, about 2 minutes. Cool completely and process in a spice grinder until coarse, or crush using the back of a spoon.
Transfer pineapples and onion to a large bowl. Stir in almonds and coriander, and season lightly with salt and pepper. Add cilantro, and toss gently until combined.
Carve ham and shingle slices against salad.