Sightline

March 1, 2026 · View on GitHub

Geospatial infrastructure intelligence platform for discovering and analyzing physical-world assets using OpenStreetMap data.

screenshot2 screenshot

Overview

Sightline enables searching, monitoring, and analyzing real-world infrastructure including:

  • Telecommunications towers and data centers
  • Power plants, substations, and energy storage
  • Airports, helipads, and cable transport (gondolas, funiculars)
  • Ports, harbours, piers, and maritime facilities
  • Warehouses and industrial facilities
  • Pipelines, refineries, and energy infrastructure
  • Military installations
  • Hospitals, prisons, embassies, and government facilities
  • Surveillance cameras and emergency infrastructure
  • Transportation hubs (train stations, bus stations, taxi stands)

And many more asset types across 30+ categories with over 200 searchable infrastructure types.

Architecture

flowchart TB
    classDef frontend fill:#6366f1,stroke:#4338ca,color:#fff
    classDef backend fill:#0ea5e9,stroke:#0284c7,color:#fff
    classDef external fill:#f59e0b,stroke:#d97706,color:#fff

    subgraph FE["Frontend"]
        SearchBar["SearchBar"]
        Filters["Filters"]
        ResultList["ResultList"]
        MapView["MapView — Leaflet.js"]
    end

    subgraph BE["Backend"]
        route["route.ts — Request Handler"]
        parser["parser.ts — NLP Engine"]
        geo["geo.ts — Geocoding"]
        overpass["overpass.ts — OSM Query Builder"]
        cache["cache.ts — Cache Layer"]
    end

    subgraph EX["External APIs"]
        Nominatim["Nominatim — Geocoding API"]
        OverpassAPI["Overpass API — OSM Data"]
    end

    SearchBar & Filters & ResultList & MapView -->|"POST /api/search"| route

    route -->|"parse query"| parser
    route -->|"resolve location"| geo
    route -->|"fetch POIs"| overpass
    route <-->|"read / write"| cache

    geo -->|"geocode"| Nominatim
    overpass -->|"QL query"| OverpassAPI

    class SearchBar,Filters,ResultList,MapView frontend
    class route,parser,geo,overpass,cache backend
    class Nominatim,OverpassAPI external

Data Sources

OpenStreetMap

All infrastructure data comes from OpenStreetMap, a collaborative mapping project. OSM data is crowd-sourced and may contain inaccuracies or gaps.

Nominatim

Geographic resolution uses the Nominatim geocoding service to convert place names to bounding boxes and coordinates.

Overpass API

Infrastructure queries execute against the Overpass API, which provides read-only access to OSM data.

Query Syntax

Natural Language

telecom towers in karnataka
power plants near mumbai
data centers in california
airports in germany

Structured Queries

type:telecom operator:airtel region:karnataka
type:data_center operator:google
type:substation region:texas
type:airport country:france

Supported Parameters

ParameterDescriptionExample
type:Asset typetype:power_plant
operator:Operator/owneroperator:google
region:State/regionregion:bavaria
country:Countrycountry:india
near:Proximity searchnear:london
radius:Search radius (km)radius:100

Supported Asset Types

Energy & Power

TypeAliasesDescription
power_plantpowerplantPower generation facilities
substation-Electrical substations
transformer-Power transformers
converter-Power converters
switch-Power switches
power_line-High voltage power lines
power_pole-Power distribution poles
solar-Solar farms and panels
wind-Wind farms and turbines
nuclearnuclear_siteNuclear power plants
hydroelectric-Hydroelectric plants
geothermal-Geothermal plants
coal-Coal power plants
gas_power-Gas power plants
oil_power-Oil power plants
biogas-Biogas plants
biomass-Biomass plants
tidal-Tidal power plants
battery_storage-Battery energy storage

Telecommunications

TypeAliasesDescription
telecomtowerTelecom towers
antenna-Antennas
mast-Communication masts
cell_tower-Mobile cell towers
radio_tower-Radio transmission towers
broadcast_tower-TV/Radio broadcast towers
satellite_dish-Satellite dishes
telephone_exchange-Telephone exchanges
data_centerdatacenterData centers

Oil, Gas & Mining

TypeAliasesDescription
refinery-Oil refineries
pipeline-Pipelines
oil_well-Oil extraction wells
gas_well-Gas extraction wells
storage_tank-Fuel/liquid storage tanks
silo-Storage silos
gasometer-Gas storage tanks
quarrymineQuarries and mines
landfill-Landfill sites
scrap_yard-Scrap yards

Water & Utilities

TypeAliasesDescription
water_tower-Water towers
water_treatment-Water treatment plants
wastewatersewage, sewage_plantWastewater plants
dam-Dams
reservoir-Reservoirs
pumping_station-Water pumping stations
water_well-Water wells

Aviation

TypeAliasesDescription
airport-Airports
helipad-Helipads
airfield-Military/private airfields
runway-Airport runways
taxiway-Airport taxiways
terminal-Airport terminals
hangar-Aircraft hangars
atc_tower-Air traffic control towers

Maritime

TypeAliasesDescription
portseaportPorts and seaports
harbour-Harbours
ferry_terminal-Ferry terminals
marina-Marinas
shipyard-Shipyards
dock-Docks
lighthouse-Lighthouses
pier-Piers
jetty-Jetties
slipway-Boat slipways
mooring-Moorings
boat_lift-Boat lifts

Rail & Transit

TypeAliasesDescription
train_station-Train stations
railyardrail_yardRail yards
metro-Metro/subway stations
tram_stop-Tram stops
halt-Railway halts
level_crossing-Level crossings
bus_station-Bus stations
parking-Parking facilities
toll_booth-Toll booths
weigh_station-Truck weigh stations
rest_area-Highway rest areas
service_area-Highway service areas

Structures

TypeAliasesDescription
building-General buildings
bridge-Bridges
tunnel-Tunnels
cooling_tower-Cooling towers
chimney-Industrial chimneys
crane-Cranes
windmill-Windmills
watermill-Watermills
clock_tower-Clock towers
bell_tower-Bell towers

Industrial & Commercial

TypeAliasesDescription
warehouse-Warehouses
factory-Factories
industrial-Industrial zones
works-Industrial works
depot-Depots
brewery-Breweries
distillery-Distilleries
sawmill-Sawmills
slaughterhouse-Slaughterhouses
recycling_plantrecyclingRecycling plants

Military & Defense

TypeAliasesDescription
military-Military installations
bunker-Bunkers
barracks-Military barracks
naval_base-Naval bases
range-Firing/shooting ranges
checkpoint-Military checkpoints
radar-Radar installations

Government & Public Safety

TypeAliasesDescription
embassy-Embassies
courthouse-Courthouses
townhall-Town halls
government-Government offices
customs-Customs offices
tax_office-Tax offices
border_control-Border control points
police-Police stations
fire_station-Fire stations
prison-Prisons
ambulance_station-Ambulance stations
rescue_station-Rescue stations
coast_guard-Coast guard stations
emergency_phone-Emergency phones
fire_hydrant-Fire hydrants
lifeguard-Lifeguard stations
surveillance_cameracctvSurveillance cameras

Education & Research

TypeAliasesDescription
school-Schools
university-Universities
college-Colleges
kindergarten-Kindergartens
driving_school-Driving schools
research-Research institutes
library-Libraries

Healthcare

TypeAliasesDescription
hospital-Hospitals
clinic-Clinics
pharmacy-Pharmacies
dentist-Dental practices
veterinary-Veterinary clinics
nursing_home-Nursing homes
hospice-Hospices
blood_bank-Blood banks

Culture & Entertainment

TypeAliasesDescription
museum-Museums
theatre-Theatres
cinema-Cinemas
stadium-Stadiums
sports_centre-Sports centres
swimming_pool-Swimming pools
golf_course-Golf courses
racetrack-Racetracks
ice_rink-Ice rinks

Tourism & Leisure

TypeAliasesDescription
hotel-Hotels
campsite-Campsites
caravan_site-Caravan sites
theme_park-Theme parks
zoo-Zoos
aquarium-Aquariums
viewpoint-Viewpoints
attraction-Tourist attractions
information-Tourist information centers
picnic_site-Picnic sites

Religious

TypeAliasesDescription
church-Churches
mosque-Mosques
temple-Temples
synagogue-Synagogues
place_of_worship-General places of worship
cemetery-Cemeteries

Historic

TypeAliasesDescription
monument-Monuments
memorial-Memorials
castle-Castles
fort-Forts
ruins-Ruins
archaeological_site-Archaeological sites
observatory-Observatories

Agriculture

TypeAliasesDescription
farm-Farms
greenhouse-Greenhouses
orchard-Orchards
vineyard-Vineyards

Services

TypeAliasesDescription
bank-Banks
atm-ATMs
post_office-Post offices
post_box-Post boxes
fuelgas_station, petrolFuel stations
charging_station-EV charging stations
taxi_stand-Taxi stands
car_wash-Car washes
bicycle_repair-Bicycle repair stations

Public Utilities

TypeAliasesDescription
bicycle_parking-Bicycle parking
drinking_water-Drinking water fountains
public_toilet-Public toilets
bench-Public benches
waste_basket-Waste baskets
street_lamp-Street lamps
traffic_signals-Traffic signals
telephone-Public telephones

Cable Transport

TypeAliasesDescription
aerialway-Cable cars
gondola-Gondolas
funicular-Funiculars
chairlift-Chairlifts

Emergency Infrastructure (Additional)

TypeAliasesDescription
siren-Emergency sirens
defibrillator-Public defibrillators
assembly_point-Emergency assembly points
life_ring-Life rings

Commercial & Retail

TypeAliasesDescription
supermarket-Supermarkets
mall-Shopping malls
marketplace-Marketplaces

Shared Mobility

TypeAliasesDescription
bicycle_rental-Bike sharing stations
car_sharing-Car sharing locations

Science & Research (Additional)

TypeAliasesDescription
planetarium-Planetariums
laboratory-Laboratories

Construction

TypeAliasesDescription
construction_site-Construction sites

Food & Beverage Production

TypeAliasesDescription
winery-Wineries
bakery-Bakeries
dairy-Dairies

Food Services

TypeAliasesDescription
restaurant-Restaurants
cafe-Cafes
fast_food-Fast food restaurants

Recreation

TypeAliasesDescription
playground-Playgrounds
park-Parks
pitch-Sports pitches

Water Features

TypeAliasesDescription
fountain-Fountains
waterfall-Waterfalls
hot_spring-Hot springs

Monitoring & Weather

TypeAliasesDescription
monitoring_station-Environmental monitoring
weather_station-Weather stations

Community Facilities

TypeAliasesDescription
community_centre-Community centres
social_facility-Social facilities
shelter-Public shelters

Development

Prerequisites

  • Node.js 18+
  • npm

Setup

npm install
npm run dev

Open http://localhost:3000.

Project Structure

app/
├── page.tsx              # Main application page
├── layout.tsx            # Root layout
├── globals.css           # Global styles
└── api/
    └── search/
        └── route.ts      # Search API endpoint

components/
├── SearchBar.tsx         # Query input
├── Filters.tsx           # Filter sidebar
├── ResultList.tsx        # Results display
├── MapView.tsx           # Leaflet map
├── ShareButton.tsx       # Share functionality
└── ui/
    └── scroll-area.tsx   # UI components

lib/
├── types.ts              # Type definitions
├── parser.ts             # Query parsing and NLP
├── geo.ts                # Nominatim integration
├── overpass.ts           # Overpass API queries
├── cache.ts              # In-memory caching
├── search-index.ts       # Search indexing

Deployment

Vercel

npm install -g vercel
vercel

Environment Variables

No environment variables required. The application uses public OpenStreetMap APIs.

API Rate Limits

  • Nominatim: 1 request/second (enforced by Nominatim usage policy)
  • Overpass API: Fair use, avoid heavy queries

Responsible Use

This tool accesses publicly available OpenStreetMap data. Users must:

  1. Respect OpenStreetMap's tile usage policy
  2. Respect Nominatim usage policy
  3. Respect Overpass API usage policy
  4. Not use this tool for illegal surveillance or harmful purposes
  5. Acknowledge that OSM data may be incomplete or inaccurate
  6. Not perform bulk automated queries that overload public infrastructure
  7. For issues regarding the map, please refer to https://www.openstreetmap.org/fixthemap

The presence or absence of infrastructure in OSM should not be taken as authoritative. Always verify critical information through official sources.

License

MIT