OpenStreetMap 데이터로 원하는 도시의 미니멀한 프린트용 지도 포스터를 만들고 색상 테마를 선택할 수 있는 Python 명령줄 도구입니다.
anvaka/city-roads
브라우저에서 OpenStreetMap 데이터를 사용해 선택한 도시의 모든 도로를 지도처럼 한 번에 시각화합니다.
- 스타
- 9,768
- 포크
- 751
- 열린 이슈
- 57
- 마지막 커밋
- 10일 전
어떤 프로젝트인가요?
city-roads는 도시의 모든 도로를 하나의 캔버스에 그립니다. 도시 이름을 입력하면 OpenStreetMap에서 Overpass API를 통해 도로 구간을 가져온 뒤, 스타일을 지정하고 작품으로 내보낼 수 있는 촘촘한 선화로 렌더링합니다.
다운로드 속도를 높이기 위해 인구 10만 명이 넘는 도시 약 3,000곳의 캐시를 간단한 protobuf 형식으로 제공합니다. 도시 이름 검색에는 Nominatim을 사용하며, 앱은 캐시를 먼저 확인하고 해당 도시에 대한 데이터가 없으면 Overpass를 사용합니다.
또한 시각화를 바탕으로 사용자 지정 렌더링을 스크립팅할 수 있는 scene API를 제공합니다. 렌더링은 브라우저와 GPU 메모리의 제약을 받으므로, 주 전체와 같은 매우 넓은 지역을 렌더링하면 페이지가 충돌할 수 있습니다.
핵심 기능
- 01OpenStreetMap 데이터를 사용해 도시의 모든 도로를 하나의 시각화로 렌더링
- 02데이터 로딩 속도를 높이기 위해 대도시 약 3,000곳을 캐시
- 03Nominatim 검색을 통해 도시 이름 조회
- 04사용자 지정 렌더링을 스크립팅할 수 있는 scene API 제공
활용 사례
- 추상적인 도시 지도 포스터나 벽 장식 제작
- 도시의 도로 배치를 시각적으로 살펴보기
- scene API를 활용해 사용자 지정 지도 시각화 만들기
빠른 시작
- 1
종속 항목 설치
npm install - 2
핫 리로드가 적용되는 로컬 개발 서버 시작
npm run dev
사용 전 알아둘 점
- 매우 넓은 영역을 렌더링하면 메모리와 GPU 사용량에 따라 브라우저가 충돌하거나 성능이 낮은 기기에서 느려질 수 있습니다.
- 미국의 주 전체처럼 도로가 수백만 개 있는 지역을 선택하면 페이지가 충돌할 수 있습니다.
토픽
자주 묻는 질문
- city-roads은(는) 무엇인가요?
- 브라우저에서 OpenStreetMap 데이터를 사용해 선택한 도시의 모든 도로를 지도처럼 한 번에 시각화합니다. city-roads는 도시의 모든 도로를 하나의 캔버스에 그립니다. 도시 이름을 입력하면 OpenStreetMap에서 Overpass API를 통해 도로 구간을 가져온 뒤, 스타일을 지정하고 작품으로 내보낼 수 있는 촘촘한 선화로 렌더링합니다.
- city-roads은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- city-roads은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- city-roads은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. city-roads의 마지막 커밋은 2026년 10월 10일입니다.
- city-roads은(는) 어디에 사용할 수 있나요?
- 추상적인 도시 지도 포스터나 벽 장식 제작 도시의 도로 배치를 시각적으로 살펴보기 scene API를 활용해 사용자 지정 지도 시각화 만들기
- city-roads는 어떻게 설치하나요?
- 종속 항목 설치: npm install 핫 리로드가 적용되는 로컬 개발 서버 시작: npm run dev
- city-roads은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/anvaka/city-roads
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
WebGL과 WebGPU로 그래픽, 스프라이트, 텍스트를 그리는 빠른 웹용 2D 렌더링 라이브러리입니다.
타일, 벡터 데이터, 마커를 표시하는 인터랙티브 웹 지도를 만들기 위한 고성능 JavaScript 라이브러리입니다.
약 5KB에 의존성이 없는 WebGL 지구본 라이브러리로, 모든 DOM 요소를 마커로 연결할 수 있습니다.
그림과 다이어그램을 실제로 움직이게 만드는 코드 기반 애니메이션 에이전트 스킬
동영상을 ASCII 문자 또는 픽셀 블록 프레임으로 변환해 HTML5 Canvas 플레이어로 실시간 스트리밍하는 Python 및 JavaScript 엔진입니다.