This is an incredible visualization! Thanks for detailing how you tiled their huge dataset too. Packing the data into RGB channels as you did is really powerful - I've only seen this done for elevation tiles. Do you have a code link to how you're performing the cursor-brush aggregations?
This seems like it could be an awesome application of an cloud-optimized geotiff (COGs) for serverless tiling. I'm curious if you ran across this tech in your research?
I'm not sure where your project will take you, but I'd encourage you to continue! I got a lot of exposure to the vis.gl community when I worked at Uber, and still contribute - Here are some relevant links you may get ideas from.
Thanks! Unfortunately further development of that project went closed-source, but that code should be instructive as-is. Client side GPU-based raster processing is going to be released soon as part of our [0] SaaS product. Demo here [1]
Unfortunately, closed source seems to be the way that the mapping gl community is going right now.
I'm doing open data stuff, and the general push is definitely to open data/open source as a general principle. And also as an important consideration, when we deliver a project, with open source we at least know that the service isn't just going to go away if it gets bought by google/apple or just dies 6 months down the road. We also tend to shy away from systems that are on the Oracle "Call Us" for pricing model.
Well this "extension" is closed source, but at the core we use deck.gl [0]. deck.gl is under open governance [1] inside the Linux Foundation/Urban Computing Foundation, so no contributor can take the project closed source.
No, this is a common misconception about deck.gl. deck.gl is completely independent from other frameworks, however deck.gl is more geared towards data visualization, so it's commonly paired with other frameworks that focus on a vector basemap.
There are examples [0] of pairing deck.gl with either Mapbox GL JS or Google Maps. It's also easy to use deck.gl with the open source Mapbox GL JS port [1]. Also if you're ok with a bitmap basemap, you can just render OSM tiles with deck.gl directly [2].
(Also I guess good to disclaim that I'm a maintainer of deck.gl )
Crazy to see just how dense Europe is -- I've been a few times and always assumed I was just "in the popular areas", that's why there wasn't any open land. But no, CA for instance has many swaths of <1k towers at the zoom level I tried, and to find similar density in Europe required going all the way over to rural Turkey/Belarus/Ukraine region. Pretty much all of the western European countries were entirely 10k+ at that same zoom level.
I've been playing around with this map and a similar map of population density[1]. I wouldn't be surprised if this cell tower map was almost one-to-one match to a light pollution map: the contrast between North and South Korea is just as stark in the radio as in the visible!
But generally you're right, if you zoom out on the population density map, there simply isn't that level of distributed population Central Europe as anywhere in the United States. Europe is more similar to parts of India, China, and West Africa/Nigeria. It looks like the US most closely matches parts of Eastern Europe or Western Russia, but the US cities are substantially more suburban and "fuzzy". Aside from the stark difference between Kiev and Atlanta, in terms of population density the Eastern US seems most similar to Ukraine.
And as a local, how sparse most of Australia is...
Comparing Sydney to San Francisco and London at the same zoom levels is fascinating (to me) and trying to find other areas on the globe as sparse as the dark bits of Australia is also fun...
In a testament to how urbanised Australia is, on maximum zoom level I can put the square on Sydney's CBD and get 22,500 base stations, then without scrolling put the square on an area of bush and get 0 base stations.
It would be neat to see the gradient magnitude of the density of base stations, as it might be a measure of a country's degree of urbanization?
---
Edit: Turns out it's not that hard to find areas of 0 base stations near major cities.
I found it interesting scrolling around the globe with the "cursor" set to the zoom level where it contains all of Tasmania.
That gives me 160k entered over Sydney (Canberra up to Tamworth approximately), 124k over Melbourne, and places/areas of single digits are easy to find in the outback. It also gives me 300k entered over San Francisco, and 1.2million over London. (with easy to find spaces of zero in north Africa).
I'd like to see these figures compensated for population numbers. There's probably 7 million people in my "Sydney" footprint, I'd bet there's 10+ million in the SF/Bay Area footprint, and probably 30million in that "London and the entire south of the UK" footprint.
I live in Brisbane, Australia, the third most populous city. I can confirm that there are areas in Brisbane (not even "Greater Brisbane") that barely have mobile phone reception, such as Burbank on the eastern side.
Try the Scottish highlands. I think one of the differences is with Europe most of it is habitable, but North America has loads of desert and mountains etc.
I'm fond of https://www.cellmapper.net/ for a more local view. It's helpful for answering questions like "why do my calls always drop when I drive into region X?" and "why is coverage shit in this area?", also "what cell carrier should I get if I plan to move to X?"
Much of that info is also in the hidden field test menu on phones. On iOS, if you dial *3001#12345#* and hit call, you'll jump into a menu with a bunch of stats on the network. It's not the friendliest UI though, the one you found is probably better. Other phones likely have other numbers to call, but the field test menu is pretty ubiquitous (it's equivalent to the cable modem 192.168.100.1 page).
If your browser doesn't have your location for whatever reason, most maps will drop you into lon 0, lat 0, which is South Atlantic Ocean west of Africa.
I tried a bit of moving and zooming, but not enough I guess.
I really hate this, not that it's a bad default for location, but that it's a bad default for zoom.
Strava (running/cycling gps tracking app) has default zoomed all the way into San Francisco, so if you want to find anything you have to zoom out first. What they might thought is a little fun gimmick is annoying as hell.
It shows 40M cell IDs.
The number of physical cell towers is probably somewhere around 5 million. Given that the cell per tower factor was ~7 in 2014 and we got more standards to cover today.
Displaying so many points is something spatial people have struggled with for a long time. Would you consider writing a leaflet plugin that helps with your approach?
40 million... I knew there was a lot, but didn't realize that many. Another comment says closer to 5 million physical towers, still a lot.
A lot of these towers have GPS receivers for clock syncing as well, don't they?
Back in college I had a geology prof who was using GPS receivers planted in one spot to measure seismic / tectonic movements from one year to the next.
That was over 10 years ago, and I never looked into it much more, but seeing all those dots reminded me again.
I've wondered what kind of resolution they could model with data from the hundreds of cell towers in the area vs the handful of stations they maintained?
For now not so much gps installed on Base Stations(towers), case only at CDMA Station GPS was strictly necessary. On UMTS or LTE it’s possible but rarely could be found because it’s required for infrequent used features. Needed time synchro received via transmission.
my guess is these are cell ids, not towers. no way north texas near dallas has 200k towers. also, no mention of active or inactive. 82% of lat,longs are distinct to 5digits (about tree resolution), which implies most towers have only a single cell id. 40mil seems way to high for active.
makes me realise the internet is so powerful that the idea of 'voice calling' has now completely changed to 'data exchanging' devices. I mean if you think about it cellular will soon lose its 'cell' meaning. The idea of phone numbers might not go away but everything will likely be IP based which means it doesn't matter how your packets are routed technically.
Why would cellular lose its "cell" meaning? The radios are still cellular which means a small geographic space in served by a particular directional physical antenna(s).
Your phone only needs to be able to hit the antenna in its cell. It doesn't need to talk to other phones or more distant antennas. This is what allows phones have have relatively low power radios that reside in your pocket without big external antennas.
TIL "cellular" refers to the imagined interconnecting shapes when mapped, not the battery technology as previously thought. unsure why this term was popularised over the pre-existing "mobile" but there we go
Way, way, way back in the day there was Mobile Telephone Service [0]. Instead of a cellular network it was just a two-way VHF radio. MTS was operator dialed which meant you picked up your end in the car and an operator dialed a landline and patched it through to the radio. When cellular phones debuted in the 80s they were described as such to distinguish them from MTS phones.
The MTS phones needed a whole channel assigned to a phone which was dedicated in the whole service area. Cellular systems allowed geographic channel reuse so you could have a lot more users in a given area.
I think that we should just use the word "phone" from now on, we don't need to say "cell" or "cell phone", this is the just the phone. Even though it has a lot more jobs as a smartphone, messaging and communication generally is still the main job.
This has already happened in LTE--everything is packet-based and any traditional "telephone" things are provided as a service (from a system call the IP Multimedia Subsystem) on top of that. IIRC, 3G networks were the last to make some distinction between packets and voice circuits.
Don't worry, pretty soon the reliability of standard calls will be roughly the same as most good voice chat apps with the switch for all carriers to implement VoLTE. Maybe still a little more reliable as it won't directly rely on the public internet, but overall still a SIP/IP-based VoIP system as opposed to the dedicated call channels which were the standard previously.
Pretty sure it's due to voice chat apps only has a handful of centralized servers, resulting in more hops, higher latency and worse experience while your telcos has edge servers spread out allowing lower latency voice call between customers in the same geographical areas.
OpenCelliD is indeed a great resource but it is important to note that the rows in their db reflect cells (not towers, towers have multiple cells) and they are based on sampling (ie coordinates are calculated based on samples).
Not 100% accurate but like a said, an amazing resource.
Great visualization and approach with compressing the tile data. Do you have a comparison of how much smaller the payload ends up being compared to simply sending PNG files?
I use PNGs to encode elevation data in my 3D mapping library (https://github.com/felixpalmer/procedural-gl-js/) and this does a pretty good job of compressing the data, for example in the ocean the PNG files are also very small as the image is mostly black. Different use case I now as your data is much more sparse, but I wonder how close the PNG compression would be compared to your approach.
I don't have the exact size comparison between this approach vs PNG compression, but i guess the difference would be similar to the difference between DEFLATE vs brotli.
I'm curious about what you just asked of me though, i will make the actual measurements, and will update this page with the results when i got time.
Great thanks - perhaps obvious, but worth running the PNGs through something like pngcrush.
I'm thinking about it the other way also, that is could your approach be used to reduce the size of DEMs encoded as PNGs. While I can see brotli being more efficient, by not using a image compression algorithm you perhaps lose out on exploiting the 2D nature of the data, as if I understood correctly when you're compressing the data you treat the tile as a 1D blob of binary data.
I'm not sure how this was done, or how cell towers really work (or where they exist) but many of them appear to be in lakes, rivers and so on. What's wrong here, my understanding or the map?
Most of them are duplicate entries but with different levels of accuracy. So the same tower may have 10+ cell sites on it. So its represented 10 times. Multiple carriers in multiple technologies. Whenever they were mapped, possibly over years, the granularity level of GPS coordinates were different, so a lot of them are just in the general area.
it's based on where the single was picked up the final coordinates are calculated. Signal travels much further in open water therefore you can pickup very distant cells, skewing results.
When visiting USA for the first time I was surprised how often I would be in a no reception zone. Drove just away from Miami to Everglades National Park - no reception for miles. Drove from SF to LA via Highway 1 - no reception for miles. Being from Europe I just took cell coverage for granted and always have assumed USA has the same.
I experienced the same when I moved from China to US. In China the first time I ever experienced lost of signal was somewhere in the mountains in Tibet. Signal is just everywhere there.
US is incredibly bad on that. I live in the bay area and I can make an easy 30min drive to a place with no reception from any carriers.
The national parks generally have no coverage - which is kind of perfect given what you go there for. Once you get off the East coast, there are even more no reception areas. In Wyoming and Idaho for example I had to drive my car some miles to the nearest town to get any reception since it was so valley-y and sparsely populated.
While the US does have a lot of no cell zones, those areas do have coverage. I wonder if your phone operated on GSM bands that didn't cover those areas. For a while in it was pretty common that if you wanted coverage in rural areas you opted for Verizon's CDMA network.
Driving from LA to SF via the 1 very definitely has areas with no cell coverage, it's a drive I make semi-regularly (a tiny leg of the my Seattle-LA treks), and there are many patches with no coverage, especially in big sur.
From the map, Europe has 0 cdma tower while US has pretty significant number of cdma towers. Maybe most european cell phones simply doesn't have cdma support which makes roaming to US difficult?
Edit: Glancing at the map, it seems no one use cdma anymore except a handful of countries like US, Japan, Korea, Indonesia, Venezuela, and some part of North Africa.
This might be a dumb question, but why is it way lighter than the US or anywhere in the world? Why do they need to install so many towers? Is there anything specific about Europe's geography that requires European countries to install that much tower?
CDMA gets longer range than 3/4G, so it's useable in a sparse network so long as it's not trying to service too many people at the same time. I'm guessing the US launched lots of CDMA infrastructure back when it wasn't considered obsolete by most of the world, and hasn't upgraded it's rural cellular networks.
Australia set down all it's "legacy" CDMA stuff over a decade ago, which makes the large dark patches that cover lots of the continent very under-served.
You can serve only so many phones and handle only so much bandwidth from a single cell tower. So they reduce cell sizes and install more towers to keep devices per cell down.
The points you see are wrong, but they do have cell towers in the sea (often supplied by underwater cables). In this part of the world they can be found usually around the North Sea on or for the oil rigs mainly. However the majority of these points even on land are quite inaccurate. They are captured by simple triangulation - wardriving.
This is no cell towers exactly, this is the measurements related to dedicated cellID(sector if BaseStation(tower)). So such kind if issues is possible especially at water(rf signal propagation feature) and gps mapping if present.
Looking at my area, OpenCellID seems to have a lot more data than CellMapper.net (which people often point to). It definitely has way more data points than there are actual towers.
A lot of them are 310-260s so maybe a lot of people have T-Mobile CellSpots hooked up to their WiFi and that's what is getting detected? If you know more, I'd love to know.
OpenCellID shows an LTE point in an agricultural field near me. There definitely isn't a cell tower there in the traditional sense of cell tower. There is an Emergency Call Box located there so maybe that is what is getting picked up?
Interesting to see the different "styles" present in different parts of the world. Europe is dense with very wide coverage, Japan has regions of very dense coverage that quickly give way to large voids as you get into the countryside (sharp contrasts between urban and rural), and North America is somewhere in between.
A few weeks ago I discovered a Python library called Vaex. It can be used for loading large datasets. IIRC, you can see a similar visualization in this video [1].
Okay the world looks extremely well connected. What is Starlink's potential user base? Are there a lot of people in the dark parts of the map?
There's this tendency of maps showing something about humans actually being a population maps simply because the stuff displayed happens where human activity happens.
This is just a map of cell towers. Many people with cell service in their area might not have access to a broadband internet service. Internet access via cellular doesn’t really compare in terms of costs and speed/latency. (At least in the US, cost per GB over cellular is way too high)
> Take a look at Lagos, Nigeria. Population is ~15m for ~80k towers. Only 1.4k (1.7%) of them are 4G LTE with the remaining either 3G or CDMA.
Isn't the solution for Lagos just to build better infrastructure? Monetizing large and poor urban centers with satellites doesn't make too much sense to me. I thought Starlink was for rural areas where cable isn't feasible. I would imagine most consumers there can't afford an American broadband service and Starlink doesn't want to use its bandwidth for customers paying highly discounted rates.
I’m really curious how much space a png rendered set of tiles would be. He mentions that the oceans compress well, but the usual method is to simply not render detailed tiles in ocean regions.
I think the is rather that there's no pre rendering of the tiles serverside, even dynamically. Its all client side. Ie, updates should just require a dataset update, not a regeneration of map tiles for a tile store in the case of pre rendering. And no need for a spatial server.
Judging from the data requested, there are essentially either prerendered blocks of data, or they're live API calls. So there's still a data transform step.
The data that's coming down looks to be bigger than I'd expect for a PNG tile.
On the other hand, it's a pretty cool way to do a multiband raster.
This is beautiful data visualization and would make a great metal poster (e.g. displate). Have you considered selling merch made with this data? I am sure it would sell.
There's pockets in more places. A handful of countries had fixed wireless CDMA for home phones where it was difficult to install wires, and many of them have opened up regulations for those carriers to do mobile CDMA as well.
Mexico (e.g., Guadalajara), the Caribbean (particularly adjacent to Puerto Rico), and northern Colombia and Venezuela seem to have pockets of CDMA as well.
Almost all 5G deployals around the world are 5G non-standalone; they have 4G LTE basestations doing handset control and 5G modulations (on their own frequency span) for data transfer.
Unrelated, this can't be a map of cell phone towers. It's probably a map of cell phone basestation locations.
OK, thanks for that. I was wondering whether there was a way to break out the 5G from 4G in the visualisation. Also, I'd thought (perhaps wrongly) that many more 5G stations were necessary for coverage in a given area than 4G/3G because of the shorter physical range.
5G doesn't imply a frequency. For example, in my region 5G non-standalone from T-mobile uses a 20 MHz band around 630 MHz. That's even lower in frequency and with better propagation than most bands chosen for 4G LTE.
5G modulations themselves improve upon 4G LTE standards by about 15-20% hertz for hertz. That means that in order to get more speed they can't use the same amount of spectrum. For >20% improvement they need to use more of the electromagnetic spectrum. That usually means using higher frequencies that don't propagate as well. But it is nothing intrinsic to the 5G modulation.
I was browsing the forum of the data source -- looks like there are some users expressing that the China data is significantly out of date. I would bet that the applications which collect this data are not common on the other side of the firewall.
There's an entire subreddit for sharing maps that try to draw conclusions from maps that end up just being proxies for population density: https://www.reddit.com/r/PeopleLiveInCities/
This probably counts cells (i.e. a cell will be a service from an antenna facing in a specific direction broadcasting on a specific frequency) rather than towers. One tower can operate several cells--especially true for 3G and 4G where many carriers now do carrier aggregation across more than one frequency (and thus more than one cell). My local tower for one operator alone has 12x 3G cells (3 antennas facing N/SE/SW which each carries 2x 900 MHz carriers and 2x 2100 MHz carriers). For 4G the same 3 antennas carries 700 MHz, 1800 MHz, 2100 MHz and 2600 MHz services (for a total of 12 cells). So it adds up pretty quickly.
It makes sense that the towers are installed where people are, but note that this only holds true for first world nations. Africa has plenty of underserved areas. Or go and see if you can find the border between North and South Korea. You can also see the border between India and China quite clearly.
This seems like it could be an awesome application of an cloud-optimized geotiff (COGs) for serverless tiling. I'm curious if you ran across this tech in your research?
I'm not sure where your project will take you, but I'd encourage you to continue! I got a lot of exposure to the vis.gl community when I worked at Uber, and still contribute - Here are some relevant links you may get ideas from.
COG demo: landsat8.earth
GPU tile processing: https://kylebarron.dev/deck.gl-raster/overview/
Elevation tile decoding (also uses workers): https://loaders.gl/modules/terrain/docs/api-reference/terrai...