I am guessing this is why companies like Google have sourced their own info.
Geo-locating by IP will always be an imperfect process because it's not actually geolocating the IP, it's geolocating the block owner.
My downtown Toronto office geo-locates as Kansas City in some cases because the org who owns the block is there. And I assume they are not keeping their records up to date as we have a /8 and I think they should be registering a sub-block or whatever it's called..
But there you go.