[HN Gopher] Show HN: 3D map of shade around the world ___________________________________________________________________ Show HN: 3D map of shade around the world Author : tppiotrowski Score : 125 points Date : 2022-01-06 18:45 UTC (4 hours ago) (HTM) web link (shademap.app) (TXT) w3m dump (shademap.app) | modeless wrote: | The WebGL update is awesome! The costs of hosting map tiles for | the whole world can be large. How are you funding it? | tppiotrowski wrote: | Great question. It costs nothing up to 50K map loads [1], but I | did burn some money learning along the way: | | I went with Mapbox and Maptiler for tiles early on. Initially I | used Leaflet with raster map tiles and raster elevation tiles. | Mapbox free-tier for raster tiles was 750,000 tiles per month | and I exceeded that a few months in. | | Next I used Leaflet with [maplibre/mapbox]-gl-leaflet plugin | which allowed me to use unlimited vector map tiles from Mapbox | up to 50K map loads. However, I continued to use raster | elevation tiles and these soon started exceeding 750,000 tiles | per month. | | Finally I switched to Mapbox GL JS. This allows you 50K map | loads a month and unlimited loading of elevation and vector map | tiles per map load. I used Maplibre GL JS for a bit, but it's | missing the 3D terrain functionality so I went with Mapbox | instead. | | In general, it would cost about $100 for every 3000 visitors | before switching to Mapbox GL JS. | | [1] https://www.mapbox.com/pricing#maploads | modeless wrote: | Being on the HN front page is going to blow out your budget | for the month probably. Hope it doesn't cost you too much! I | had issues with my own site using Street View which is even | more expensive than maps | (https://james.darpinian.com/satellites/) until I found out | you can apply for large amounts of free Google Maps API | credits for educational and non-profit use. It's a little | stressful because if you exceed your credits and don't | deactivate the API in time you can still end up with a large | bill, and the credits have to be re-approved every year in a | slow and uncertain manual process. But hey, it's free and | pretty generous, and nobody else has Street View so my site | can't work without it. | tppiotrowski wrote: | It's a little early to say, but someone posted it on | r/InternetIsBeautiful last month and it had about 75K | visitors over two days. It looks like the front page of HN | will be just a fraction (20%?) of that traffic. | | Reddit is truly massive, but I appreciate the HN | discussions more. | modeless wrote: | You're right, I went and looked up my stats and HN | doesn't seem as large as I thought. My biggest traffic | days have been from Facebook. When Starlink is visible | over a major city, I sometimes get a bump in traffic from | people sharing the site. I was skeptical at first that | adding social share buttons was important, but I think it | actually has driven quite a bit of traffic. And I've | gotten a ton of twitter followers which is cool. Though | they don't actually care about what I tweet about, it's | just nice to have a big number on my profile. | folli wrote: | That's a very cool implementation, I also like the idea of | replaying GPX tracks this way! | | Some time ago I made an app (Sun Locator) that has a similar | feature (see here for a short demo: | http://www.sunlocator.com/sunlocatorwebsite2_files/topo.gif). But | your approach is definitely more elegant. | wedmondson wrote: | This is really cool! It might come in handy when house or | property hunting. Here is another, similar tool I have found | helpful for gardening. https://www.suncalc.org/ | Eduard wrote: | super awesome! I have plenty of fun playing with this. | | * Is there a way to deactivate daylight saving time switches / | locale-specific time and just use global UTC time? Because when I | drag the "day-of-the-year" slider, at the end of March the | rendering jumps for the switch from CET to CEST, and jumps at the | end of October for the switch from CEST to CET - at least for my | locale. | | * Sunsets and sunrises are the most spectacular, just as in real | life. Maybe one idea is to allow for a third slider controlling | the "second of a minute" ... or providing an optional "time | stretching"/"slow motion" dragging behavior the closer the | current position of the "minute-of-the-day" slider gets to the | moment of sunset/sunrise. | vosper wrote: | This is really cool. Occasionally I look for land near mountains, | with the aim of building a future holiday home there. It'll be | really helpful to know what areas are going to still get sun in | the middle of winter. | lucb1e wrote: | I had a lot of fun playing with this for over half an hour now! | For some reason this fascinates me. Thanks! | samwillis wrote: | Love this, what are you using as the terrain elevation data | source? I don't think this is something available from Open | Street Map and can't see any attribution. | | Also (bug report) it seems to be a little buggy on Safari on | MacOS when you zoom out, it gets quite glitchy. | tppiotrowski wrote: | I need to change the default attribution positioning because | it's under the time slider but the terrain data is aggregated | by Mapbox in their terrain dataset. The building data also | comes from the Mapbox vector tiles but is sourced from | OpenStreetMap data. | | Sorry for the glitches. If you copy and paste your url here, I | can see exactly the zoom/location/pitch/bearing you're looking | at. | ghostly_s wrote: | Why on earth is the view oriented with SW up? | throwoutway wrote: | This looks great! Testing on mobile (iOS) and it's very smooth! | Does it autochange based on time or does the user need to | refresh? | tppiotrowski wrote: | If no timestamp is specified in the url, it defaults to your | local time. As you move the time slider, the shadows will | change and update the timestamp in the url so reloading the | page will result in seeing the exact same location at the exact | same time as before. | | The shade does not change automatically, you need to move the | time slider. | tppiotrowski wrote: | Hi HN. I've been learning WebGL and working on this project for | about a year. I posted it previously when it worked in 2D and | wanted to share it again because the 3D really makes the shade | come to life. Most of the credit for the update due to migrating | from Leaflet to Mapbox GL JS. | Karawebnetwork wrote: | Interesting! I had never noticed the amount of shade created by | the mountain in the middle of Montreal. | | It almost seems wrong at first glance, the shadow it casts is | huge and it covers most of the city and far beyond. But it's | probably my monkey brain that doesn't notice the gradual | changes and isn't aware that where I am at that moment has less | light than the surrounding areas. | | What is " shade " according to this map? Do you know how much | sunlight (lumens?) is lost? Or is this an extrapolation of the | shape of the features? It looks like the edges are quite hard | when they should be softer and have different levels of | opacity? Especially when the sun is very low, because according | to this image, the mountain casts a shadow all the way to the | town north of the river, several miles away. I'm thinking out | loud. | https://shademap.app/#45.581,-73.4441,10.0642z,1641473011979... | | I will make sure to pay better attention next time I'm in the | city around that time. | tppiotrowski wrote: | "shade" means that there is no "direct" sunlight on that | spot. Some object is in the way blocking the sun. If you were | to go the a spot shaded on this map at the given time (and | lay your eye at ground level), you should not see the sun | (+/- 2 minutes or so because the suns disk is not a point as | this model approximates) | acomms wrote: | Bigger than you'd think, it's true! Outremont gets sunrise | about 45 minutes after the eastern part of the city. | monkeybutton wrote: | Very neat. Just looked up a regional park I like to go camping | in and its already deep in shade by midafternoon: | https://shademap.app/#47.1987,-71.39085,11.31012z,1641497311... | toss1 wrote: | Very cool - just took a quick glance (gotta run right now) and | it's already on my cool&useful tools menu. Thanks! | k82a wrote: | Looks great, congrats. Dragging a very zoomed out view back and | forth is also quite mesmerizing e.g. | https://shademap.app/#39.70557,-113.85396,4.52593z,164148075... | | How do the calculations go so smoothly? I mean for each pixel | that is potentially in the shade there can be a many 'upstream' | pixels in the direction that the light is coming from that | could cause it to be shady if there was something high there. | Doing that calculation for each pixel seems very intensive, or | is it achieved in some other way? | tppiotrowski wrote: | You're spot on. One optimization is that once you are above | the highest pixel of the map, you can assume you won't hit | anything else. Another is calculating if the Earth's | curvature will move pixels out of your way before you hit | them. | davidxmiller wrote: | Looks great, congrats! I have worked on the same sort of project | on (and mostly off) over a while, but didn't get as far as having | a nice UI on the front etc. I'd started in WebGL but then moved | to a back-end server using CUDA and separate front end (mostly as | I wanted to learn a bit about CUDA at the time). What did you use | for your source of height data? I'd used some free LiDAR data but | didn't find high resolution free LiDAR data for Scotland. | | EDIT: I found your blog, so can see you used e.g. | https://osmbuildings.org/documentation/data/ for buildings. I'd | looked at that also but found the data a little sparse and also | not so accurate, but its possibly improved since, and does look | good on the rendering. | tppiotrowski wrote: | I use Mapbox terrain RGB [1]. A good free alternative is | Nextzen [2], but they do not generate tiles past zoom level 15 | (Mapbox does it to 20) and there are some random elevation | spikes that Mapbox has cleaned up. | | I'm looking forward to a LIDAR elevation tile set becoming | available because it can be loaded into Shademap without any | modification and hopefully display shade from trees. | | [1] - https://docs.mapbox.com/help/getting-started/mapbox- | data/#ma... | | [2] - https://www.nextzen.org/#terrain-tiles | | EDIT: For buildings I used OSM Buildings initially, but now | such data is directly encoded in the vector map tiles provided | by Mapbox | davidxmiller wrote: | Interesting, thanks, I'll have a look at Mapbox terrain RGB. | Will be interesting to see the resolution of a LIDAR tile set | if Mapbox are going to have one, I've found that I could | sometimes find low-resolution free data (5M / 10M etc), but | that higher resolution 25cm/50cm/1M etc was often commercial | and very expensive, but that gives much more accurate results | in city areas. I'll have a look at Nextzen also. | pheelicks wrote: | Great work, runs very smoothly! Where do you do the shadow | calculation? Do you have precomputed tilesets or do you do it on | the client? | tppiotrowski wrote: | On the client. A WebGL shader that ray traces each pixel | towards the sun. If the ray hits terrain on the way, the pixel | will be in the shade. | | It also takes into account the Earth's curvature, so you can | zoom out to planet level and it still works. | pheelicks wrote: | Impressive performance, I remember trying this technique a | while back a the number of steps required made the frame rate | drop. Is the code public? | | By the way, you might like | https://felixpalmer.github.io/volcanoes-of-japan/ | tppiotrowski wrote: | Sorry, code is not public. My initial business model was to | offer the shade layer as a drop in for any Leaflet, Mapbox, | Google Map so companies like AllTrails, Strava, Gaia GPS | could use it in their apps but selling's hard. Now I'm | leaning a bit towards just releasing an app with offline | mode. | | Great link, thanks. Horizontal scrollbar tripped me out a | little bit though... | ginko wrote: | Ah, the joys of living in the North: | | https://shademap.app/#63.41876,10.43876,12.06084z,1641468451... | tppiotrowski wrote: | Looks like you found a bug. This link works on Firefox and iOS, | but my desktop Safari displays no shadows. Will investigate. | shtopointo wrote: | Nice work - product idea: find patios that are not in shade on a | given day / at a given hour. | | Bet you could even charge a penny for a feature like this. ___________________________________________________________________ (page generated 2022-01-06 23:00 UTC)