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에서 가져옵니다. OSM 데이터는 크라우드소싱되며 부정확하거나 누락된 부분이 있을 수 있습니다.
Nominatim
지리적 해상도는 Nominatim 지오코딩 서비스를 사용하여 장소 이름을 경계 상자와 좌표로 변환합니다.
Overpass API
인프라 쿼리는 OSM 데이터에 대한 읽기 전용 액세스를 제공하는 Overpass API에 대해 실행됩니다.
쿼리 구문
자연어
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
지원되는 매개변수
지원되는 자산 유형
에너지 및 전력
통신
석유, 가스 및 광업
수도 및 유틸리티
항공
해양
철도 및 대중교통
구조물
산업 및 상업
군사 및 국방
정부 및 공공 안전
교육 및 연구
의료
문화 및 엔터테인먼트
관광 및 여가
종교
역사
농업
서비스
공공 유틸리티
케이블 운송
비상 인프라 (추가)
상업 및 소매
| 유형 | 별칭 | 설명 |
|---|
supermarket | - | 슈퍼마켓 |
mall | - | 쇼핑몰 |
|
공유 모빌리티
| 유형 | 별칭 | 설명 |
|---|
bicycle_rental | - | 자전거 대여소 |
car_sharing | - | 카셰어링 장소 |
과학 및 연구 (추가)
| 유형 | 별칭 | 설명 |
|---|
planetarium | - | 플라네타륨 |
laboratory | - | 연구실 |
건설
| 유형 | 별칭 | 설명 |
|---|
construction_site | - | 건설 현장 |
식음료 생산
| 유형 | 별칭 | 설명 |
|---|
winery | - | 와이너리 |
bakery | - | 제과점 |
|
식품 서비스
| 유형 | 별칭 | 설명 |
|---|
restaurant | - | 레스토랑 |
cafe | - | 카페 |
|
레크리에이션
| 유형 | 별칭 | 설명 |
|---|
playground | - | 놀이터 |
park | - | 공원 |
|
수자원 시설
| 유형 | 별칭 | 설명 |
|---|
fountain | - | 분수 |
waterfall | - | 폭포 |
|
모니터링 및 기상
| 유형 | 별칭 | 설명 |
|---|
monitoring_station | - | 환경 모니터링 |
weather_station | - | 기상 관측소 |
커뮤니티 시설
| 유형 | 별칭 | 설명 |
|---|
community_centre | - | 커뮤니티 센터 |
social_facility | - |
개발
사전 요구 사항
설정
브라우저에서 http://localhost:3000을 엽니다.
프로젝트 구조
app/
├── page.tsx # 메인 애플리케이션 페이지
├── layout.tsx # 루트 레이아웃
├── globals.css # 전역 스타일
└── api/
└── search/
└── route.ts # 검색 API 엔드포인트
components/
├── SearchBar.tsx # 쿼리 입력
├── Filters.tsx # 필터 사이드바
├── ResultList.tsx # 결과 표시
├── MapView.tsx # 리플릿 지도
├── ShareButton.tsx # 공유 기능
└── ui/
└── scroll-area.tsx # UI 컴포넌트
lib/
├── types.ts # 타입 정의
├── parser.ts # 쿼리 파싱 및 NLP
├── geo.ts # Nominatim 연동
├── overpass.ts # Overpass API 쿼리
├── cache.ts # 메모리 내 캐싱
├── search-index.ts # 검색 인덱싱
배포
Vercel
npm install -g vercel
vercel
환경 변수
환경 변수가 필요하지 않습니다. 애플리케이션은 공개 OpenStreetMap API를 사용합니다.
API 요청 제한
- Nominatim: 초당 1회 요청 (Nominatim 사용 정책에 따라 적용)
- Overpass API: 합리적 사용, 과도한 쿼리 피해야 함
책임 있는 사용
이 도구는 공개적으로 이용 가능한 OpenStreetMap 데이터에 접근합니다. 사용자는 다음을 준수해야 합니다:
- OpenStreetMap 타일 사용 정책 존중
- Nominatim 사용 정책 존중
- Overpass API 사용 정책 존중
- 불법 감시나 유해한 목적으로 이 도구를 사용하지 않아야 함
- OSM 데이터가 불완전하거나 부정확할 수 있음을 인정해야 함
- 공공 인프라에 과부하를 주는 대량 자동 쿼리를 수행하지 않아야 함
- 지도 관련 문제가 있을 경우 https://www.openstreetmap.org/fixthemap을 참조하세요
OSM에서 인프라의 존재 유무를 권위 있는 정보로 받아들여서는 안 됩니다. 중요한 정보는 항상 공식 출처를 통해 확인하세요.
라이선스
MIT