pgx
AI 에이전트를 위한 경량 Postgres, Rust로 구현, 하나의 런타임에서 수천 개의 격리된 데이터베이스 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기대한민국 행정구역 지도 생성기 — SVG·PNG·편집 가능한 PPTX, 웹 도구·CLI·MCP 지원
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗웹에서든 Claude Code·Codex에서든 유용하게 쓰셨다면 GitHub Star로 응원해 주세요 ⭐. 다음 개선을 이어가는 데 큰 힘이 됩니다.
지도 이동·확대 조작 수정: 좌클릭 드래그로 지도 전체를 이동합니다. ‘하나씩 꾸미기’에서는 지역을 끌면 개별 이동, 빈 곳을 끌면 지도 이동입니다. Ctrl/⌘+휠은 지도 여백에서도 확대·축소하며, 전국 도트의 기본 색을 선명하게 조정했습니다. 업데이트된 화면 코드를 바로 받도록 캐시 버전도 갱신했습니다.
지역별 점 기본 표시 수정: 제주처럼 시도를 선택했을 때 점 하나만 나오던 문제를 고쳤습니다. 주변 지역 보기의 기본 단위를 읍면동으로 적용하고, 점 뒤에 옅은 경계를 유지하며 이름이 점을 가리지 않게 조정합니다. 점 지도 선택 시 주된 육지를 중심으로 화면을 맞추고 전체 맞춤·내보내기는 추자도·우도 등 모든 지역을 보존합니다.
읍면동 분석용 ‘지역별 점’: 표시한 행정구역 하나를 대표점 하나로 표현합니다. 읍면동 단위와 동별 CSV·엑셀 데이터를 선택하면 점 색과 이름·수치로 동별 차이를 볼 수 있습니다. 점은 실제 사건·거주 위치가 아니며, 리 단위는 현재 내장 데이터에 없습니다.
도트 지도 스타일: 지도 편집 → 디자인 → 도트에서 지역 내부를 작은 점으로 표현합니다. 지역별 색·데이터 색과 이름·수치를 유지하며, ‘이름 자리 → 양옆으로 모두 빼기’로 지시선을 붙일 수 있습니다. SVG·PNG·편집 가능한 PPTX 및 작업 저장을 지원합니다. 점 개수는 통계량을 뜻하지 않으며, 격자보다 작은 지역은 실제 윤곽을 보존합니다.
npm audit 경고 0개를 확인했습니다.웹 도구 바로 사용 · 기존 웹 화면은 새로고침해 주세요. 로컬 명령줄·MCP는 저장소에서 git pull 후 npm install로 업데이트합니다.
보고서와 PPT에 넣을 대한민국 지도를 만드는 도구입니다. 지역을 고르면 주변 시군과 함께 그리고, 인구 통계나 여론조사 표로 색을 칠하고, 주소로 핀을 찍어 SVG · PNG · PPTX 로 저장합니다. 브라우저에서 눌러 만들 수도 있고, 명령줄이나 Claude Code · Codex 에게 말로 시켜서 만들 수도 있습니다.
| 주변 지역 + 기본 통계 | 전국 시군구 | 육각 타일 지도 |
|---|---|---|
위 그림은 모두 node tools/krmap.mjs render ... 한 줄로 만들었습니다 (명령).
| 이런 경우 | 이렇게 |
|---|---|
| 지도 한두 장을 눌러서 만들고 싶다 | 웹 도구 — 바로 열기, 또는 web/index.html 을 브라우저로 열기 |
| 지금 바로 SVG 가 필요하다 | 미리 만든 SVG — svg/ 폴더의 521장 |
| 여러 장을 같은 형식으로, 또는 에이전트에게 맡기고 싶다 | 자동화 — krmap 명령줄, Claude Code · Codex |
https://worlyung.github.io/krmap/ 에서 바로 씁니다. 받아서 쓰려면 web/index.html 을 브라우저로 열면 됩니다. 설치도 서버도 필요 없습니다.
지도는 모두 브라우저 안에서 그려지고, 넣은 표나 주소는 어디에도 올라가지 않습니다(주소 검색만 OpenStreetMap 에 물어봅니다).
왼쪽에서 설정하면 오른쪽 미리보기가 바로 바뀌고, 위의 버튼으로 SVG · PNG · PPTX 를 저장합니다. 그림 비율(자동 · 16:9 · 4:3 · 1:1)은 미리보기 위에서 고릅니다.
설정판은 네 탭입니다.
| 탭 | 하는 일 |
|---|---|
| 지역 | 지도 방식(주변 지역 보기 / 영역 직접 고르기 / 전국), 지역 찾기, 주변 몇 겹 · 어느 단위, 안쪽 나누기, 일반구 나누기, 17개 시도 |
| 모양 | 디자인(기본 · 유리 · 입체 · 소프트 · 네온), 색 테마 6종 · 기준 색 하나로 · 추천 조합 · 색 직접 고르기, 고른 지역 띄우기(그림자), 이웃끼리 색 다르게, 배치(실제 · 벌려 놓기 · 네모 타일 · 육각 타일), 지역 이름(이름 자리: 지역 안 / 양옆으로 모두 빼기, 지시선) |
| 데이터 | 제목 · 부제 · 출처(데이터 출처 직접 쓰기), 기본 통계 / 내 표 / 지점 수로 색칠(기준, 면 색 / 원 크기, 단계 · 색, 이름 아래 보일 값), 색 그룹, 범례 |
| 지점 | 주소 · 좌표 목록 붙여넣기, 핀 모양 · 색 · 크기 · 이름, 분류별 색 |
그 밖에
대전, 유성구, 정자동처럼 일부만 써도 찾습니다. "중구"처럼 여러 곳인 이름은 "대전 중구"로.{지역} 을 쓰면 장마다 그 지역 이름으로 바뀝니다. 담은 장을 누르면 편집기로 불러옵니다.기본 통계 — 데이터 탭에서 "기본 통계"를 고르면 지표를 바로 고릅니다(시도 · 시군구 단위).
| 묶음 | 지표 |
|---|---|
| 인구 · 세대 | 총인구, 세대수, 세대당 인구, 남자 · 여자, 성비 |
| 연령대 | 0 |
| 변화 | 1년 전 대비 인구 증감 · 증감률 |
원본이 10세 단위라 법정 청년(19~34세) · 노인(65세 이상)은 만들 수 없어 실제 연령 구간으로 이름을 붙였습니다. 법정 기준이 필요하면 아래 "행정안전부 연령별 인구 파일"을 넣으세요.
내 표 — 엑셀에서 복사해 붙여넣거나 CSV 를 엽니다. 첫 열은 지역 이름이나 행정기관코드.
| 표 | 칠하는 법 |
|---|---|
| 숫자 열 (인구, 매출 …) | 고른 열의 값으로 3~7단계 (같은 개수씩 / 같은 간격), 색 7가지(색각 친화 포함) |
| 두 열 | A ÷ B 비율 (청년 수 ÷ 총인구 등) |
| 여론조사 (후보 · 정당 · 찬반별 %) | 1위 항목 색, 1 · 2위 차이가 작을수록 옅게 |
| 글자 열 (권역, 담당자 …) | 분류마다 다른 색 |
| 행정안전부 연령별 인구현황 (1세 단위) | 그대로 열면 청년(19~34세) · 노인(65세 이상) · 유소년 · 생산연령 수와 비율, 노령화지수를 계산 |
지점 핀 — 이름 ⇥ 주소 ⇥ 분류 또는 이름 ⇥ 위도, 경도 줄을 붙여넣습니다.
위도 · 경도는 정확한 자리에, 주소는 인터넷 주소 검색(OpenStreetMap)으로 찾습니다. 검색이 막힌 곳(claude.ai 화면 등)에서는 주소 속 동 · 시군구의 가운데에 대략 찍고, 어떻게 찾았는지 목록에 표시합니다.
삽입 → 그림으로 넣고 마우스 오른쪽 → 도형으로 변환하면 지역별 도형으로 풀립니다.웹 도구를 열지 않아도 쓸 수 있게 svg/ 에 521장을 만들어 두었습니다.
| 폴더 | 내용 | 예 |
|---|---|---|
01_전국 | 전국 시도(16 · 17개) / 시군구 / 시군구(일반구) | 전국_시도_17개.svg |
02_시도 | 시도 하나를 시군구로 나눈 지도 (광주 · 전라남도 포함 18장) | 대전광역시.svg |
03_시도_주변 | 시도 + 맞닿은 시군구 | 대전광역시_주변.svg |
04_시군구 | 시군구 하나를 읍면동으로 나눈 지도 | 경기_수원시.svg |
05_시군구_주변 | 시군구 + 맞닿은 시군구 | 대전_유성구_주변.svg |
06_타일 | 전국 시도(16 · 17개) · 시군구 네모 · 육각, 시도별 시군구 육각 | 서울특별시_시군구_육각.svg |
지역 <path> 에는 id="대전광역시_유성구" 처럼 이름이 붙어 있고, 그룹은 배경 / 주변 / 대상 / 대상_내부 / 시도경계 / 지명 으로 나뉩니다.
웹 도구와 같은 그리기 코드를 Node 에서 돌립니다. 설정(JSON) 하나가 지도 한 장이라, 같은 형식의 지도를 여러 장 만들거나 에이전트에게 맡기기 좋습니다.
npm install # Node 20 이상, 처음 한 번
npm test # 17개 확인 (인터넷 필요 없음)
krmap# 대전과 주변 시군, 60세 이상 비율로 칠하고 인구를 이름 아래에
node tools/krmap.mjs render --region 대전광역시 --stat "60세 이상 비율" --stat-labels pop \
--title "대전 주변 고령 인구" --source
# 충남 시군구 육각 타일 + 여론조사 표
node tools/krmap.mjs render --regions 충청남도 --unit 시군구 --layout 육각 --data 여론조사.csv --poll --format pptx
# 설정 파일로 (웹 도구에서 "작업 저장"한 파일도 됨)
node tools/krmap.mjs render spec.json --format png,pptx --out out/보고서
# 지역 안에 안 들어가는 이름은 지시선으로 (기본). 이름을 모두 양옆 줄로: --labels side
node tools/krmap.mjs render --national 시도 --stat yoyR --stat-labels yoyR --palette diverge --labels side
# 색 하나로 색 조합, 디자인 방식
node tools/krmap.mjs render --region 대전광역시 --stat old60R --base-color "#13A07F" --look 유리
# 원 크기 지도 · 확대 상자
node tools/krmap.mjs render --region 대전광역시 --stat pop --bubbles
node tools/krmap.mjs render --national 시군구 --insets all --stat old60R --aspect 16:9
# 여러 장을 PPTX 하나로: 시도마다 / 충남 시군마다
node tools/krmap.mjs render --each 시도 --stat old60R --title "{지역} 고령 인구"
node tools/krmap.mjs render --each 충청남도 --each-unit 시군구 --inner 읍면동 --title "{지역} 읍면동"
# 지도 없이 값만
node tools/krmap.mjs find 중구 # 같은 이름이 어디어디 있는지
node tools/krmap.mjs neighbors 대전광역시 --unit 시군구
node tools/krmap.mjs indicators # 기본 통계 지표 목록
node tools/krmap.mjs stats --in 경기도 --unit 시군구 --indicators pop,old60R
out/ 에 저장됩니다(git 에 올라가지 않음). 모든 명령에 --json 을 붙이면 결과가 JSON 입니다.node tools/krmap.mjs help. npm link 를 하면 krmap 으로 바로 부릅니다.npm install 로 함께 받는 프리텐다드로 그려서 어느 컴퓨터에서 만들어도 같고, 다른 글꼴을 쓰려면 --font 글꼴.ttf.설정(spec) 예:
{
"region": "대전광역시",
"stat": "60세 이상 비율",
"statLabels": ["pop"],
"theme": "코랄",
"title": "대전과 주변 시군의 고령 인구",
"source": true,
"formats": ["pptx", "png"],
"out": "out/대전_고령.pptx"
}
칸 전부(지도 방식, 모양, 데이터, 그룹, 핀 …)는 docs/automation.md 에 있습니다.
통계청 KOSIS 를 읽는 MCP 서버(예: Korean Stats MCP)를 함께 붙이면 "서울 자치구별 1인 가구 비율 지도 만들어줘"처럼 숫자 찾기부터 지도까지 한 번에 됩니다.
통계 MCP 가 준 결과를 data.rows 로 그대로 넘기고 표 ID 는 source 에 적습니다. 붙이는 법과 예시는 docs/automation.md.
이 폴더에서 Claude Code 를 열고 말로 시키면 됩니다.
대전이랑 주변 시군 고령 인구 지도 PPT 로 만들어줘 이 여론조사 표로 충남 시군 육각 타일 지도 그려줘
korea-map 스킬(.claude/skills/korea-map/)이 지역 이름 확인 → 지표 고르기 → 지도 만들기 → 결과 확인 순서를 알려 주고,
.mcp.json 에 적힌 MCP 서버가 처음 열 때 쓸지 묻습니다. 다른 폴더에서도 쓰려면:
claude mcp add korea-map --scope user -- node /절대/경로/tools/mcp-server.mjs
저장소 안에서는 AGENTS.md 를 읽고 명령줄을 바로 씁니다. MCP 로 붙이려면 ~/.codex/config.toml:
[mcp_servers.korea-map]
command = "node"
args = ["/절대/경로/tools/mcp-server.mjs"]
명령줄과 같은 엔진 위의 얇은 층입니다. 명령줄만으로도 충분하지만, MCP 로 붙이면
render_map 이 미리보기 그림을 결과에 함께 돌려줘서 에이전트가 지도를 보고 스스로 고칩니다.| 도구 | 하는 일 |
|---|---|
find_region | 이름 · 코드로 지역 찾기 (애매한 이름은 후보 목록) |
list_neighbors | 맞닿은 주변 지역 |
list_indicators · get_stats | 기본 통계 지표 목록 · 값 |
locate_pins | 주소 · 좌표가 어느 지역인지 |
render_map | 설정 → SVG · PNG · PPTX 파일 + 요약 + 미리보기 그림 |
map_spec_reference | 설정 설명서 (docs/automation.md) |
맨 위 그림 세 장은 이렇게 만들었습니다.
K="node tools/krmap.mjs render --format png --width 1000 --png-scale 1 --background --aspect 4:3"
$K --out docs/images/around.png --region 대전광역시 --stat old60R --stat-labels old60R --title "대전과 주변 시군" --subtitle "60세 이상 인구 비율" --source --theme 코랄
$K --out docs/images/national.png --national 시군구 --stat youngR --labels none --title "전국 시군구 20~39세 비율" --source
$K --out docs/images/tiles.png --regions 경기도 --unit 시군구 --layout 육각 --stat yoyR --palette diverge --title "경기도 시군 1년 인구 증감률"
경계 — 행정구역이 바뀌면 최신 경계로 다시 만듭니다.
pip install -r scripts/requirements.txt
python scripts/build_data.py # 최신 시점 (특정 시점: python scripts/build_data.py 20261001)
node scripts/export_svgs.js # svg/ 다시 만들기 (특정 지역만: node scripts/export_svgs.js 대전)
build_data.py 는 경계를 받아 web/data/base.js(시도 · 시군구), web/data/emd.js(읍면동)로 저장하고,
모든 단위 조합(시도 ↔ 시군구 ↔ 읍면동)의 인접 관계를 미리 계산합니다. 50m 이내로 맞닿으면 이웃입니다.
바다 건너 섬(제주, 울릉 등)은 맞닿은 지역이 없습니다.
전남광주통합특별시가 있는 시점이면 광주(29) · 전남(46)으로 나눈 경계와 인접표도 함께 만듭니다.기본 통계 — data/mois/ 의 행정안전부 월간 CSV(연령별인구현황, 주민등록인구및세대현황)에서 만듭니다.
새 달 파일을 주민등록 인구통계에서 받아 넣고 python scripts/build_stats.py 를 돌리면 web/data/stats.js 가 바뀝니다.
타일 배치 — 그릴 지역들의 실제 경계 안에 격자 칸을 깔고(칸 수가 지역 수보다 조금 많아지는 가장 큰 칸), 헝가리안 할당으로 지역마다 실제 위치에서 가장 가까운 칸을 줍니다(R geogrid 와 같은 방식). 전국 시도 타일만 알아보기 쉬운 고정 배치를 씁니다.
web/ 웹 도구 (index.html) 와 그리기 엔진
render.js 경계 → 장면 → SVG (브라우저 · Node 공용)
datafill.js 표 읽기 · 색칠
pins.js 주소 · 좌표 → 지도 위치
state.js 설정 → 그리기 옵션 (웹 · 명령줄 · MCP 공용)
pptx.js 장면 → PowerPoint 도형
app.js 웹 화면
data/ 경계 · 인접표 · 기본 통계 (scripts/ 가 만듦)
tools/ krmap 명령줄, MCP 서버, 테스트
svg/ 미리 만든 SVG 521장
scripts/ 경계 · 통계 · SVG 만들기
data/mois/ 행정안전부 인구통계 원본 CSV
docs/ 자동화 설명서, README 그림
.github/ 테스트(GitHub Actions) · 이슈 · PR 양식
.claude/skills/ Claude Code 스킬
AGENTS.md Codex 등 에이전트 안내
버그 제보 · 기능 제안 · 풀 리퀘스트를 반깁니다. CONTRIBUTING.md 를 먼저 봐 주세요.
web/vendor/pptxgen.bundle.js: PptxGenJS 4.0.1 (MIT).web/vendor/fonts/).Korea admin map makes maps of South Korea's administrative divisions (17 provinces · 250+ municipalities · 3,500+ neighbourhoods, boundaries as of 2026-10-01) as SVG, PNG and editable PPTX for reports and slides. Pick a region and its neighbours, colour it with the built-in population statistics or your own table (polls, sales, any CSV), drop pins by address, and export.
web/index.html in a browser — no install, no server.npm install, then node tools/krmap.mjs render --region 대전광역시 --stat old60R.tools/mcp-server.mjs (.mcp.json included). Pair it with a KOSIS statistics MCP to go from "map the share of one-person households by Seoul district" to a finished slide.Code is MIT. Boundary data: Statistics Korea SGIS (KOGL Type 1) via vuski/admdongkor (CC BY 4.0); population data: Ministry of the Interior and Safety (KOGL Type 1). See NOTICE.md.