[HN Gopher] City Roads: A tool to draw all roads in a city at once
       ___________________________________________________________________
        
       City Roads: A tool to draw all roads in a city at once
        
       Author : gaws
       Score  : 431 points
       Date   : 2024-12-21 18:16 UTC (1 days ago)
        
 (HTM) web link (anvaka.github.io)
 (TXT) w3m dump (anvaka.github.io)
        
       | tekno45 wrote:
       | Idk how long itd take normally so just kinda neat.
       | 
       | But i love the slack in the dragging around the map.
        
       | crabmusket wrote:
       | I have a map of Brugge (Bruges) from this tool printed off on my
       | wall. It's a great concept!
        
         | anvaka wrote:
         | oh wow. Glad you liked it!
        
       | Amorymeltzer wrote:
       | Neat! Lovely to look at. Is it caching just the most popular or
       | previous searches?
       | 
       | The option to print on a mug with one link is pretty neat! Might
       | actually do that...
        
         | HellsMaddy wrote:
         | From the README[0]:
         | 
         | > To improve the performance of download, I indexed ~3,000
         | cities with population larger than 100,000 people and stored
         | into a very simple protobuf format.
         | 
         | [0] https://github.com/anvaka/city-roads
        
       | mulhoon wrote:
       | Simple and effective. Beautiful to look at.
        
       | semi-extrinsic wrote:
       | Would be nicer if it would distinguish (just varying line
       | thickness) between footpaths, roads, highways etc. Many European
       | cities look messy in this view.
       | 
       | IMO, prettymaps is quite a bit better:
       | https://github.com/marceloprates/prettymaps
        
         | noiv wrote:
         | It's JavaScript and exposes an extensive API via console:
         | https://github.com/anvaka/city-roads/blob/main/API.md#loadin...
        
       | walski wrote:
       | I get a 403 for some cities. E.g. Wyk (auf Fohr) returns 403 on
       | this .pbf resource: https://city-roads.s3-us-
       | west-2.amazonaws.com/nov-02-2020/36...
        
         | walski wrote:
         | Oh damn, I thought this is a Show HN :D
        
           | anvaka wrote:
           | appreciate the feedback - I'll take a look
        
       | peppertree wrote:
       | There's also a Figma plugin that can import OSM as vector.
       | https://www.figma.com/community/plugin/1251030017228239072/v...
        
       | okasaki wrote:
       | Great idea. Might print some and hang them.
        
         | dotancohen wrote:
         | I was thinking that this would be a great gift, to print a set
         | of dinner plates with every place that I know the couple lived
         | in. Each plate a different city.
         | 
         | Though I'm a bit worried about paint near food, especially for
         | custom jobs.
        
       | hiatus wrote:
       | Link to the github project: https://github.com/anvaka/city-roads
        
       | Liftyee wrote:
       | In the age of bloated resource hogs, I was pleasantly surprised
       | that this rendered with no perceptible lag or stuttering, even on
       | my phone. Impressive how everything is drawn so efficiently.
        
         | mrbluecoat wrote:
         | I agree. The pinch zoom was also buttery smooth. Nice job!
        
       | kayvulpe wrote:
       | Incredible! May take a while for a big city, but well worth the
       | wait.
        
       | latkin wrote:
       | In case others gave up, it took about 2.5 minutes to load my
       | (midsize city) hometown from OpenStreetMap. So hang in there.
        
         | sandworm101 wrote:
         | I'm at 10 minutes now, for a town of <15k. Render time might
         | depend more on total area than number of lines to draw. Update:
         | gave up after 20min. Something might be wrong with the
         | particular city.
        
           | fnordpiglet wrote:
           | Render time for Seattle is a blink of the eye which has both
           | area and density. I think the time people is observing is
           | loading the raw data from open street map itself.
        
             | flufluflufluffy wrote:
             | About 2 seconds for me to load and draw Los Angeles. It's
             | definitely the load time/network latency, depending on
             | where it's loading from. This is amazing! I might use it
             | for a custom map or something
        
             | Capricorn2481 wrote:
             | Because they cache the biggest cities in the world.
             | 
             | > To improve the performance of download, I indexed ~3,000
             | cities with population larger than 100,000 people and
             | stored into a very simple protobuf format. The cities are
             | stored into a cache in this github repositor
        
         | remram wrote:
         | Probably going to hit the paradox here, where most people are
         | going to request a place where many people live, even though
         | most places are small.
         | 
         | I probably have no chance, living in NYC.
        
           | zactato wrote:
           | I would expect the opposite with a basic LRU cache before the
           | fetch to OSM
        
             | remram wrote:
             | That's fair unfortunately it's not what happened :-(
        
           | dotancohen wrote:
           | I'm in a city well under 50,000 people not in the Americas
           | nor Europe. The site gave a message that it was retrieving
           | the data from OSM, then rendered the map faster than the
           | browser would render a png. Very impressive.
        
         | NavinF wrote:
         | That's surprising. It only took me a couple of seconds to load
         | NYC on my iPhone over 5G
        
           | zipping1549 wrote:
           | Some cities are cached and NYC is going to be in it for sure.
        
       | imnotlost wrote:
       | Love it! I did a few cities where I've lived and it brings me
       | back.
        
       | elbac wrote:
       | This is wonderful. Great job.
        
       | rl_for_energy wrote:
       | One of those simple charming tech experiences. Thanks for
       | sharing!
        
       | JSR_FDED wrote:
       | I was intrigued by how many of the 3000 cities you've cached I
       | had heard of. You used population size >100k as cutoff, it would
       | be interesting to compare how many cities someone has heard of
       | with their population size.
       | 
       | This would be a fun metric to rate someone's "global
       | orientation".
       | 
       | Only recognize the cities with >1M people? Low GO score (or more
       | charitably, high Local Focus score :-)
        
         | rplnt wrote:
         | There are many quizzes like that on Sporcle.
        
       | dudeinjapan wrote:
       | Well done! I tried Tokyo, and discovered it looks
       | funny/disjointed because several far away islands like
       | Hachijojima are part of Tokyo municipality.
        
       | larodi wrote:
       | This is the level of projects that our GIS students deliver at
       | the end of 60 hours of non-mandatory class. Perhaps 70%+ of
       | visitors of HN can do it if they decide to, it is just an
       | interdisciplinary area that not many explore. A project of
       | similar complexity in the WEB or ML are would never get upvoted
       | so much.
        
         | Capricorn2481 wrote:
         | Is this not a project in the web? Or what would be a web
         | project of similar complexity?
        
         | matsemann wrote:
         | What is your point? That it's "undeserved" and that's bad
         | somehow?
         | 
         | I think it was a cool visualization and fun to see. And still,
         | 60 hours of research is more than I would put into it, so even
         | if I technically was able to I would've never gotten around to
         | actually do it. So nice to see something else than what I
         | normally work with, even if it might be trivial in that domain.
        
         | aembleton wrote:
         | Are there are any tools that your GIS students use to create
         | this? Or is it all code? Any libraries that you can recommend?
         | 
         | I was thinking that I would query the global database for roads
         | and then take the nodes and their coordinates. Then I would
         | need to convert those coordinates into points on a canvas and
         | draw lines between them.
         | 
         | How would I get the boundaries of a city? Some places I've
         | tried are just a point in osm. Is there some other data source
         | you would use for that?
        
           | cpa wrote:
           | A combination of overpass turbo and a LLM would get you
           | started pretty quick. Regarding GIS tools, download QGis (it
           | sucks on mac but is okay on linux or windows)
        
       | Defenestresque wrote:
       | The hobby-sized projects/videos on your Twitter are mesmerizing:
       | https://x.com/anvaka
       | 
       | Talk about a true hacker mindset. Great bloody job!
        
       | pmg101 wrote:
       | If you choose Brighton and zoom in on Hove Park you see the
       | fingerprint maze there very beautifully rendered as a vector,
       | amazing OSM has this detail!
        
       | thih9 wrote:
       | OSM content attribution is missing (either not added or getting
       | clipped) when the data is exported for printing on a mug.
        
         | matsemann wrote:
         | Do you need the attribution when you print it on a mug for
         | personal use?
        
           | maxerickson wrote:
           | That's the terms of the ODBL (produced work in section 4).
           | 
           | Pedantically, in this case, it isn't personal use either (the
           | site is using the produced image to offer a mug for sale).
           | 
           | Note that this isn't necessarily an endorsement of those
           | terms.
        
       | cjs_ac wrote:
       | * Greater London excludes the City of London
       | 
       | * Footpaths and cycleways and shown as roads but railways are not
        
       | stevage wrote:
       | So, it's a filter on OpenStreetMap to retrieve all ways with a
       | highway=* tag, and draw them identically?
       | 
       | I think a much faster and easier way to implement this would be
       | using existing sources of vector tiles, but scaled down. You
       | could probably even just use Mapbox GL JS, and scale the whole
       | canvas down by a factor of 4 or something, to avoid the issue of
       | small roads not being present at city-scale zoom levels.
        
       | robinduckett wrote:
       | It seems to render each lane of the roads in my city seperately.
       | It looks good at maximal zoom but worse if you zoom in.
        
       | dmje wrote:
       | I love this. So much, I bought a mug. Hope you get a cut!
        
       | jameshart wrote:
       | It's a cool project, well executed.
       | 
       | But I am a bit confused about the way it's described. Is it
       | unusual to see all the roads in a city drawn at once? Is the
       | concept of 'visualizing all the roads in a city' one that we
       | don't have a name for? Is the creator from a parallel dimension
       | where they only have tools that let you see one street at a time?
        
         | kaveet wrote:
         | Google Maps and most other maps will happily hide streets
         | depending on your zoom level
        
       | TomWhitwell wrote:
       | IIRC these are SVGs and excellent if you have a plotter
        
       ___________________________________________________________________
       (page generated 2024-12-22 23:01 UTC)