I use the public stream with a filter on location (:locations => '-180,-90,180,90')
Twitter doesn't seem to have limitation for that.
The backend is written in Ruby. The daemon to index tweets use the great Intridea gem https://github.com/intridea/tweetstream.
The page http://onemilliontweetmap.com/ is simple Sinatra application, and I use REDIS pub/sub to push tweets to the browser.
Edit: very cool visualization btw. What are you using exactly on the backend for stream processing?