TileMill — an application for making beautiful maps
mapbox.com
mapbox.com
http://mapbox.com/mbtiles-spec/utfgrid/
edit: TileMill is also a really cool example of using Backbone.js + Bones to build a Desktop app: https://github.com/mapbox/tilemill/tree/master/models
I use this kind of pixel grid which brings those advantages, especially for very large maps :
- use of the image (with carefully chosen colors) as a direct preview of the map (depending on the resolution)
- efficient (bidirectional) PNG compression
- use of already present image manipulation libraries for all kind of manipulation (like layers addition)
What's the benefit of using UTF characters ?
As a side note, I send my PNG when needed in JSON (larger, with base64 encoding, I didn't try to make a comparison with ASCII art format) and I find that with getImageData getting the indexed colors is fast and easy. I was referring to bidirectional compression because PNG filter (applied before the deflate) uses the fact that pixels are often similar on both axes.
Of course, without a few tests and comparisons, I can't be sure I really gain in size, but I like to use the fact that my map is an image (faster to draw on the screen at some resolutions and image manipulation server side - my zero indexes are simply mapped to the transparent "color" as is common in most color palettes).
I have different constraints trough, as my map contains 3200x1600 pixels and not 64x64, so that I really need those compressions for instant display.
- TileMill on Windows,
- Live map rendering for dynamic data via TileMill + direct uploads to MapBox for hosting,
- Beautiful new OpenStreetMap base maps as an alternative for Google Maps w/ its new usage fees,
- Shipping fast hardware (which we are still designing :) http://www.flickr.com/photos/developmentseed/5812414817/).
TileMill is addictive to play with, though very tedious if you don't have a fast machine with some SSD's, as refreshes take a while to reload various zoom levels to see your work. Not much to be done there except throw hardware it.
Edit: I am hosting our maps on my own hardware, mapnik2+mod_tile. I just used the slick client to create a mapnik XML file for rendering.
Importing and indexing planet.osm takes a while. It's better than importing the whole planet file in gazetteer mode for geocoding though. I have been fighting that import for a month now, on decent hardware!
Your demo displays one problem : the strange choice of labels. For example, look for France's capital at zoom 8. You'll see a lot of small towns indicated but not Paris. And I can reproduce this for a lot of notable towns (like NY).
Our name is a huge misnomer, it's more like Ride With or Without GPS....Problem is you can't really rebrand a 3 year old company with good traffic.
One particularly nice option is the ability to "print" your pre-rendered map to an MBTiles bundle for serving in a slippy map on the web.
I had seriously considered working toward the same goal, but gave up because I wasn't sure about what kind of customers I might find. I'm still convinced that there are a lot of customers out there for this type of thing, and I hope you guys make this into something big!
I'd recommend anybody to give it a try and then have a look at their plans: http://mapbox.com/plans/. It's damn affordable for that kind of service.
We even use Tilemill's underlying node.js framework, Bones, for some of our projects.
I need something more "freehand" and Ortelius is what I need; http://www.mapdiva.com/ortelius/
That said mapnik [1], the rendering engine used to generate tiles, is a general purpose geographic data renderer. You could use tilemill as a tool to generate the map style then use mapnik directly to render your map at any pixel or geographic dimensions desired.
"Just two months ago, after Node.js added native Windows support, we started testing and porting TileMill to a native Windows application. We plan to release a beta version this quarter"