ADS-B Exposed

(adsb.exposed)

319 points | by keepamovin a day ago ago

76 comments

  • dkenyser a day ago

    Very cool project.

    Little bit of trivia regarding the "strange hole near Mexico City"[1] from the README.

    This is a 12-kilometer exclusion zone around the highly active Popocatépetl volcano to prevent incidents stemming from volcanic activity.

    [1] https://adsb.exposed/?zoom=9&lat=19.1139&lng=261.3813&query=...

  • madethemcry a day ago

    I missed the "About" link in the footer but still found my way to the repo [1], where the project is briefly explained including a ton of great example images. Thanks for that!

    > This website (technology demo) allows you to aggregate and visualize massive amounts of air traffic data. The data is hosted in a ClickHouse database and queried on the fly. You can tune the visualizations with custom SQL queries and drill-down from 50 billion records to individual data records.

    [1] https://github.com/ClickHouse/adsb.exposed/

  • lexlambda a day ago

    This is certainly missing some kind of legend explaining the colors of the lines, and what data is actually shown.

    Is "red" high or low velocity? And as an example, I do not understand what the "Boeing vs. Airbus" selection is trying to represent, as well as how "Altitude & Velocity" are supposed to be displayed at the same time.

    Project certainly requires a bit more care if any discussion should happen around it.

    • amiga386 a day ago

      Boeing vs Airbus:

          count() AS total,
          sum(desc LIKE 'BOEING%') AS boeing,
          sum(desc LIKE 'AIRBUS%') AS airbus,
          sum(NOT (desc LIKE 'BOEING%' OR desc LIKE 'AIRBUS%')) AS other,
      
          greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, total) AS max_total,
          greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, boeing) AS max_boeing,
          greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, airbus) AS max_airbus,
          greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, other) AS max_other,
      
          pow(total / max_total, 1/5) AS transparency,
      
          255 * (1 + transparency) / 2 AS alpha,
          pow(boeing, 1/5) * 256 DIV (1 + pow(max_boeing, 1/5)) AS red,
          pow(airbus, 1/5) * 256 DIV (1 + pow(max_airbus, 1/5)) AS green,
          pow(other, 1/5) * 256 DIV (1 + pow(max_other, 1/5)) AS blue
      
          SELECT round(red)::UInt8, round(green)::UInt8, round(blue)::UInt8, round(alpha)::UInt8
      
      The redder the pixel, the more Boeing planes there.

      The greener the pixel, the more Airbus planes there.

      The bluer the pixel, the more non-Boeing/Airbus planes there.

      The less transparent the pixel, the more planes in total.

      White means all planes fly there, yellow means Boeing and Airbus dominate, red means Boeing dominates, green means Airbus dominates, cyan means Airbus+others, magenta means Boeing+others, etc.

      • cameronh90 18 hours ago

        Around Heathrow at least, there seem to be a few paths where Airbus and Boeing both fly, but seem to be reporting slightly different offsets within that path.

        I wonder if that's a systemic difference in how they report their GPS position to ADS-B, or an actual real difference caused by slightly different autopilot systems, or something else?

        • dlgeek 12 hours ago

          Could be airlines that have a bias towards one or the other manufacturer, which results in a m'fr bias towards different origin/destination airports.

    • keepamovin a day ago

      I see you highlight that, but I believe the visualization is designed to be intuitive once you interact with it a bit—no legend stricty needed if you calibrate against what you already know.

      Pick a flight you know (maybe one near yer home) and play with the options -- what patterns emerge? Red draws attention, “Boeing vs. Airbus” compares data, while “Altitude & Velocity” combines them. Explore hands-on; discovery often makes insights click better than instructions.

  • zX41ZdbW a day ago

    Thanks for posting!

    I've recently added more datasets, "Places", "Birds", "Photos", and "You".

    Also, a hint - the rectangular selection tool lets you generate custom reports for a location.

    • bwestergard a day ago

      This is super cool.

      Where is the bird dataset coming from? I assumed ebird at first, but these datapoints don't map on to ebird hotspots...

      Also, where did you get the collection of creative commons licensed bird species photos?

      • zX41ZdbW 18 hours ago

        The main birds dataset is from eBird, and the photos are from Wikipedia.

    • metrix a day ago

      what's going on around colorado springs with these shapes?

      https://adsb.exposed/?dataset=Planes&zoom=9&lat=38.2165&lng=...

      • cluckindan 20 hours ago

        The ”race tracks” are left- and right-hand traffic patterns for arriving aircraft and touch-and-go training, typically used by smaller aircraft. The polylines going from airport to the surroundings are IFR (instrument flight rules) STARs (standard terminal arrival routes) for inbound/outbound planes; each vertex in the line corresponds to a so-called navigation star which usually has a 5-letter name.

      • compass_copium a day ago

        Possibly training flights; they will often do racetrack shapes like that for long periods to maintain proficiency with the aircraft type.

    • etskinner a day ago

      What is "You"? I tried reading the query to understand but couldn't figure it out

      • zX41ZdbW a day ago

        I'd like it if you try to guess :)

        But it is easy to figure it out from the source code. The source code is here: https://github.com/ClickHouse/adsb.exposed/blob/main/index.h...

        • etskinner a day ago

          Apparently my 'easy' isn't the same as yours. There's nothing I could find in the code that describes what it is. You'd have to make a pretty big logic leap to figure it out. All you can see in the code (in config.js, not in index.html) is the dataset url (random string) and the description "this website", which tells you very little.

          For anyone who just wants to skip to the answer, I found it in the pull requests / issues: https://github.com/ClickHouse/adsb.exposed/issues/47

        • dkenyser a day ago

          Interestingly it seems to line up quite well with population density maps.

      • mcpherrinm 18 hours ago

        It appears to be where "you" (website visitors) have loaded page tiles. I was able to draw a little picture on the map by zooming in and panning around!

        The PR introducing it is easier to read than the whole repo: https://github.com/ClickHouse/adsb.exposed/pull/48/files

    • CamperBob2 a day ago

      Awesome work, but please consider providing some contrast options. You can't see the country or continent boundaries unless they are full of tracks (or at least I can't.)

    • keepamovin a day ago

      Haha, great! Honestly where did you get some of these datasets? Birds????? :)

  • cozzyd a day ago

    We have a an ADS-B receiver at Summit Station in Greenland which we use to track airplanes that produce RFI we see in our experiment. I've considered sharing data (since nobody else seems to have data there) but the feeding instructions always scare me (run this script that downloads a bunch of random crap as sudo... no thanks).

    Please just give me a cURL command I can run... (perhaps some services have that, I haven't looked that hard).

    • toomuchtodo a day ago

      https://airplanes.live/get-started/

      (other sites are corporate or have sold out [adsbexchange], happy to contribute reasonable costs to get a feed, no affiliation, I just like sensor feeds, thank you for the offer and consideration)

    • btreesOfSpring a day ago

      Check out https://adsb.im

    • evil-olive 21 hours ago

      sdr-enthusiasts [0] produces some very nice self-contained Docker images as an alternative to the `curl | sudo bash` style of install script that plagues a lot of the ADSB ecosystem.

      most likely all you need is their "ultrafeeder" [1,2] image.

      0: https://sdr-enthusiasts.gitbook.io/ads-b

      1: https://sdr-enthusiasts.gitbook.io/ads-b/foundations/deploy-...

      2: https://github.com/sdr-enthusiasts/docker-adsb-ultrafeeder

    • rootusrootus a day ago

      You can get containerized feeders for services like fr24 (e.g. liggy1/fr24feed) but that may not meet your requirements since it's really intended to handle everything from the sdr to the API, not siphon off data you are collecting some other way and then feed it.

      • cozzyd a day ago

        Yeah I definitely don't want to run an opaque container either. We're already collecting and storing the data... I am happy to throw the data over via a udp socket or http request, but I don't want random software that we don't control running...

        • wiedehopf 14 hours ago

          If you're not comfortable running my readsb (fork of dump1090) which is the feed client used by live / lol / fi and some other sites, then you can probably just send them data using socat.

          Most of them will have port 30004 open for their ingest domain, usually feed.domain.com. Thus you'd hook up socat to 127.0.0.1:30005 (i assume you run dump1090 or readsb locally as a decoder). And make socat send that to feed.adsb.lol:30004 and/or feed.airplanes.live:30004

          If you're in a remote location, you don't need to worry about mlat-client as MLAT requires at least 4 receivers that receive common aircraft.

          • mcpherrinm 11 hours ago

            Is there a good documentation (or maybe code) reference to the protocols that get used here? Running readsb is fine enough by me, but I'm just interested in how these systems work. I see some mentions of a Beast format. And then there's the mlat-client too

          • cozzyd 13 hours ago

            Thanks! After doing some more digging I suspected something like this was the simplest solution! Thanks for confirming.

            • cozzyd 11 hours ago

              And to be clear, I'm not necessarily against running readsb I just don't want to run random bash scripts that mess with a running system...

              It looks like readsb is an evolution of dump1090 with potentially more features? I'll look into it when we consider reworking our software. For now I added a quick socat and I'll find out soon if it worked (no planes currently over Summit...). It would be nice if these websites advertised "Start feeding from your running dump1090 instance with socat tcp:localhost:30005 tcp:foo.bar:30004, here is a systemd service that does that."

              edit: it worked! airplanes.live now tracking QTR28V from Seattle to Doha.

              But to conserve bandwidth, it might make sense to send through a compressed ssh tunnel to something not in the middle of the Greenland ice sheet.

        • jonah-archive 21 hours ago

          I had the same concerns awhile back and ending up running a slightly modified version of https://github.com/wiedehopf/mlat-client -- not quite as simple as an http push, but much simpler than a containerized feed client.

          • wiedehopf 14 hours ago

            That's only MLAT though and won't feed the ADS-B data.

    • jjwiseman 16 hours ago

      It's good to be careful. A popular ADS-B network used to distribute a raspberry pi image that let the maintainers ssh into your machine whenever they wanted.

    • NoiseBert69 a day ago

      ADS-B is easy to receive with an 'rtlsdr' and opensource tools.

      • cozzyd a day ago

        Yeah we are receiving it and dumping it into a sqlite database per day, but we're not sharing it.

  • paulirish a day ago

    Over in r/ADSB, someone recently posted a 3D visualizer of live ADS-B data: https://objectiveunclear.com/airloom.html. A nice alternative to the standard 2D maps we're used to.

    • ctippett 20 hours ago

      Reminds me of the galaxy view in No Man's Sky. Very cool. It's also the type of visualisation I'd imagine would be perfect seen through the lens of a Vision Pro or similar.

  • blakesterz a day ago

    It took me a little while to figure this out, but it's pretty cool. Try the A-380 limit in the examples and it starts making sense pretty quick.

    Also, .exposed has been a TLD since 2014? I'm not sure I've seen another .exposed site.

    • zparky a day ago

      float.exposed is fun

  • ronbenton a day ago

    URL makes this sound like it’s supposed to be scandalous

    • lelandfe a day ago

      "ADS-B Massive Visualizer" is the right title per https://github.com/ClickHouse/adsb.exposed

    • keepamovin a day ago

      I know! I think the creator, brilliant as they must be, is not an English native speaker. Or perhaps they simply enjoy the controversy / provocation heh :)

      • ascorbic a day ago

        I think it's just a fun tld with the "adsb" domain available.

      • kevinsundar a day ago

        Eh I think the name kinda works from the perspective that it exposes patterns in adsb data. If you just glanced at adsb maps you wouldn't really see many of these patterns unless you stared at it for a very long time.

        • keepamovin 9 hours ago

          No I think the name works, too. I just understand there's always some people who will see it another way, haha :)

  • jjwiseman 16 hours ago

    Back when this first launched, I said it was like writing webgl shaders for ADS-B with SQL.

    And I made a custom GPT that could translate natural language queries to Clickhouse's query language: https://chatgpt.com/g/g-GfJuwxZFt-ads-b-exposed-expert

  • sryNot_ a day ago

    Issue with adsb is that very few outside Europe and the US share their signals, so any app will have partial validity, unless you use satellite feeds.

    • Havoc a day ago

      Last I looked at it coverage is pretty good for land globally? Sea less so.

      The bigger issue is that in first world buying a sdr dongle for giggles is viable while in poor countries less so. A raspberry and dongle is a substantial investment if you’re earning 1/20th of a US salary. Don’t think there is an issue with willingness to share data

    • keepamovin a day ago

      How to utilize sat feeds with open data? Across ADS-B track data (like OpenSky Network) South America, Africa and Oceania seem covered in addition to Europe and America, as does East Asia, and India. But China, and some parts of Central Asia and Middle East appear absent?

    • esseph a day ago

      A lot of people running SDRs send beacon info upstream on the internet.

    • computerfriend a day ago

      I have had no problem accessing ADSB data for various parts of Asia.

  • nickysielicki a day ago

    I love how you can clearly make out the VFR EAA approach going into Oshkosh from Ripon. It’s only one week out of the year, but there’s so much traffic in that week that it still stands out.

  • pradeepchhetri a day ago

    Very cool project indeed!

    I tried to check the kind of flights they flew in the world's dangerous airport (Lukla, Nepal)[0] and found they use ATR-72 series.

    [0] https://adsb.exposed/?dataset=Planes&zoom=12&lat=27.7136&lng...

  • amosj a day ago
  • swills 18 hours ago

    Highlighting an area, I see in the sidebar: Time: 2022-02-01 00:09:20.136 — 2023-12-07 22:46:41.480. Would be nice if it had newer data.

  • jmux a day ago

    this is super cool!

  • scrozier a day ago

    Eschew abbreviations!