WallpaperMachine
The wallpapers you love. A new home on your Mac.
Find the best drone launch spots and see where you can fly within line-of-sight - real elevation, satellite tree cover, and FAA airspace ceilings.
LifestyleJavaScript · CSSGitHub @lperezmoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Find the best drone launch spots and where you can fly within line-of-sight - viewshed over real elevation + satellite tree cover, with FAA UAS Facility Map airspace ceilings. Vite + MapLibre + Three.js, deployable on Vercel.
Taken from the repository README
Loading the full README.
Read the full README ↗Find the best launch and pilot positions for any ground, and see where a drone can fly while staying in line-of-sight. Draw a box on the map (or search a place), and the app pulls real elevation and satellite imagery for that ground, fetches FAA airspace ceilings, runs a line-of-sight analysis, and ranks the spots that cover the most flyable ground, explained in plain English, with the legal altitude ceiling overlaid and a 3D view of the parcel.
No API keys. Everything runs on free, keyless data:
You draw the ground. Search to a location, then drag a rectangle over the area you want to fly or map (soft cap about 30 sq km).
The app builds the parcel. A Web Worker fetches elevation and imagery tiles, decodes a metric heightmap, and classifies a tree-canopy density mask (slope-suppressed so cliffs do not read as forest). Canopy matters: it occludes both visual line-of-sight and 2.4/5.8 GHz control and video signal.
It pulls airspace. The FAA UAS Facility Map ceilings (the LAANC grid) and nearby airports are fetched through the serverless proxy and rasterized onto the same grid, so every cell knows its published legal ceiling in feet AGL.
It scores every spot. For a grid of candidate launch and pilot positions it casts radial sightlines, with the pilot eye/antenna at ground plus your antenna height and the target being the drone flying at your chosen height above the ground. Terrain is the occluder, and the tree canopy is added on top when you ask signal to be blocked by trees. It then blends:
| Factor | What it rewards |
|---|---|
| Line-of-sight coverage | sees the most flyable ground within range (drone at your chosen flight height, terrain plus tree canopy as occluders) |
| Legal ceiling | more usable vertical airspace (higher published LAANC ceiling) |
| Launch pad quality | open, level ground for a clean takeoff and GPS lock |
| High ground | local prominence for better antenna line-of-sight |
| Obstruction clearance | clear of trees and terrain right at the launch point |
| Airspace safety | clear of controlled no-go cells and nearby airports |
You get ranked spots: a launch-suitability heatmap (red poor to cyan/green great), numbered pins, each spot's exact line-of-sight coverage footprint and the acres of flyable ground reachable from it, the legal ceiling at that spot, plain-English reasons, GPX and KML waypoint export, a translucent FAA ceiling overlay you can toggle on and off, and a 3D drape of the parcel with the launch point marked and a legal-ceiling lid.
Flight-style preset, line-of-sight range, pilot/antenna height, flight height
AGL, whether trees block signal, and the six factor weights are all tunable under
"Tune the analysis". Any drawn area produces a shareable URL (the bbox is encoded
in the link as ?bbox=...), so you can send a parcel to another pilot and it
re-runs on open.
Needs Bun 1.4 or newer.
bun install
bun run dev
Then open the printed localhost URL. bun run build produces the static site in
dist/. Vite is still the dev server and bundler; the scripts run it on the Bun
runtime. The /api/tiles and /api/airspace proxies run as Vercel serverless
functions in production and as Vite dev middleware locally (see vite.config.js),
so behavior is identical in both.
This repo is connected to Vercel, so pushing to the default branch deploys
automatically. To set it up fresh: import the repo into Vercel (framework preset
Vite), or run vercel from the repo root. vercel.json pins the install
(bun install --frozen-lockfile), the build and both serverless functions
(/api/tiles and /api/airspace).
bun run check runs the formatter, the linter and the build. bun fmt ships in
Bun 1.4.4, but bun lint only exists on Bun canary for now (bun upgrade --canary),
so CI runs both on canary and keeps the build job on the pinned Bun release.
This tool models line-of-sight and shows PUBLISHED LAANC ceilings from the FAA UAS Facility Maps. It is informational only.
Elevation: Mapzen/AWS Terrain Tiles. Imagery: Esri, Maxar, Earthstar Geographics. Airspace: FAA UAS Facility Maps. Geocoding: OpenStreetMap and Nominatim.