pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證대한민국 행정구역 지도 생성기 — 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.