A Generic Architecture for Geographic Information Systems