ni5arga/sightline

GitHub: ni5arga/sightline

基于 OpenStreetMap 数据的地理空间基础设施 OSINT 搜索引擎,支持自然语言查询和30余大类200多种资产类型的可视化发现与分析。

Stars: 353 | Forks: 50

# Sightline 利用 OpenStreetMap 数据发现和分析现实世界资产的地理空间基础设施智能平台。 ![screenshot2](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/cacaa79763231024.png) ![screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0809489b03231039.png) ## 概述 Sightline 支持搜索、监控和分析现实世界的基础设施,包括: - 电信塔和数据中心 - 发电厂、变电站和储能设施 - 机场、直升机停机坪和缆车运输(缆车、索道缆车) - 港口、海港、码头和海事设施 - 仓库和工业设施 - 管道、炼油厂和能源基础设施 - 军事设施 - 医院、监狱、大使馆和政府设施 - 监控摄像头和应急基础设施 - 交通枢纽(火车站、汽车站、出租车候客站) 以及横跨 30 多个类别、超过 200 种可搜索基础设施类型的更多资产类型。 ## 架构 ``` 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 ``` ## 数据来源 ### OpenStreetMap 所有基础设施数据均来自 [OpenStreetMap](https://www.openstreetmap.org/),这是一个协作地图项目。OSM 数据由众包产生,可能包含不准确或遗漏之处。 ### Nominatim 地理解析使用 [Nominatim](https://nominatim.openstreetmap.org/) 地理编码服务,将地名转换为边界框和坐标。 ### Overpass API 基础设施查询通过 [Overpass API](https://overpass-api.de/) 执行,该 API 提供对 OSM 数据的只读访问。 ## 查询语法 ### 自然语言 ``` telecom towers in karnataka power plants near mumbai data centers in california airports in germany ``` ### 结构化查询 ``` type:telecom operator:airtel region:karnataka type:data_center operator:google type:substation region:texas type:airport country:france ``` ### 支持的参数 | 参数 | 描述 | 示例 | |-----------|-------------|---------| | `type:` | 资产类型 | `type:power_plant` | | `operator:` | 运营商/所有者 | `operator:google` | | `region:` | 州/地区 | `region:bavaria` | | `country:` | 国家 | `country:india` | | `near:` | 邻近搜索 | `near:london` | | `radius:` | 搜索半径 (km) | `radius:100` | ### 支持的资产类型 #### 能源与电力 | 类型 | 别名 | 描述 | |------|---------|-------------| | `power_plant` | `powerplant` | 发电设施 | | `substation` | - | 变电站 | | `transformer` | - | 变压器 | | `converter` | - | 换流器 | | `switch` | - | 电力开关 | | `power_line` | - | 高压输电线 | | `power_pole` | - | 输电线杆 | | `solar` | - | 太阳能农场和太阳能板 | | `wind` | - | 风力发电场和风力涡轮机 | | `nuclear` | `nuclear_site` | 核电站 | | `hydroelectric` | - | 水力发电站 | | `geothermal` | - | 地热发电站 | | `coal` | - | 燃煤发电厂 | | `gas_power` | - | 燃气发电厂 | | `oil_power` | - | 燃油发电厂 | | `biogas` | - | 沼气发电厂 | | `biomass` | - | 生物质发电厂 | | `tidal` | - | 潮汐发电站 | | `battery_storage` | - | 电池储能设施 | #### 电信 | 类型 | 别名 | 描述 | |------|---------|-------------| | `telecom` | `tower` | 电信塔 | | `antenna` | - | 天线 | | `mast` | - | 通信桅杆 | | `cell_tower` | - | 移动基站铁塔 | | `radio_tower` | - | 无线电发射塔 | | `broadcast_tower` | - | 电视/广播发射塔 | | `satellite_dish` | - | 卫星接收天线 | | `telephone_exchange` | - | 电话交换局 | | `data_center` | `datacenter` | 数据中心 | #### 石油、天然气与采矿 | 类型 | 别名 | 描述 | |------|---------|-------------| | `refinery` | - | 炼油厂 | | `pipeline` | - | 管道 | | `oil_well` | - | 油井 | | `gas_well` | - | 天然气井 | | `storage_tank` | - | 燃料/液体储罐 | | `silo` | - | 储仓 | | `gasometer` | - | 储气罐 | | `quarry` | `mine` | 采石场和矿山 | | `landfill` | - | 垃圾填埋场 | | `scrap_yard` | - | 废品回收场 | #### 水务与公用设施 | 类型 | 别名 | 描述 | |------|---------|-------------| | `water_tower` | - | 水塔 | | `water_treatment` | - | 水处理厂 | | `wastewater` | `sewage`, `sewage_plant` | 污水处理厂 | | `dam` | - | 水坝 | | `reservoir` | - | 水库 | | `pumping_station` | - | 泵站 | | `water_well` | - | 水井 | #### 航空 | 类型 | 别名 | 描述 | |------|---------|-------------| | `airport` | - | 机场 | | `helipad` | - | 直升机停机坪 | | `airfield` | - | 军用/私人机场 | | `runway` | - | 机场跑道 | | `taxiway` | - | 机场滑行道 | | `terminal` | - | 机场航站楼 | | `hangar` | - | 飞机库 | | `atc_tower` | - | 空中交通管制塔台 | #### 海事 | 类型 | 别名 | 描述 | |------|---------|-------------| | `port` | `seaport` | 港口和海港 | | `harbour` | - | 港湾 | | `ferry_terminal` | - | 轮渡码头 | | `marina` | - | 游艇码头 | | `shipyard` | - | 造船厂 | | `dock` | - | 船坞 | | `lighthouse` | - | 灯塔 | | `pier` | - | 突堤码头 | | `jetty` | - | 防波堤/栈桥 | | `slipway` | - | 滑道 | | `mooring` | - | 系泊设施 | | `boat_lift` | - | 升船机 | #### 铁路与公共交通 | 类型 | 别名 | 描述 | |------|---------|-------------| | `train_station` | - | 火车站 | | `railyard` | `rail_yard` | 铁路编组站 | | `metro` | - | 地铁站 | | `tram_stop` | - | 有轨电车站 | | `halt` | - | 铁路乘降所 | | `level_crossing` | - | 铁路平交道口 | | `bus_station` | - | 长途汽车站 | | `parking` | - | 停车设施 | | `toll_booth` | - | 收费站 | | `weigh_station` | - | 卡车称重站 | | `rest_area` | - | 高速公路休息区 | | `service_area` | - | 高速公路服务区 | #### 建筑结构 | 类型 | 别名 | 描述 | |------|---------|-------------| | `building` | - | 通用建筑 | | `bridge` | - | 桥梁 | | `tunnel` | - | 隧道 | | `cooling_tower` | - | 冷却塔 | | `chimney` | - | 工业烟囱 | | `crane` | - | 起重机 | | `windmill` | - | 风车 | | `watermill` | - | 水车 | | `clock_tower` | - | 钟楼 | | `bell_tower` | - | 钟塔 | #### 工业与商业 | 类型 | 别名 | 描述 | |------|---------|-------------| | `warehouse` | - | 仓库 | | `factory` | - | 工厂 | | `industrial` | - | 工业区 | | `works` | - | 工业厂区 | | `depot` | - | 中转站/仓库 | | `brewery` | - | 啤酒厂 | | `distillery` | - | 蒸馏酒厂 | | `sawmill` | - | 锯木厂 | | `slaughterhouse` | - | 屠宰场 | | `recycling_plant` | `recycling` | 回收厂 | #### 军事与国防 | 类型 | 别名 | 描述 | |------|---------|-------------| | `military` | - | 军事设施 | | `bunker` | - | 地堡 | | `barracks` | - | 兵营 | | `naval_base` | - | 海军基地 | | `range` | - | 射击场 | | `checkpoint` | - | 军事检查站 | | `radar` | - | 雷达设施 | #### 政府与公共安全 | 类型 | 别名 | 描述 | |------|---------|-------------| | `embassy` | - | 大使馆 | | `courthouse` | - | 法院 | | `townhall` | - | 市政厅 | | `government` | - | 政府办公楼 | | `customs` | - | 海关 | | `tax_office` | - | 税务局 | | `border_control` | - | 边境检查站 | | `police` | - | 警察局 | | `fire_station` | - | 消防局 | | `prison` | - | 监狱 | | `ambulance_station` | - | 救护车站 | | `rescue_station` | - | 救援站 | | `coast_guard` | - | 海岸警卫队站 | | `emergency_phone` | - | 紧急电话 | | `fire_hydrant` | - | 消防栓 | | `lifeguard` | - | 救生员站 | | `surveillance_camera` | `cctv` | 监控摄像头 | #### 教育与科研 | 类型 | 别名 | 描述 | |------|---------|-------------| | `school` | - | 学校 | | `university` | - | 大学 | | `college` | - | 学院 | | `kindergarten` | - | 幼儿园 | | `driving_school` | - | 驾校 | | `research` | - | 研究所 | | `library` | - | 图书馆 | #### 医疗保健 | 类型 | 别名 | 描述 | |------|---------|-------------| | `hospital` | - | 医院 | | `clinic` | - | 诊所 | | `pharmacy` | - | 药店 | | `dentist` | - | 牙科诊所 | | `veterinary` | - | 兽医诊所 | | `nursing_home` | - | 养老院 | | `hospice` | - | 临终关怀医院 | | `blood_bank` | - | 血库 | #### 文化与娱乐 | 类型 | 别名 | 描述 | |------|---------|-------------| | `museum` | - | 博物馆 | | `theatre` | - | 剧院 | | `cinema` | - | 电影院 | | `stadium` | - | 体育场 | | `sports_centre` | - | 体育中心 | | `swimming_pool` | - | 游泳池 | | `golf_course` | - | 高尔夫球场 | | `racetrack` | - | 赛车场 | | `ice_rink` | - | 溜冰场 | #### 旅游与休闲 | 类型 | 别名 | 描述 | |------|---------|-------------| | `hotel` | - | 酒店 | | `campsite` | - | 露营地 | | `caravan_site` | - | 房车营地 | | `theme_park` | - | 主题公园 | | `zoo` | - | 动物园 | | `aquarium` | - | 水族馆 | | `viewpoint` | - | 观景点 | | `attraction` | - | 旅游景点 | | `information` | - | 游客信息中心 | | `picnic_site` | - | 野餐区 | #### 宗教 | 类型 | 别名 | 描述 | |------|---------|-------------| | `church | - | 教堂 | | `mosque` | - | 清真寺 | | `temple` | - | 寺庙 | | `synagogue` | - | 犹太教堂 | | `place_of_worship` | - | 通用宗教场所 | | `cemetery` | - | 墓地 | #### 历史遗迹 | 类型 | 别名 | 描述 | |------|---------|-------------| | `monument` | - | 纪念碑 | | `memorial` | - | 纪念物 | | `castle` | - | 城堡 | | `fort` | - | 堡垒 | | `ruins` | - | 遗迹 | | `archaeological_site` | - | 考古遗址 | | `observatory` | - | 天文台 | #### 农业 | 类型 | 别名 | 描述 | |------|---------|-------------| | `farm` | - | 农场 | | `greenhouse` | - | 温室 | | `orchard` | - | 果园 | | `vineyard` | - | 葡萄园 | #### 服务业 | 类型 | 别名 | 描述 | |------|---------|-------------| | `bank` | - | 银行 | | `atm` | - | 自动取款机 (ATM) | | `post_office` | - | 邮局 | | `post_box` | - | 邮筒 | | `fuel` | `gas_station`, `petrol` | 加油站 | | `charging_station` | - | 电动车充电站 | | `taxi_stand` | - | 出租车候客站 | | `car_wash` | - | 洗车场 | | `bicycle_repair` | - | 自行车维修站 | #### 公共设施 | 类型 | 别名 | 描述 | |------|---------|-------------| | `bicycle_parking` | - | 自行车停车区 | | `drinking_water` | - | 饮水台 | | `public_toilet` | - | 公共厕所 | | `bench` | - | 公共长椅 | | `waste_basket` | - | 垃圾箱 | | `street_lamp` | - | 路灯 | | `traffic_signals` | - | 交通信号灯 | | `telephone` | - | 公共电话 | #### 缆车运输 | 类型 | 别名 | 描述 | |------|---------|-------------| | `aerialway` | - | 缆车 | | `gondola` | - | 吊厢式缆车 | | `funicular` | - | 缆索铁路 | | `chairlift` | - | 吊椅式索道 | #### 应急基础设施(补充) | 类型 | 别名 | 描述 | |------|---------|-------------| | `siren` | - | 紧急警报器 | | `defibrillator` | - | 公共除颤器 | | `assembly_point` | - | 紧急集合点 | | `life_ring` | - | 救生圈 | #### 商业与零售 | 类型 | 别名 | 描述 | |------|---------|-------------| | `supermarket` | - | 超市 | | `mall` | - | 购物中心 | | `marketplace` | - | 集市 | #### 共享出行 | 类型 | 别名 | 描述 | |------|---------|-------------| | `bicycle_rental` | - | 共享单车停放点 | | `car_sharing` | - | 共享汽车站点 | #### 科学与研究(补充) | 类型 | 别名 | 描述 | |------|---------|-------------| | `planetarium` | - | 天文馆 | | `laboratory` | - | 实验室 | #### 建筑施工 | 类型 | 别名 | 描述 | |------|---------|-------------| | `construction_site` | - | 建筑工地 | #### 食品与饮料生产 | 类型 | 别名 | 描述 | |------|---------|-------------| | `winery` | - | 酿酒厂 | | `bakery` | - | 面包店 | | `dairy` | - | 乳制品厂 | #### 餐饮服务 | 类型 | 别名 | 描述 | |------|---------|-------------| | `restaurant` | - | 餐厅 | | `cafe` | - | 咖啡馆 | | `fast_food` | - | 快餐店 | #### 休闲娱乐 | 类型 | 别名 | 描述 | |------|---------|-------------| | `playground` | - | 游乐场 | | `park` | - | 公园 | | `pitch` | - | 运动场 | #### 水体景观 | 类型 | 别名 | 描述 | |------|---------|-------------| | `fountain` | - | 喷泉 | | `waterfall` | - | 瀑布 | | `hot_spring` | - | 温泉 | #### 监测与气象 | 类型 | 别名 | 描述 | |------|---------|-------------| | `monitoring_station` | - | 环境监测站 | | `weather_station` | - | 气象站 | #### 社区设施 | 类型 | 别名 | 描述 | |------|---------|-------------| | `community_centre` | - | 社区中心 | | `social_facility` | - | 社会福利设施 | | `shelter` | - | 公共庇护所 | ## 开发 ### 前置条件 - Node.js 18+ - npm ### 安装说明 ``` npm install npm run dev ``` 打开 [http://localhost:3000](http://localhost:3000)。 ### 项目结构 ``` 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 ``` ## 部署 ### Vercel ``` npm install -g vercel vercel ``` ### 环境变量 无需环境变量。本应用使用公共的 OpenStreetMap API。 ### API 速率限制 - Nominatim: 1 次请求/秒(受 Nominatim 使用政策限制) - Overpass API: 合理使用,避免大量查询 ## 负责任地使用 本工具访问公开可用的 OpenStreetMap 数据。用户必须: 1. 遵守 [OpenStreetMap 的瓦片使用政策](https://operations.osmfoundation.org/policies/tiles/) 2. 遵守 [Nominatim 使用政策](https://operations.osmfoundation.org/policies/nominatim/) 3. 遵守 [Overpass API 使用政策](https://wiki.openstreetmap.org/wiki/Overpass_API#Public_Overpass_API_instances) 4. 不得将本工具用于非法监视或有害目的 5. 确认 OSM 数据可能不完整或不准确 6. 不得执行可能导致公共基础设施过载的批量自动查询 7. 有关地图的问题,请参考 [https://www.openstreetmap.org/fixthemap](https://www.openstreetmap.org/fixthemap) OSM 中基础设施的存在与否不应被视为权威信息。请务必通过官方来源核实关键信息。 ## 许可证 MIT
标签:ESC4, GEOINT, GIS, GitHub, HTTP/HTTPS抓包, Leaflet.js, MITM代理, NLP自然语言处理, OpenStreetMap, OSINT, OSM, Overpass API, 交通枢纽, 关键基础设施, 军事设施, 发电厂, 地图可视化, 地理空间情报, 地理编码, 基础设施监控, 实时处理, 应急设施, 态势感知, 搜索引擎, 数据中心, 物理安全, 电信塔, 监控摄像头, 目标定位, 空间数据分析, 自动化攻击