ni5arga/sightline
GitHub: ni5arga/sightline
基于 OpenStreetMap 数据的地理空间基础设施 OSINT 搜索引擎,支持自然语言查询和30余大类200多种资产类型的可视化发现与分析。
Stars: 353 | Forks: 50
# Sightline
利用 OpenStreetMap 数据发现和分析现实世界资产的地理空间基础设施智能平台。


## 概述
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, 交通枢纽, 关键基础设施, 军事设施, 发电厂, 地图可视化, 地理空间情报, 地理编码, 基础设施监控, 实时处理, 应急设施, 态势感知, 搜索引擎, 数据中心, 物理安全, 电信塔, 监控摄像头, 目标定位, 空间数据分析, 自动化攻击