페이지 트리

버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.
댓글: [2026.03.31] (BCRM#G0940) [GeoMap 지도 컴포넌트] 행정동 기준 지리데이터 신규 추가 지원


...


Section


Column
width80%

작성 날짜 : 2025.07.30



Column
width20%

작성자 :  황송희  / 검수자 :  이승우


...

패널
borderColor#f7f7f7
borderStylesolid
title📌 목차


패널
borderColor#303031
borderWidth0
borderStylesolid
title권역별 데이터 표시 기능

GeoMap 컴포넌트는 배경 지도 위 또는 배경 지도 없이, 권역별 지리 데이터를 다양한 방식으로 시각화할 수 있습니다.
책갈피
권역별 데이터 표시 기능
권역별 데이터 표시 기능

🗺️예시

1) 기본 지도

URL: https://rnd.bimatrix.co.kr/aud7/extention/portal/SimpleSSO_Con.jsp?reportCode=REPD8B00FD132AD4E9288E0957F7497185B

2) 세계 지도

URL: https://rnd.bimatrix.co.kr/aud7/extention/portal/SimpleSSO_Con.jsp?reportCode=REP05B9036D8BD048DFBE65C3D32CBA8AEC

3) Drill To Detail 샘플

URL: https://rnd.bimatrix.co.kr/aud7/extention/portal/SimpleSSO_Con.jsp?reportCode=REP07FF9E92977D4DCF88E3B8936B5E01CE

...

발췌


패널
borderWidth0
title참조 테이블

GeoMap 컴포넌트는 제품의 레파지토리 테이블을 참조하여 권역별 지리 데이터를 시각화합니다.
책갈피
참조 테이블
참조 테이블

도움말
title테이블 목록
  • 필요 테이블 목록

    테이블 명테이블 설명Row 개수
    MAP_GEO_0국가별 0레벨 전 세계 국가 데이터263
    MAP_GEO_1국가별 1레벨 구역 데이터(시도)17
    MAP_GEO_2국가별 2레벨 구역 데이터(시군구)264
    MAP_GEO_3국가별 3레벨 구역 데이터(읍면동)
    5
    8,
    066
    629
    MAP_GEO_4국가별 3레벨 구역 데이터(리)
    15
    30,
    161
    322
    MAP_GEO_DOMESTIC_CODE대한민국 지리정보체계 코드 데이터(행정동 및 법정동)21,
    676
    703
    MAP_GEO_COUNTRY_CODE전 세계 지리정보체계 코드 데이터(ISO Alpha3, ISO Alpha2, ISO Numeric)263
    MAP_GEO_LANGUAGE지역명 다국어 데이터
    20
    39,
    771
    495


  • 권역별 지리 데이터 표시 기능을 사용하기 위해서는 지리 정보가 포함된 참조 테이블과 그 하위 데이터가 모두 필요합니다.
  • 데이터 적재 방법: GeoMap 컴포넌트 어드민 사용 가이드


...

패널
borderWidth0
title기타 FAQ

책갈피
기타 FAQ
기타 FAQ

  1. 시군구 레벨에서 특정 시가 구 레벨과 같이 표시됩니다. ex) 포항시와 포항시 하위의 구를 나누고 싶습니다.
    펼치기
    title답변

    시군구 레벨(MAP_GEO_2) 에서 시와 구 레벨이 구분되지 않는 문제의 원인은 아래와 같습니다.

    현재 GeoMap 에서 사용 중인 행정구역 코드 체계는 통계청의 행정구역 코드를 기준으로 하고 있으며, 이를 MAP_GEO_DOMESTIC_CODE 테이블에서 확인할 수 있습니다.

    해당 데이터는 MAP_GEO_2 테이블에서 확인할 수 있습니다.

     

    예를 들어 포항시의 경우에 (포항시 / 포항시 남구 / 포항시 북구) 라는 세 개의 행정구역이 모두 같은 레벨에 포함되어 있어 중첩 표시되는 현상이 발생하고 있습니다.

    이 문제를 해결하려면, 어떤 특정 구역(예를 들어 포항시만 표시하겠다) 만 표시하고 싶다면 포항시 남구와 포항시 북구 데이터를 제외하도록 쿼리를 수정하시면 됩니다. 

    포항 지역을 예시로 들었지만, 동일한 현상이 발생하는 다른 지역에도 동일하게 적용됩니다.

     

    ⁕ 시와 구 데이터를 동시에 제공하는 이유

    시와 구 데이터를 동시에 제공하는 이유는, 사용자가 상황에 맞게 유연하게 사용할 수 있도록 하기 위함입니다.

    예를 들어, 포항시 전체 데이터를 보고 싶을 때는 각 구 데이터를 선택적으로 포함할 수 있습니다.

    이를 이용하여 다양한 상황에 맞게 데이터를 활용할 수 있습니다.


  2. 데이터를 수정했는데도 이전의 데이터가 계속 표시됩니다.
    펼치기
    title답변

    #캐시파일 안내 설명을 확인 부탁드립니다.


  3. 데이터를 최신화하니 읍면동/리 레벨에서 경계 데이터가 겹쳐 보입니다.
    펼치기
    title답변

    Image Added

    행정동 기준 경계 데이터가 추가되면서, 법정동 데이터와 함께 조회될 경우 경계가 중복 표시될 수 있습니다.

    자세한 내용은 [i-AUD] GeoMap 컴포넌트 (지도, 맵) 사용 가이드 의 "지리 데이터 최신화 안내" 를 참고하시기 바랍니다.

    ✔ 해결 방법

    1) Source 보고서 재적용

    해당 이슈를 반영하여 Source 보고서가 수정되었습니다. → Source 보고서를 최신 버전으로 재다운로드 후 적용하시기 바랍니다.

    2) 직접 수정

    기존 보고서를 유지해야 하는 경우, 아래와 같이 수정이 필요합니다.

    • Server Script > @VARIABLES
      • VS_GID_DIV_TYPE 변수 설정 로직 추가
    • Server Script > @MAP_QUERY
      • 법정동 / 행정동 경계 데이터를 구분하여 조회하도록 수정
    변경 전변경 후


    코드 블럭
    languagejs
    collapsetrue
    // 선택 항목의 하위 보기	
    
    var langSQL = "\n , CASE WHEN T2.LABEL	   IS NULL THEN T1.LABEL     --DEFUALT NAME"
                + "\n   ELSE T2.LABEL    						         -- KOREAN NAME"
                + "\n   END AS LABEL";
    			
    	if(VS_GID_3){
    		sql = "    SELECT     T1.GID_0     AS GID_0     "
    			+ "\n           , T1.GID_1     AS GID_1     "
    			+ "\n           , T1.GID_2     AS GID_2     "
    			+ "\n           , T1.GID_3     AS GID_3     "
    			+ "\n           , T1.GID_4     AS GID_4     "
    			+ "\n           , ''           AS GID_5     "
    			+ "\n           , T1.NAME      AS NAME      "
    			+ "\n           , T1.PROPERTY      AS PROPERTY      "
    			+ langSQL
    			+ "\n           , T1.GEO       AS GEO       "
    			+ "\n           , 4            AS LEVEL_VALUE     "
    			+ "\n           , T1.MIN_X     AS MIN_X     "
    			+ "\n           , T1.MIN_Y     AS MIN_Y     "
    			+ "\n           , T1.MAX_X     AS MAX_X     "
    			+ "\n           , T1.MAX_Y     AS MAX_Y     "
    			+ "\n   FROM MAP_GEO_4 T1                   "
    			+ "\n   LEFT JOIN MAP_GEO_LANGUAGE T2 		"
    			+ "\n     ON T1.GID_4 = T2.GID_CODE		  	"
    			+ "\n    WHERE GID_0 IN(:VS_GID_0)          "
    			+ "\n     AND GID_1 IN(:VS_GID_1)           "
    			+ "\n     AND GID_2 IN(:VS_GID_2)           "
    			+ "\n     AND GID_3 IN(:VS_GID_3)           ";
    	}else if(VS_GID_2){
    		sql = "    SELECT     T1.GID_0     AS GID_0     "
    			+ "\n           , T1.GID_1     AS GID_1     "
    			+ "\n           , T1.GID_2     AS GID_2     "
    			+ "\n           , T1.GID_3     AS GID_3     "
    			+ "\n           , ''           AS GID_4     "
    			+ "\n           , ''           AS GID_5     "
    			+ "\n           , T1.NAME      AS NAME      "
    			+ "\n           , T1.PROPERTY      AS PROPERTY      "
    			+ langSQL
    			+ "\n           , T1.GEO       AS GEO       "
    			+ "\n           , 3            AS LEVEL_VALUE     "
    			+ "\n           , T1.MIN_X     AS MIN_X     "
    			+ "\n           , T1.MIN_Y     AS MIN_Y     "
    			+ "\n           , T1.MAX_X     AS MAX_X     "
    			+ "\n           , T1.MAX_Y     AS MAX_Y     "
    			+ "\n   FROM MAP_GEO_3 T1                   "
    			+ "\n   LEFT JOIN MAP_GEO_LANGUAGE T2 		"
    			+ "\n     ON T1.GID_3 = T2.GID_CODE		  	"
    			+ "\n    WHERE GID_0 IN(:VS_GID_0)          "
    			+ "\n     AND GID_1 IN(:VS_GID_1)           "
    			+ "\n     AND GID_2 IN(:VS_GID_2)           ";



    코드 블럭
    languagejs
    collapsetrue
    var DIV_TYPE = {
      "B": "법정동",
      "H": "행정동",
    };
    if(util.IsNullOrEmpty(VS_GID_DIV_TYPE)) VS_GID_DIV_TYPE = DIV_TYPE["B"]; //하위 호환성을 위해, VS_DIVISION_TYPE이 없을 경우 법정동으로 조회합니다.
    Matrix.WriteLog("[GeoMap] Source Server Script: 찐찐찐 @VARIABLES VS_GID_DIV_TYPE::"+VS_GID_DIV_TYPE);
    
    // 선택 항목의 하위 보기	
    var langSQL = "\n , CASE WHEN T2.LABEL	   IS NULL THEN T1.LABEL     --DEFUALT NAME"
                + "\n   ELSE T2.LABEL    						         -- KOREAN NAME"
                + "\n   END AS LABEL";
    
    
    	if(VS_GID_3){
    		sql = "    SELECT     T1.GID_0     AS GID_0     "
    			+ "\n           , T1.GID_1     AS GID_1     "
    			+ "\n           , T1.GID_2     AS GID_2     "
    			+ "\n           , T1.GID_3     AS GID_3     "
    			+ "\n           , T1.GID_4     AS GID_4     "
    			+ "\n           , ''           AS GID_5     "
    			+ "\n           , T1.NAME      AS NAME      "
    			+ "\n           , T1.PROPERTY      AS PROPERTY      "
    			+ langSQL
    			+ "\n           , T1.GEO       AS GEO       "
    			+ "\n           , 4            AS LEVEL_VALUE     "
    			+ "\n           , T1.MIN_X     AS MIN_X     "
    			+ "\n           , T1.MIN_Y     AS MIN_Y     "
    			+ "\n           , T1.MAX_X     AS MAX_X     "
    			+ "\n           , T1.MAX_Y     AS MAX_Y     "
    			+ "\n   FROM MAP_GEO_4 T1                   "
    			+ "\n   LEFT JOIN MAP_GEO_LANGUAGE T2 		"
    			+ "\n     ON T1.GID_4 = T2.GID_CODE		  	"
    			+ "\n    WHERE GID_0 IN(:VS_GID_0)          "
    			+ "\n     AND GID_1 IN(:VS_GID_1)           "
    			+ "\n     AND GID_2 IN(:VS_GID_2)           "
    			+ "\n     AND GID_3 IN(:VS_GID_3)           ";
    
            if(VS_GID_DIV_TYPE == DIV_TYPE["B"]){ //법정동 코드 조회
                sql += "\n     AND GID_4 NOT LIKE '%H'      ";
            }else { //행정동 코드 조회
                sql += "\n     AND GID_4 LIKE '%H'          ";
            }
    
    	}else if(VS_GID_2){
    		sql = "    SELECT     T1.GID_0     AS GID_0     "
    			+ "\n           , T1.GID_1     AS GID_1     "
    			+ "\n           , T1.GID_2     AS GID_2     "
    			+ "\n           , T1.GID_3     AS GID_3     "
    			+ "\n           , ''           AS GID_4     "
    			+ "\n           , ''           AS GID_5     "
    			+ "\n           , T1.NAME      AS NAME      "
    			+ "\n           , T1.PROPERTY      AS PROPERTY      "
    			+ langSQL
    			+ "\n           , T1.GEO       AS GEO       "
    			+ "\n           , 3            AS LEVEL_VALUE     "
    			+ "\n           , T1.MIN_X     AS MIN_X     "
    			+ "\n           , T1.MIN_Y     AS MIN_Y     "
    			+ "\n           , T1.MAX_X     AS MAX_X     "
    			+ "\n           , T1.MAX_Y     AS MAX_Y     "
    			+ "\n   FROM MAP_GEO_3 T1                   "
    			+ "\n   LEFT JOIN MAP_GEO_LANGUAGE T2 		"
    			+ "\n     ON T1.GID_3 = T2.GID_CODE		  	"
    			+ "\n    WHERE GID_0 IN(:VS_GID_0)          "
    			+ "\n     AND GID_1 IN(:VS_GID_1)           "
    			+ "\n     AND GID_2 IN(:VS_GID_2)           ";
    
            if(VS_GID_DIV_TYPE == DIV_TYPE["B"]){ //법정동 코드 조회
                sql += "\n     AND GID_3 NOT LIKE '%H'      ";
            }else { //행정동 코드 조회
                sql += "\n     AND GID_3 LIKE '%H'          ";
            }


    📌 참고

    • 관련 이슈: (BCRM#G0940) [GeoMap 지도 컴포넌트] 행정동 기준 지리데이터 신규 추가 지원

    • 릴리즈 버전: 7.0.500.20260416-21