there have been great changes in my city是个倒装句.
主语是changes,是复数,所以要用have.
作者在此使用现在完成时态,主要是想表明,在过去几年发生了巨大的变化,这个变化到今天为止仍在进行中.