{
  "schema": "k-tour.open-global-map-sources.v1",
  "generated_at": "2026-04-26T23:02:29Z",
  "principle_ko": "한국은 공공데이터·공공 API를 쓰고, 해외는 그 나라 공공·공식 오픈데이터와 라이선스가 분명한 오픈 지도만 쓰며, 타사 플랫폼 API를 공식 데이터 소스로 삼지 않습니다.",
  "description_ko": "무료·오픈 지도·지리데이터 소스 카탈로그(키 미포함). 한국은 공공데이터·공공 API를 쓰고, 해외는 그 나라 공공·공식 오픈데이터와 라이선스가 분명한 오픈 지도만 쓰며, 타사 플랫폼 API를 공식 데이터 소스로 삼지 않습니다. 대한민국 공공 API는 포털 발급 후 서버 로컬 설정으로만 연동합니다.",
  "description_en": "Curated free/open map & geodata sources. No secrets. Korea: public APIs via portal + server-side only. Abroad: that country's official open/government data and clearly licensed open maps only — not third-party platforms as canonical sources.",
  "korea_public": [
    {
      "id": "data_go_kr",
      "title_ko": "공공데이터포털 (data.go.kr)",
      "title_en": "Korea Open Government Data",
      "kind": "portal",
      "license_note": "데이터셋별 이용허락 확인 필요 (공공누리 등)",
      "urls": {
        "portal": "https://www.data.go.kr/",
        "tour_search": "https://www.data.go.kr/tcs/dss/selectDataSetList.do?keyword=관광",
        "map_search": "https://www.data.go.kr/tcs/dss/selectDataSetList.do?keyword=지도"
      },
      "notes_ko": "대한민국 공공 API·파일 다운로드. 서비스키는 포털 발급 후 서버 로컬 설정만 사용."
    },
    {
      "id": "ngii_open_api",
      "title_ko": "국가인터넷지도 (NGII) Open API",
      "title_en": "National Geographic Information Institute — open key registration",
      "kind": "kr_tile_api",
      "license_note": "NGII 이용약관·키 발급 조건 준수",
      "urls": {
        "register": "https://map.ngii.go.kr/mi/openKey/openKeyRegist.do",
        "info": "https://map.ngii.go.kr/"
      },
      "notes_ko": "배경 타일·국내 정밀도. 키/URL은 secrets/ngii-map-config.local.js 등 비공개 경로만."
    },
    {
      "id": "korea_tourism_org",
      "title_ko": "한국관광공사 TourAPI (국문)",
      "kind": "kr_tourism_api",
      "license_note": "TourAPI 이용약관·일일 트래픽 한도 준수",
      "urls": {
        "dev_portal": "https://api.visitkorea.or.kr/",
        "data_go_bundle": "https://www.data.go.kr/data/15083884/openapi.do"
      },
      "notes_ko": "관광 콘텐츠·좌표 연계 시 공식 포털에서 키 발급. 브라우저 번들에 키 금지."
    },
    {
      "id": "mois_admin_boundary",
      "title_ko": "행정안전부 행정구역 경계 (공개 SHP 등)",
      "kind": "kr_vector",
      "license_note": "공공저작물 또는 개별 공지 라이선스 확인",
      "urls": {
        "mois_data": "https://www.mois.go.kr/",
        "data_go_admin": "https://www.data.go.kr/tcs/dss/selectDataSetList.do?keyword=행정구역"
      }
    }
  ],
  "global_open": [
    {
      "id": "osm_tile_usage",
      "title_ko": "OpenStreetMap 표준 타일 정책",
      "kind": "policy",
      "urls": {
        "policy": "https://operations.osmfoundation.org/policies/tiles/"
      },
      "notes_ko": "tile.openstreetmap.org 는 소규모 앱·개발용. 대량 트래픽은 자체 타일 캐시/제3 타일 서버 권장."
    },
    {
      "id": "osm_carto_raster",
      "title_ko": "CARTO raster + OSM (전세계 무료 래스터)",
      "kind": "raster_template",
      "license_spdx": "ODbL-1.0 (데이터) + CARTO 표기 의무",
      "attribution": "© OpenStreetMap contributors © CARTO",
      "leaflet_url_template": "https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png",
      "subdomains": [
        "a",
        "b",
        "c",
        "d"
      ],
      "max_zoom": 20,
      "probe_url": "https://a.basemaps.cartocdn.com/rastertiles/voyager/0/0/0.png"
    },
    {
      "id": "osm_france_hot",
      "title_ko": "OpenStreetMap France — HOT 스타일 (대체 백업용)",
      "kind": "raster_template",
      "license_spdx": "ODbL-1.0",
      "attribution": "© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France",
      "leaflet_url_template": "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",
      "subdomains": [
        "a",
        "b",
        "c"
      ],
      "max_zoom": 20,
      "probe_url": "https://a.tile.openstreetmap.fr/hot/0/0/0.png"
    },
    {
      "id": "overpass_api",
      "title_ko": "Overpass API (OSM 쿼리)",
      "kind": "query_api",
      "license_spdx": "ODbL-1.0 (데이터)",
      "urls": {
        "wiki": "https://wiki.openstreetmap.org/wiki/Overpass_API"
      },
      "notes_ko": "전세계 POI·도로 등 재가공 가능. 과도한 쿼리 자제·로컬 Overpass 설치 권장.",
      "endpoints_public": [
        "https://overpass-api.de/api/interpreter",
        "https://overpass.kumi.systems/api/interpreter"
      ]
    },
    {
      "id": "nominatim",
      "title_ko": "Nominatim (OSM 지오코딩)",
      "kind": "geocode_api",
      "license_spdx": "ODbL-1.0",
      "urls": {
        "usage": "https://operations.osmfoundation.org/policies/nominatim/"
      },
      "notes_ko": "공용 인스턴스는 이용 정책·Rate limit 준수. 상업 대량은 자체 호스팅 검토."
    },
    {
      "id": "natural_earth",
      "title_ko": "Natural Earth (저해상도 전세계 벡터)",
      "kind": "download",
      "license_spdx": "PD-like (public domain dedication)",
      "urls": {
        "download": "https://www.naturalearthdata.com/downloads/"
      }
    },
    {
      "id": "geojson_io",
      "title_ko": "geojson.io (브라우저 GeoJSON 편집)",
      "kind": "tool",
      "urls": {
        "app": "https://geojson.io/"
      },
      "license_note": "GitHub 오픈소스, 편집 데이터는 사용자 책임"
    }
  ],
  "leaflet_raster_defaults": [
    {
      "id": "osm_carto_raster",
      "url": "https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png",
      "attribution": "© OpenStreetMap contributors © CARTO",
      "maxZoom": 20,
      "subdomains": [
        "a",
        "b",
        "c",
        "d"
      ]
    },
    {
      "id": "osm_france_hot",
      "url": "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",
      "attribution": "© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France",
      "maxZoom": 20,
      "subdomains": [
        "a",
        "b",
        "c"
      ]
    }
  ],
  "reprocess": {
    "leaflet_raster_defaults": "Derived from global_open raster_template entries for OMNI-NEXUS KCTA TOUR map pages.",
    "policy_kr": "한국은 공공데이터·공공 API를 쓰고, 해외는 그 나라 공공·공식 오픈데이터와 라이선스가 분명한 오픈 지도만 쓰며, 타사 플랫폼 API를 공식 데이터 소스로 삼지 않습니다. 브라우저·정적 파일에 서비스 키를 넣지 마세요."
  }
}
