시각화 설정 시 지도에 공간데이터가 표출됩니다.
상단의 지도 외 차트 설정 버튼 클릭 상단의 지도 외 데이터 테이블 설정 버튼 클릭국토에 가치를 더하다 행복한 변화로 가득한 세상 공간정보로 펼쳐질 대한민국의 미래입니다
Open API 서비스를 이용하기 위해서는 신규 인증키 신청(활용공간 > 국가공간정보포털API > 신규 인증키 신청) 페이지에서 API KEY 신청을 한 후, API KEY를 발급 받아야 합니다.
신청 완료 시 나의 인증키 조회(활용공간 > 국가공간정보포털API > 나의 인증키 조회) 페이지에서 발급 완료 된 API KEY와 함께 요청 URL을 서버로 전송하면 Open API 서비스를 이용하실 수 있습니다.
유효한 요청 URL의 구성을 위해 아래의 서비스별 요청변수 정보를 참고하여 요청 매개변수를 "요청변수=값 &요청변수=값 &..."의 형태로 추가하여야 합니다.
공간 정보 데이터를 활용 하기 위해서 먼저 API 가 제공하는 데이터 테이블의 목록을 확인해야 합니다.
  *요청 URL : http://www.nsdi.go.kr/lxportal/zcms/nsdi/platform/openapi.html
변수명 | 고정여부 | 샘플 데이터 | 설명 |
---|---|---|---|
apitype | 고정 | dataList | apitype이 dataList인 경우 Open API에서 제공하는 데이터 테이블의 ID 목록을 제공합니다. 검색 된 ID를 사용하여 다른 API의 검색 테이블을 설정 할 수 있습니다. |
authkey | 임의 | ( 발급된 API KEY ) | 발급 완료된 API KEY를 입력합니다. |
공간정보 테이블의 컬럼 정보 목록을 제공 합니다.
  *요청 URL : http://www.nsdi.go.kr/lxportal/zcms/nsdi/platform/openapi.html
변수명 | 고정여부 | 샘플 데이터 | 설명 |
---|---|---|---|
apitype | 고정 | columnList | apitype이 columnList인 경우 Open API에서 제공하는 데이터 테이블의 컬럼 정보를 제공합니다. |
datasets | 고정 | 12642 | 공간정보 데이터 테이블 검색 API의 결과에서 검색 할 데이터 테이블을 정한 후 OBJ_SEQ값을 이곳에 입력합니다. |
authkey | 임의 | ( 발급된 API KEY ) | 발급 완료된 API KEY를 입력합니다. |
공간정보 테이블의 데이터를 GeoJson, KML 형태로 제공 하며 데이터를 활용 하기 위해서 먼저 API 가 제공하는 데이터 테이블의 목록을 확인해야 합니다.
  *요청 URL : http://www.nsdi.go.kr/lxportal/zcms/nsdi/platform/openapi.html
변수명 | 고정여부 | 샘플 데이터 | 설명 |
---|---|---|---|
data | 고정 | data | apitype이 data인 경우 Open API에서 제공하는 데이터 테이블의 공간정보를 제공합니다. |
resulttype | 고정 | geojson | 결과가 표시될 포맷을 선택합니다.(geojson, kml 중 택 1) |
datasets | 고정 | 12642 | 공간정보 데이터 테이블 검색 API의 결과에서 검색 할 데이터 테이블을 정한 후 OBJ_SEQ값을 이곳에 입력합니다. |
bbox | 임의 | 933650.614474257,1943286.5512082838, 970380.2826180774,1961733.2057452637 | 검색 영역 사각형(x1y1, x2y1, x1y2, x2y2)의 x1y1과 x2y2를 입력합니다. 허용 좌표계는 EPSG:5179만 제공합니다. |
authkey | 임의 | ( 발급된 API KEY ) | 발급 완료된 API KEY를 입력합니다. |
공간정보를 지도 위에 시각화 하여 표출 할 수 있는 SDK를 제공 합니다.
  *요청 URL : http://www.nsdi.go.kr/lxportal/zcms/nsdi/platform/sdkGeoView.js.htm
변수명 | 고정여부 | 샘플 데이터 | 설명 |
---|---|---|---|
authkey | 임의 | ( 발급된 API KEY ) | 발급 완료된 API KEY를 입력합니다. |
통합 활용예제 페이지에서 보여주는 모든정보는 법적 효력이 없으며 참고용으로 활용하시기 바랍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | <!DOCTYPE html> <html> <head> <title>국가공간정보포털 OpenAPI</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script> <!-- 오픈API --> <script type="text/javaScript" src="http://www.nsdi.go.kr/lxportal/zcms/nsdi/platform/sdkGeoView.js.html?authkey=인증키"></script> <style> .row.content {height: 100%} .sidenav { padding-top: 20px; background-color: #f1f1f1; height: 100%; } @media screen and (max-width: 767px) { .sidenav { height: auto; padding: 15px; } .row.content {height:auto;} } #btnAddToMap{ margin-right: 25px; padding-right: 10px; padding-left: 10px; } #clearMap{ margin-right: 25px; padding-right: 25px; padding-left: 25px; } </style> </head> <body> <div class="container-fluid text-center"> <div class="row content"> <div class="col-sm-3 sidenav"> <div class="well"> <p>데이터 목록</a></p> <select id="dataList" size="7" style="border: solid 1px;width: 100%;height: 355px;"></select> <h4>Column(차트 Y축)</h4> <select id="dataColumn" size="7" style="border: solid 1px; width: 100%; height: 125px;"></select> <h4>Column(차트 X축)</h4> <select id="dataColumn2" size="7" style="border: solid 1px; width: 100%; height: 125px;"></select> </div> <div class="container" style="width: auto;"> <input class="btn btn-primary" type="button" id="btnAddToMap" value='확인'/> <input class="btn btn-danger" type="button" id="clearMap" value='초기화'/> </div> </div> <div class="col-sm-5 text-left"> <div class="row"> <div class="col-sm-12"> <div class="panel panel-default text-left"> <div class="panel-body"> <div id="sampleMap" style="height: 800px; width:100%;border: solid 1px;"></div> </div> </div> </div> </div> </div> <div class="col-sm-4 sidenav"> <div class="well"> <p>차트</p> <div id="sampleChart" style="height: 250px;"></div> </div> <div class="well"> <p>컬럼테이블</p> <table id="sampleGrid" style="height : 380px; width: 100%;"></table> </div> </div> </div> </div> <script> var map; var apiUrl = "http://www.nsdi.go.kr/lxportal/zcms/nsdi/platform/openapi.html"; var authkey = '인증키'; var bboxResult; var userCenter; $(document).ready(function(){ // 지도생성 map = new pf.GeoView("sampleMap","vworld",true,true); map.baseMap.getView().setCenter(ol.proj.transform([948988.4139031649,1947273.5479532676], 'EPSG:3857', 'EPSG:3857'));//여의도 map.baseMap.getView().setZoom(13);//지도 표출 레벨 설정 map.baseMap.getView().setMinZoom(13)//지도 최소레벨 설정 map.baseMap.getView().setMaxZoom(16)//지도 최대레벨 설정 map.baseMap.updateSize(); map.baseMap.on('moveend', function(){ bboxResult = map.baseMap.getView().calculateExtent().toString(); userCenter = map.baseMap.getView().getCenter(); }) //데이터 목록요청 getDataList(); $("#clearMap").on('click',function(){ $("#sampleChart").empty(); $("#sampleGrid").empty(); $(".tbl_box").remove(); newJquery(".lyhidden").click(); //map.baseMap.removeLayer(map.baseMap.getLayers().getArray()[5]) }) // 데이터목록 선택시 $("#dataList").on("click",function(){ var obj_seq = $(this).val(); // 데이터 컬럼 생성 getDataColumn(obj_seq); }); $("#btnAddToMap").on("click",function(){ $("#sampleChart").empty(); $("#sampleGrid").empty(); $(".tbl_box").remove(); newJquery(".lyhidden").click(); var obj_seq = $("#dataList").val(); var obj_kname = $("#dataList option:selected").attr("label"); var obj_val = $("#dataList option:selected").val(); var column_name = $("#dataColumn").val(); var column_name2 = $("#dataColumn2").val(); $.ajax({ type: "POST", data:{ 'apitype': 'data', 'resulttype':'geojson', 'datasets': obj_seq, 'bbox': bboxResult, // 현재맵의 bbox 'authkey':authkey }, dataType: "json", async: false, url: apiUrl, success: function(response){ data = response; //시각화설정 map.addMapViLayer(data, // 표출 할 공간정보 데이터를 변수에 넣은 후 변수를 입력합니다. "geojson" // 파라미터 번호 1번에 넣을 데이터가 geojson 형식인지 kml 형식인지 구분합니다. ,obj_val // 레이어 고유의 이름을 설정합니다. ,"legend" // 지도위에 공간정보를 시각화 할 옵션을 선택합니다. legend, bubble, heat 중 선택합니다. ,column_name // 시각화 할 속성(숫자)의 이름을 넣습니다. ,null // 공간 객체에 표시 하고 싶은 속성이 있다면 속성의 이름을 넣습니다.(문자열만 가능하며 null 입력 시 미표시) ,obj_kname // 지도 좌측 상단의 레이어에 표시 하고자 하는 이름을 넣습니다 ,'EPSG:5179' // 좌표계 ); map.baseMap.getView().setCenter(ol.proj.transform(userCenter, 'EPSG:3857', 'EPSG:3857')); map.baseMap.getView().setZoom(13); //차트설정 map.setChart("sampleChart" // 차트가 표시 될 DIV 태그의 아이디를 넣습니다. ,"line" // 표출 할 차트의 종류를 선택합니다. ,obj_val // 지도의 여러 레이어 중 차트에 표시 할 레이어의 이름을 입력 합니다. ,column_name2 // 지도에 표출 한 공간정보에서 차트에 표출할 속성(숫자)의 이름을 넣습니다.(가로축) ,obj_kname // 차트 상단에 표시 할 제목을 적습니다.(null 입력시 미표시) ,column_name // Y축에 표시 할 제목을 적습니다.(null 입력시 미표시) ,column_name // 세로축 ); var column_names = $("#dataColumn").find("option").map(function() { return $(this).val(); }); //그리드설정 map.setGrid("sampleGrid" // 데이터 테이블이 표시 될 TABLE 태그의 아이디를 넣습니다. ,obj_val // 지도의 여러 레이어 중 데이터 테이블에 표시 할 레이어의 이름을 입력 합니다. ,null // 데이터 테이블에 표시 할 속성들의 한글명을 배열 형태로 입력합니다.(null 입력시 4번 파라미터의 속성이름 표시) ,column_names // 속성이름 ,obj_kname // 데이터 테이블에 표시 할 제목을 입력합니다.(null 입력 시 미표시) ); } }); }); }); //공간 정보 테이블 목록 요청 function getDataList() { // 데이터목록 생성 $.ajax({ type: "POST", data:{ 'apitype': 'dataList', 'authkey':authkey }, dataType: "json", async: false, url: apiUrl, success: function(response){ var dataList = $("#dataList"); for(key in response) { var obj_seq = response[key].OBJ_SEQ; var obj_kname = response[key].OBJ_KNAME; $("<option value='"+ obj_seq +"' label='"+ obj_kname +"'>"+obj_kname+"</option>") .appendTo(dataList); } } }); } //공간 정보 테이블 컬럼 정보 요청 function getDataColumn(obj_seq) { $.ajax({ type: "POST", data:{ 'apitype': 'columnList', 'datasets': obj_seq, 'authkey':authkey }, dataType: "json", async: false, url: apiUrl, success: function(response){ var dataColumn = $("#dataColumn"); dataColumn.empty(); var dataColumn2 = $("#dataColumn2"); dataColumn2.empty(); for(key in response) { var column_id = response[key].COLUMN_ID; var comments = response[key].COMMENTS; var column_name = response[key].COLUMN_NAME; comments = !comments?column_name:comments; $("<option value='"+column_name+"' label='"+comments+"'>"+comments+"</option>").appendTo(dataColumn); $("<option value='"+column_name+"' label='"+comments+"'>"+comments+"</option>").appendTo(dataColumn2); } } }); } </script> </body> </html> |