본문 바로가기

Function

vworld 3d model을 받는 Java 코드 실행시키기

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 

브이더블유랩 소장 김승범

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






이 글은 앞서 올린 두 글에서 설명한 코드를 실행하는 방법을 설명하고 있다. 코드를 사용할 줄 모르거나 자바에 익숙하지 않은 초심자용이다.


지형 정보를 받는 http://www.vw-lab.com/52 

건물 정보를 받는 http://www.vw-lab.com/53

이 두 글에 나온 깃허브의 코드는 아래 글을 따라해보면서 실행할 수 있다.



1. 자바 JDK(Java Development Kit) 다운받기



우선, 일반적인 사용자들이 받는 자바런타임라이브러리와는 달리 자바JDK를 다운받아서 설치해야 한다. 구글에서 위와 같이 검색하고, Downloads 페이지를 들어가서 자신의 운영체제와 맞는 버젼을 다운 받는다.




윈도우의 경우 위의 그림에서, 아래의 두 개 중 자신의 상황에 맞는 버젼을 다운받으면 된다.




2. 이클립스 설치


자바 코드를 실행시킬 수 있는 개발환경(코드 수정 및 실행 프로그램)이다. 역시 아래와 같이 검색을 해서 다운받는다.






대표이미지


현재 버젼의 코드네임은 OXYGEN. 





다운로드 받고 설치한다. 설치 중간에 어떤 버젼을 설치할 것인가를 물어보는데, 맨 위에 있는 ....Java.... 를 선택하면 가장 기본적인 프로그램이 설치된다.




프로그램을 설치한 후 처음 실행을 시키면 , 첫 실행에서만 작업폴더 경로를 설정하라고 물어본다.

여기서는 D:\java2 로 두었다.




프로그램을 처음 실행시킨 후 오른쪽에 접혀 있는 pakage explorer를 펼치면 아마도 위와 비슷한 화면이 나올 것이다.

이제 프로젝트를 등록할 차례.




위와 같이 File → New →Java Project 로 들어가 선택한다.






이름은 Vworld 정도로 해둔다. 기본 설정을 바꾸지 않는다면 위와 같이 나온다. 곧바로 Finish를 누른다.



3. 코드 다운받기



위의 링크로 들어가 화면 오른쪽에 보이는 Clone or Download  Download Zip 을 누른다. 자동으로 다운된다.

일단 압축을 풀어둔다. 

lib 폴더와 하위 파일들을 앞서 이클립스에서 등록한 작업 폴더 밑으로 옮겨준다. 즉, D:\Java2\lib 가 되도록 한다.




4. 라이브러리와 코드 등록



다시 이클립스로 돌아와 먼저 라이브러리를 등록한다. 위에 보이는 경로에서 Confihure Build Path를 선택한다.





 Java Build Path → Add External JARs를 선택한 후,




Java2(작업폴더) 밑에 옮겨 둔 lib 파일들을 선택해서 등록한다.





위와 같이 등록이 되어 있을 것이다. Apply and Close 후 빠져나온다.




위의 화면처럼 등록되어 있는지 확인한다.





이제 코드를 옮길 차례다. 다운로드 후 압축을 푼 위의 두개 폴더를 선택한 후 복사(Ctrl-C).






이클립스에서 src를 선택한 채로 붙여넣기한다.



위의 화면처럼 등록이 되었을 것이다. 두 폴더들도 자동적으로 실제 D:\Java2\Vworld 밑으로 들어간다.






그런데 파일을 열어보면 한글이 깨져보일 수 있다. 프로젝트를 선택하고, Properties 선택.





Resource 에서 파일 인코딩을 UTF-8로 바꿔준다.

이제 한글이 잘 보인다.





5. 실행하기





이제 코드를 차례차례 수정하면서 실행하면 된다. 

DEMCralwer.java 와 Building3DCrawler.java 모두 비슷하게 바꿔주면 된다.


일단 원 글에서 설명한대로 Vworld에서 api키를 신청 후 받아서 위의 자리에 대체시켜준다.








지도에서 직사각형 형태의 영역을 설정하여 안쪽에 해당하는 영역의 데이터를 받아올 수 있다. 

가져올 영역의 좌하단 꼭지점, 우상단 꼭지점의 경위도를 위와 같이 연속적인 순서로 넣어준다. 

구글맵의 원하는 지점을 클릭하면 경위도가 나온다. 구글맵은 위도 경도 순서인데, 그것을 그대로 복사해서 넣어주면 된다.






이제 교량을 받아올 것인지, 건물을 받아올 것인지 선택. 역시 원 글 참고. 여기까지 하고 실행하면 된다. 


독도의 경우 특별히 facility_dokdo와 level 13을 입력해야 한다.







아이콘 중에 플레이 모양 버튼을 누르면 실행된다.






아래의 콘솔 창에 진행경과가 나온다.

간혹 서버와의 응답 문제로 에러가 난다. 

멈출 경우에는 처음부터 다시 시작해야 한다.


국토부 보안관리규정 등  관련 공간정보산업 진흥원의 요청으로 파일을 저장할 수 없다.(2019.05.20 업데이트)

실행이 끝나면 당연히 아무 파일도 남지 않는다.


파일로 저장할 수 없으므로, 받아온 내용을 이용하려면 추가적인 코드를 작성해서 사용해야 한다.





6. 참고


만약 실행 속도를 빠르게 하고자 한다면 텍스쳐 파일을 처리하는 부분을 건너뜀으로서 시간을 절약할 수 있다.


아래와 같은 부분들을 찾아서 주석처리한다. 슬래시 두개를 연속으로 줄 앞에 쓰면 녹색으로 변하면서 그 코드는 실행되지 않는 설명문으로 바뀐다.

DEMCralwer.java 에는 두 곳, Building3dCrawler.java 에는 총 네 곳이 있다.


물론 나중에라도 필요하면 주석을 풀고 실행시켜 추가적으로 가져올 수 있다.


----

국토부 보안관리규정 등  관련 공간정보산업 진흥원의 요청으로 파일을 저장할 수 없다.(2019.05.20 업데이트)

따라서 아래에 보이는 이미지 파일은 실제 코드와 약간 다를 수 있다.

-----










세부적으로 궁금하신 내용이 있다면 검색하시면 많은 내용들을 찾으실 수 있습니다. 이클립스 설치와 같은 많은 부분들이 인터넷에 더 자세한 설명과 함께 설치 방법들이 있습니다. 기초적인 질문에는 답변을 드리지 못할 수도 있는 점, 미리 양해를 구합니다.





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

2019.04.03 추가



독도를 받을 때 필요한 내용을 추가하여 github에 업데이트 해 놓았습니다.


3.0.0.2 버젼의 파일을 받을 때 오류가 날 수 있는 부분을 정정하여 업데이트 해 놓았습니다.



유투브에 권동호 님이 올려주신 영상도 있습니다. 

영상이 편한 분들은 참고하세요.

https://youtu.be/jya16CWnDAI

이 링크도 국토부 보안관리규정 등  관련 공간정보산업 진흥원의 요청으로 삭제된 것 같습니다.(2019.05.20 업데이트)


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

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

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