페이지 트리

버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.
댓글: [2026.03.31] (BCRM#G0940) [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