본문 바로가기

Function

VWORLD에서 DEM을 가져오기

2019.07.22 업데이트


전해들은 바가 있어 확인해보니, 브이월드 측에서 3d 데이터 Open API를 폐쇄했습니다.

안타깝지만, 관련 데이터는 어떠한 방법으로도 더 이상 사용할 수 없을 것 같습니다.

브이월드에 접속해서 건물을 눈으로 확인하는 방법 밖에 없겠네요.


---------------------------------------------------------------------------

2019.5.22 업데이트


-----------------------------------

브이월드 Open API 중 3D data api 를 이용하는데 도움을 줄 목적으로 작성된 본 게시물에서 언급하는 코드는 더 이상 존재하지 않습니다. 깃허브의 자료를 삭제하였습니다.


최근 브이월드의 운영 주체인 공간정보산업진흥원측에서 여러 차례 연락을 받았습니다.

요청 내용의 주요 골자는, 이 글 맨 아래에 첨부한 내용처럼 저장관련 부분 삭제입니다.


그래서 해당 코드를 삭제하고 업데이트 해 놓았었습니다.


그런데 오늘 다시 브이월드의 필수 설문 조사 메일을 받았습니다.

인증키 발급자들에게 모두 보낸 것 같은데요, 그 내용을 보면 가까운 시일 안에 매우 높은 확률로 서비스 제공 수준과 방식이 변경될 것 같습니다. 그렇게 된다면 어차피 이 코드도 쓸모없어지기 때문에 닫았습니다. 


공간정보산업진흥원에서 통화상으로 언급한 보안 및 국정원에 대한 언급 등으로 사실 상당한 스트레스를 받았고, 최근 분위기를 볼 때 여차하다가는 훅 갈 수도 있겠다는 생각이 들었습니다. 저에게 대면 면담을 요청하여 추가적인 문제가 발생하지 않았는지 조사하려고도 하였습니다. (강제로 해야 하는 일은 아닌 것 같아 거절하였습니다.)



[공공데이터의 제공 및 이용 활성화에 관한 법률] 제3조(기본원칙)은 아래와 같습니다. OPEN API도 공공데이터의 여러가지 형식 중 하나입니다. 

① 공공기관은 누구든지 공공데이터를 편리하게 이용할 수 있도록 노력하여야 하며, 이용권의 보편적 확대를 위하여 필요한 조치를 취하여야 한다.

② 공공기관은 공공데이터에 관한 국민의 접근과 이용에 있어서 평등의 원칙을 보장하여야 한다.

③ 공공기관은 정보통신망을 통하여 일반에 공개된 공공데이터에 관하여 제28조제1항 각 호의 경우를 제외하고는 이용자의 접근제한이나 차단 등 이용저해행위를 하여서는 아니 된다.

④ 공공기관은 다른 법률에 특별한 규정이 있는 경우 또는 제28조제1항 각 호의 경우를 제외하고는 공공데이터의 영리적 이용인 경우에도 이를 금지 또는 제한하여서는 아니 된다.

⑤ 이용자는 공공데이터를 이용하는 경우 국가안전보장 등 공익이나 타인의 권리를 침해하지 아니하도록 법령이나 이용조건 등에 따른 의무를 준수하여야 하며, 신의에 따라 성실하게 이용하여야 한다.


그리고 저작권법 24조의 2를 보면 공공저작물의 자유이용에 대한 원칙이 있습니다. 이 조항은 공공데이터때문에 신설된 조항이기도 합니다.

① 국가 또는 지방자치단체가 업무상 작성하여 공표한 저작물이나 계약에 따라 저작재산권의 전부를 보유한 저작물은 허락 없이 이용할 수 있다. 다만, 저작물이 다음 각 호의 어느 하나에 해당하는 경우에는 그러하지 아니하다.


저는 항상 이 두 가지 원칙에 근거해서 공공데이터를 이용해왔습니다.


그런데 지도 및 그와 유사한 공공측량성과에 대해서는 위의 법률에도 조금씩 언급된 '예외조항'과 관련이 있는 것 같습니다. 이런 부분에 대한 이용상의 한계가 좀 더 명확하게 명시되었더라면 저도 많은 시간을 들여 이런 일을 하지 않았을 것 같은데, 여러가지로 많이 안타깝습니다.



또 한편으로 이러한 이용제한에 대한 안타까움도 있습니다.


구글에서 '브이월드'로 검색하면 첫 페이지에 기사 두 개가 뜹니다. 한 가지는 브이월드 데이터의 가치를 설명하고 있습니다.

https://it.donga.com/19623/

"한국의 구글맵이 아닙니다. 모두의 브이월드입니다"


다른 한 곳에서는 브이월드의 이용률 저조를 언급하고 있습니다.

https://www.mk.co.kr/news/business/view/2016/11/762202/

`한국판 구글어스` 표류…300억 투입 `브이월드` 활용기업 미미


브이월드 자료를 받아서 저장 후 이용하려고 이 곳에 오신 분들은 아마도 비슷한 생각을 하실 것 같습니다.

"저장하지 않고 화면에서 지형과 건물을 쳐다보는 것 만으로 도대체 무슨 일을 할 수 있다는 것일까?"

"혹은 자료를 별도로 저장하지 않고 실시간으로 브이월드에서 끌어와 쓰는 웹 서비스 운영 정도에 이 데이터 활용을 제한해둔다면 과연 이용할 수 있는 사람이 얼마나 될까?"


제가 운영하는 회사의 수익구조는 사실 이 브이월드의 자료와 관계가 거의 없습니다.


개인적으로 필요해서 만들어놓은 코드가 1년 넘게 컴퓨터 한구석에서 잠자고 있는 것이 안타까웠기 때문에, 추가적인 시간을 써서 다른 사람들도 이용할 수 있는 코드로 업데이트 하여 1년 전 쯤 공개하기로 결정했던 것입니다. 이러한 일로 누군가 저에게 물질적인 보상을 해 준 일도 없고, 제가 요청한 일도 없습니다. 이 자료를 이용하는 사람들이 많아져서 데이터의 가치가 좀 더 높게 평가받고, 그럼으로써 현재 업데이트 되지 않고 있는 지역들이 좀 더 잘 업데이트 된다면 모두에게 좋은 일이 될 것이라 생각했습니다.


공간정보산업진흥원에서 통화상으로 대면 면담을 저에게 요청하면서 '이런 게시물을 올린 의도가 무엇인지' 물어볼 예정이라고 하였는데요, 만약 이 글을 보게 된다면 위의 문장으로 그 질문에 대한 답변이 되기를 바랍니다.



이 데이터의 활용도는 무궁무진하지만 한 가지 생각나는 예를 들자면,

최근 많이 언급되는 보행 중심의 생활SOC사업처럼 거주지로 부터 10분거리에 얼마나 많은 생활공공시설이나 근린시설을 이용할 수 있는지에 대해 국가 차원의 사업들이 벌어지는 것 같습니다. 상세한 해상도의 수치표고모형을 이용하면 도로의 경사도를 반영하여 좀 더 정확한 보행시간을 계산할 수 있습니다. 급경사 구간을 찾아낸다면 보행약자에 대한 지원도 할 수 있습니다. 데이터를 저장하지 않고 단발적인 Open API 요청을 통해 이런 계산을 하는건 무척 효율이 떨어지는 일입니다.


언젠가는 관련 법이 개정되어,

많은 예산을 들여 구축한 이 데이터가 잘 활용됨으로써 세금을 낸 많은 사람들이 직간접적으로 혜택을 볼 수 있기를 진심으로 바랍니다.



2019.5.22 

브이더블유랩 소장 김승범

---------------------------------------------------------------








Vworld의 3d data api에서는 여러가지 3차원 정보들을 받아올 수 있다. 여기서는 지형 정보를 받아오는 법을 다룬다. 자바(JAVA) 언어를 다룰 수 있어야 쓸 수 있다.

 

DEM(수치표고모형)은 고저차가 많은 우리나라 지형에서 여러가지 분석에 정말 무궁무진하게 활용할 수 있다. 작년 서울도시건축비엔날레에서 브이월드에서 DEM을 취한 후, 보행로의 경사도를 측정하여 보행시간계산에 반영하여 전시 작업을 했었다. 아래 영상에서 0:43 이후에 보행로의 수직 단면을 시각화한 영상을 볼 수 있다.





vworld에서 dem 자료를 소개한 내용은 여기서 볼 수 있다. 아래에 내용을 옮겨본다.



해상도는 1m라고 하는데, 실제로 받을 수 있는 최대 레벨인 15를 적용해서 데이터를 요청하면 대략 1.5m 해상도의 높이들이 들어온다. 사실, 이것도 너무 자세하고 데이터도 큰 탓에 예를 들어 서울 전역을 다룰 경우에 1.5미터는 활용하기가 쉽지 않다. 라이노에 올려놓을 경우 레벨 11인 24m 그리드로 받았을 때 110MB정도의 용량이 된다.


Vworld에서는 이 DEM을 OPEN api를 통해서만 제공한다. 따라서 특정 영역을 한번에 다운로드 받을 수 없고, 부분적으로 request를 보내고 response를 받은 후 데이터를 처리하여 원하는 수치들로 변환시켜야 한다. 이 곳에 기본적인 설명이 있다.



기본 소개


OPEN api를 이용하려면 우선 브이월드에서 회원가입을 하고 api 키를 발급받아야 한다. 찾아보면 어렵지 않으니 하나 받아두어야 아래에서 소개하는 코드에 집어넣어 동작시킬 수 있다. 신청할 때, '서비스할 웹주소'를 적게 되어 있는데, http://localhost:4141 으로 적어서 신청하면 추가적인 코드 수정 없이 사용할 수 있다. DEMCrawler.java 의 268번 라인에 해당 부분이 있다.


바로 위에서 링크한 <3D 데이터API레퍼런스>를 읽어보면, 사실 설명이 pdf문서로까지 자세히 써 있는데, 읽어봐도 이해하기 쉽지 않다. 바이너리 파일을 직접 다루어야 하고, 레퍼런스에서 가르쳐주지 않는 좌표변환방법을 찾아내야 하며, 3차원 모델로 만들려면 좌표들을 재조합해서 면으로 만들 수 있어야 한다.


그래서 아래에서는 그 과정들을 코드가 알아서 처리하도록 해 두었으며, 사용하는 사람은 다음의 내용들만 입력하면 된다. DEMCrawler.java 의 37~70번 라인에 해당 부분이 있다.


1. 데이터를 받으면 임시로 저장할 폴더. 해당 폴더가 자신의 컴퓨터에 없으면 만들어준다. 코드 실행 중에만 저장되며, 실행이 끝나면 모두 삭제되므로 용량을 신경 쓸 필요는 없다. (2019.05.20 업데이트)

2. api키

3. 받아오고자 하는 영역의 좌하단, 우상단 경위도 좌표

4. 데이터 해상도 1~15 (15레벨이 존재하지 않는 지역도 많이 있음)


모든 필요와 요구에 대해서 상세히 설명하지 못하는 부분을 이해해 주셨으면 한다.

구체적인 자바 코드 사용 방법은 다음의 게시물을 참고하면 된다.


http://www.vw-lab.com/54




코드 작동 순서


1. 

일단 영역의 경계점 좌표를 입력하면 브이월드에서 다루는 Idx,Idy 영역번호로 변환한다. 원래 소개하는 절차에서는 query를 보낸 후 받아와야 하지만 계산이 어렵지 않으므로 직접 계산하였다.


2. 

idx,idy의 list를 산출해 낸 뒤 request를 보내서 .bil 파일들을 받아온다. 바이너리 파일이며, 격자 구간들의 높이값들이 들어있다.

동시에 지형에 매핑할 dds(텍스쳐)파일도 받아온다. 


3. 

bil파일 정보를 세 가지 형태의 text 파일로 변환하여 변수에 저장한다.

*. 둥근 지구 그대로의 3차원 좌표

*. 경도,위도,해발고도(m)

*. x좌표, y좌표, 해발고도 (UTMK좌표계)


4. 

둥근 지구의 형태와 평평한 지구를 가정한 두 가지 형태의 모델링 정보를 변수에 저장한다.

.obj파일 형식이다. 항공사진 텍스쳐가 입혀질 수 있도록 했다.

파일은 하드디스크 드라이브 등 저장장치에 저장하지 않고 코드 실행 중에만 휘발성으로 사용해야 한다. 저장하여 이용하게 되면 국토부 보안관리규정과 관련된 위법의 소지가 있으므로 공간정보산업진흥원의 전화를 받게 될 것이다. 코드를 실행시켜 해당 내용을 다운받은 후 별도의 처리를 통해 이용하고, 코드가 종료되면 하드디스크 등 저장장치에 파일이 남아있지 않아야 한다. 해당 규정을 이 글 맨 아래에 옮겨 놓았으니 이용자들은 각별히 주의하기 바란다. (2019.05.20 업데이트). 



코드 내용


https://github.com/vuski/getVworld3D

이 곳에서 볼 수 있다.


https://github.com/vuski/getVworld3D/blob/master/src/vworld/DEMCrawler.java

여기에 핵심적인 내용들이 있다.

주석을 되도록 많이 달아놓아서 다른 언어 사용자들이 포팅하는데 도움이 되도록 했다.


코드 이용하는 방법은 아래를 참고한다.

http://www.vw-lab.com/54


부가 설명


*.

웹페이지의 설명에는 NASA의 world wind 좌표계를 사용한다고 되어 있는데, 잘 되지 않아 시행착오를 거치다보니 그 방식에서 약간 수정했다는 사실을 알게 되었다. 지구구면체를 장반경과 단반경값을 다르게 넣지 않고 장반경으로 두 축의 길이를 사용했던 것이다.


*.

작은 영역에서 미세하게 다룰 때는 평평한 지구를 가정한 UTMK 좌표와 모델을 사용하면 된다. 그러나 넓은 영역에서 정밀하게 사용할 때는 지구구면체로 작업해야 한다. 사실 그 정도 필요가 있는 사람들이라면 이 정도는 스스로 판단할 수 있을 거다. 지구 구면체에서 서울 전체가 산이 없는 평지라고 가정하고 동쪽에서 서쪽 끝을 직선으로 잇게 되면 정 가운데쯤 가서 20m정도 뜨게 된다. 지구는 둥그니까.


*.

서울은 일부 산지만 제외하면 모두 레벨 15로 존재한다. 그러나 다 받아서 그대로 이용할 생각은 하지 않는 것이 낫다. 몇 블록 크기의 지역만 15로 받아내도 꽤 많은 RAM을 필요로 하기 때문이다. 경기도의 경우 13레벨이 최고였던 것으로 기억한다. 같은 경기도라도 일부 지역은 최대 제공 해상도가 더 떨어지는 경우도 있다. 이 글의 맨 위에 첨부한 그림처럼 서울 전체를 받을 경우 레벨 11 정도가 적당하다.


*.

독도의 지형은 DEM에 없다.

건물 부분에 통합되어 있으므로 건물을 설명한 이 홈페이지의 다른 글을 참고하면 된다.


*. 

이 코드를 배포하는 이유는 공간정보 사용자 커뮤니티를 활성화하기 위함이다. 이런 유용한 데이터의 사용자가 많아져서 데이터를 생산하는 공공기관이 좀 더 업데이트와 서비스를 잘 해줬으면 좋겠다. 현재 이런 api 방식 말고, 다운로드 받을 수 있는 국토정보플랫폼의 DEM은 90m 해상도라 좀처럼 사용할데가 별로 없다.


*.

모두 필요하지 않음에도 불구하고 한번에 너무 넓은 영역을 잡아서 받으려고 한다면, 트래픽과 서버 부담 문제로 결국은 돌아돌아 다른 사람에게 의도치 않은 피해를 입힐 수 있다. 소수의 무심한 행동이 전체에게 피해를 줄 수 있음을 생각해보자.


*. 

위경도와 UTMK 좌표 변환은 이곳을 참고했다. 공개한 소스코드에도 별도로 분리하여 명시해두었다.


*.

다른 언어로 포팅할 경우, 깃헙 등에서 연결시켜 공개해 주셨으면 좋겠다.



-----------------------------

2019.05.20 추가



공간정보산업진흥원 측의 요청으로 파일 저장 부분을 삭제하고 업데이트 하였습니다.

따라서, 3d 데이터를 받아서 이용하시려는 부분은 이용하는 코드를 추가적으로 작성하셔서 사용하셔야 합니다.


관련 메일을 내용을 아래에 옮겨놓습니다. 이용하시는 분들은 해당 부분 유의하셔서 이용하시기 바랍니다.


++++++++++++++++++++++++++

안녕하세요, 브이월드 운영기구 입니다.


브이월드 3차원 데이터는 국토교통부 국가공간정보 보안관리규정에 따라 기타공간정보 '공개제한' 정보로 규정하고 있으며 해당 규정 제 10조 1항 3호(공간정보의 복제·출력 등 제한)에 따라 공개가 제한되는 공간정보는 보안 담당관의 허가를 받을때를 제외하고는 복제 또는 출력을 할 수 없다고 명시하고 있습니다.

[별표 1] 국가공간정보 세부 분류기준 참조


또한, 브이월드 API 이용약관 제10조 6항 4조(서비스의 이용)와 제12조(저작권) 위배의 소지가 있음을 알려드립니다.


따라서, 공개제한 자료로 분류되어 있는 브이월드 3차원 데이터 저장 관련 VWLAB 게시물 중 브이월드 3D데이터 저장 관련된 내용과 코드를 삭제 및 해당 게시물들의 제목도 변경해주시면 감사하겠습니다.


자세한 사항은 아래에 공간정보규정 URL 참고해주시기 바랍니다.


1. 국토교통부 국가공간정보 보안관리 규정

http://www.law.go.kr/admRulLsInfoP.do?admRulId=61075&efYd=&admRulNm=%EA%B5%AD%ED%86%A0%EA%B5%90%ED%86%B5%EB%B6%80%EA%B5%AD%EA%B0%80%EA%B3%B5%EA%B0%84%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B4%80%EB%A6%AC%EA%B7%9C%EC%A0%95#AJAX


2. 브이월드 오픈API 이용약관

http://www.vworld.kr/dev/v4dv_apicla_a001.do


3.국가공간정보 기본법

http://www.law.go.kr/%EB%B2%95%EB%A0%B9/%EA%B5%AD%EA%B0%80%EA%B3%B5%EA%B0%84%EC%A0%95%EB%B3%B4%EA%B8%B0%EB%B3%B8%EB%B2%95/(12736,20140603)


4.공간정보의 구축 및 관리 등에 관한 법률

http://www.law.go.kr/%EB%B2%95%EB%A0%B9/%EA%B3%B5%EA%B0%84%EC%A0%95%EB%B3%B4%EC%9D%98%EA%B5%AC%EC%B6%95%EB%B0%8F%EA%B4%80%EB%A6%AC%EB%93%B1%EC%97%90%EA%B4%80%ED%95%9C%EB%B2%95%EB%A5%A0


추가문의 사항이 있으시면 해당메일 혹은 고객센터로 연락주시면 답변드리겠습니다.

감사합니다.


공간정보산업진흥원

정 보 화 사 업 팀

Tel  :      1661-0115

Fax :      031-627-0594

E-mail :  vworld@spacen.or.kr

경기도 성남시 분당구 판교로 242 PDC(판교디지털센터)타워 C동 601호, 13487

++++++++++++++++++++