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

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







COMMENT : 29 TRACKBACK : 0

  • baek 2018.12.01 19:36

    안녀하세요. 엄청 쉽게 설명해주셔서 너무 감사드립니다. 스크립트를 실행시키니
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at vworld.Building3dCrawler.xdo32Parser(Building3dCrawler.java:467)
    at vworld.Building3dCrawler.xdosToObj(Building3dCrawler.java:231)
    at vworld.Building3dCrawler.main(Building3dCrawler.java:144)
    라고 나오는데 혹시 해결방법이 있을까요?
    최종시도된 파일을 지우고 했는데도 그대로라서요 ㅠㅠ

  • Sean 2018.12.17 14:29

    저도 아래 baek님과 같은 에러가..해결 방법이 있을까요?

  • Jake 2019.01.11 17:25

    저도 같은 문제가 발생합니다ㅠㅠ

  • kim 2019.01.13 14:51

    저도 같은 오류가 발생하네용 ㅠ퓨ㅠㅠ

  • 윗 분들에게 답변을 드리자면,
    실행 단계에서의 에러는 여러가지 상황에서 발생합니다.
    메모리 에러 같은 경우에는 너무 많은 영역을 한번에 받으려 해서 그럴 수도 있고, 그리 많지는 않지만 컴퓨터 RAM이 상대적으로 부족할 수도 있습니다. 혹은 서버쪽에서 넘어오는 파일에 오류가 있어서 그럴 수도 있습니다. 상황에 따라 다르게 대응하여 처리해야 합니다.

    보통 상업적으로 판매되는 프로그램들은 이러한 다양한 상황에 대해 대비를 잘 하는 편이고요, 제가 배포한 코드들은 그러한 에러들에 대해서 예외 처리가 잘 되어있지 않습니다. 따라서 기본적인 사용법은 말씀드릴 수 있지만, 에러가 발생하는 상황은 개인적인 환경에 따라 워낙 다양하기 때문에 하나하나 대응해드리기 어려운 점 양해해 주시기 바랍니다.
    답답하시겠지만, 개인적으로 아는 분들을 수소문하셔서 해결하셔야 합니다.

    그리고 혹시라도 해결하신다면, 다른 분들을 위해서 이 곳에 에러가 난 상황과 해결 방법을 적어주시면 서로서로에게 도움이 될 것 같습니다.

  • kim 2019.01.14 23:18

    답변 감사드립니다
    다양하게 시도해 보도록 하겠습니다

  • park 2019.01.31 07:38

    자료 없음이라고 그냥 넘어가는 곳은 원래 그런건가요??

  • ChuCh 2019.03.20 16:26

    xdo 파일같은경우는 전부다 생성이 되어있는데 obj 파일을 생성할 때 같은 조건에서 플레이 버튼을 눌러도 한꺼번에 모든 지형 빌딩을 불러오지 못하고 지형을 불러오거나 또는 빌딩만 불러오는데 이유를 도무지 모르겠습니다.

    • 지형과 빌딩은 각각 다른 코드에서 작동합니다. 원래 별도로 실행시켜 주어야 하는 것입니다. 현재 활성화된 창의 코드가 실행되는 것입니다. dem크롤러를 활성화 시켰을 때는 지형을 받고, 빌딩크롤러를 활성화 시켰을 때는 건물을 받게 됩니다.

  • Lee 2019.03.20 18:40

    저 또한 간간히 baek 님과 같은 에러가 발생하기도 하고 되기도 했던 사람인데 오늘 조금 알아낸 것이 있어 적어봅니다. 좌표를 입력할때 반드시 좌하단, 우상단으로 입력해야지 그렇지 않을 시엔 반드시 메모리 에러가 발생한다는걸 알게되어 적어봅니다. 습관적으로 좌상단 우하단을 입력했을때는 에러가 뜨더니 좌하단 우상단으로 입력하니 제대로 작동하네요.

  • fhdhsk 2019.04.01 22:54

    위 글대로 해서 도시쪽은 큰 문제가 없는 듯한데요..
    독도를 브이월드에서 확인해보니 해상도가 꽤 높아보이길래, 받아볼까 했는데... 이게 왠걸.. 지도 이미지만 받아지고 쓸 수 있는 3차원 형태의 obj 파일이 한개도 안받아지는데요.. 혹시 시간되시면 테스트좀 해주실 수 있나요..

    위의 소스를 수정하면 받을 수 있는 상황인건지.. 아니면 브이월드에서 아얘 소스를 막아놓은건지 그게 궁금합니다. 눈으로는 높은 해상도의 3차원 물체들이 막 보이는데, 막상 위 소스로 다운받으면 전부 건너 뛰더라고요...

    • 궁금하신 내용은 브이월드 측에 문의하셔야 할 것 같습니다. 위의 크롤러는 불법 수집이 아닌, 정식 Open API을 사용한 것이므로 떳떳하게 문의하실 수 있습니다.

      만약 브이월드 측으로부터 '막아놓은 것이 아니다'라는 답변을 받으신다면 다시 댓글 부탁드립니다.

  • fhdhsk 2019.04.02 14:34

    독도 관련 답글을 받았는데요...
    다음 URL 에서 데이터 레이블 중에서 독도 관련된거로 찾아서 하라고 답변 받았습니다.
    http://xdworld.vworld.kr:8080/XDServer/3DData?Version=2.0.0.0&Request=GetCapabilities&Key=

    facility_dokdo
    facility_dokdo_mo
    poi_em_dokdo

    가 보이는데요 3개다 시도했지만...

    Building3dCrawler.java 에서

    vertexCount 가 음수가 나오면서
    xdo32Parser 메서드에서 java.lang.NegativeArraySizeException 에러가 터지면서 더이상 진행이 안됩니다.

    줌레벨은 13이 최고 인듯하여 기존의 15를 13으로 바꿔서 시도해보았구요.

    DemCrawler에서는 URL에서 조건을 달리해서 줄 사항은 보이지 않구요... 실행하면 일반 위성사진 몇장만 그려지는 수준이고 3차원 obj로 그려지는 것은 없네요.

    • 안녕하세요.
      상세한 댓글 덕분에 많은 시행착오 없이 기존 코드의 오류를 알게 된 점 감사드립니다.
      3.0.0.2 버젼의 파일을 받을 경우 xdo 안에 포함된 최저 해상도 기본 이미지를 읽지 않고 다음 루프로 돌아가기 때문에 vertexCount에서 자기 자리가 아닌 다른 저장공간을 읽어버렸기 때문에 음수가 나오는 문제였습니다.
      해당 부분을 처리해서 깃허브에 업데이트 해 놓았습니다.

      독도의 경우 말씀하신대로 facility_dokdo와 레벨 13으로 받아야 합니다.
      독도는 dongdo.xdo와 seodo.xdo로 구성되어 있는데, dongdo.xdo의 경우 파일 자체에 다른 오류가 있어, 이것도 바로 잡았습니다. 다시 코드를 다운받아서 시도해보면 잘 될 것입니다.

  • jini 2019.04.02 15:15

    작년 여름부터 덕분에 잘 쓰고 있습니다.

    최근 유튜브 동영상으로 게재되어 올라온 것을 보고 다들 쉽게 따라하시더라구요.

    https://www.youtube.com/watch?v=jya16CWnDAI

    다른분이 올려두신 것 같은데, 참조 차 링크 올려두었습니다.

  • lee 2019.04.03 00:38

    안녕하세요. 저는 리눅스나 맥에서 사용하고 싶어서요.
    일단 역슬래쉬 \\ 를 // 이걸로 바꾸어 보았는데, 에러가 나네요 ㅠ

    279430 , 116108 | 279437 , 116118
    file :279430_116108세션 시작.....1/88
    final_object file279430_116108.obj저장시도.....1/88
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at vworld.Building3dCrawler.xdosToObj(Building3dCrawler.java:204)
    at vworld.Building3dCrawler.main(Building3dCrawler.java:144)

    혹시 해결책이 있을까요? 감사합니다.

    • lee 2019.04.03 10:24

      203 - 204 라인의

      temp = line.split("\\|");
      String version = temp[0].split("\\.")[3];

      "\\" 역슬레쉬는 바꾸지 않고, 경로의 \\만 //으로 바꾸니 리눅스나 맥에서 잘 돌아갑니다.

      감사합니다.

    • 안녕하세요. 제가 맥과 리눅스를 쓰지 않아서 해당 부분에 대한 대응이 어려웠습니다만, 다행히도 해결 방법을 찾아내셨네요.

      split 메서드의 경우 괄호 안의 내용을 정규식이라는 형식으로 받아들이는데요, | 나 . 의 경우 정규식의 특수한 역할을 하기 때문에 \\를 추가해서 '특수 역할을 하지 말고 일반 문자로 인식하라'고 알려주는 것입니다.

      그래서 말씀하신대로 그 부분을 수정하게 되면 또 다른 측면의 에러가 발생했던 것 같습니다.

      운영체제마다 경로 표현하는 부분이 조금씩 다른 것 같네요.
      감사합니다.

  • lee 2019.04.06 23:43

    사용하다가 vertexCount가 1447382048 인 경우를 만났습니다ㅠ
    보통은 1000개 내외인데, 너무 큰것 같네요;;;
    사용한 위경도 좌표는
    String minmax = "37.56662, 126.97091, 37.57816, 126.98540";
    입니다. 경복궁이 살짝 포함되어 있는 범위입니다.
    혹시 해결책이 있을까요? 감사합니다.

    • lee 2019.04.08 10:20

      최신버전으로 사용하였구요. 문제가 되는 xdo 파일 이름까지는 알아내었습니다.
      a12_619.xdo
      그리고 type 부터 이상하게 자료가 읽히네요...

      type = 60
      objectId = 1819113535
      keyLen = 32
      altitude =1.8497383E31
      faceNum = 116
      vertexCount = 1447382048

      a12_619.xdo 파일 읽어보니 자료가 들어 있지 않았고, Error code가 들어있었네요!

      <?xml version="1.0"?><Error code="ERROR_SERVICE_FILE_NOTTHING"><Version>1.0</Version><Exist LEVEL="15" IDX="279416" IDY="116122" FILE="a12_619.xdo"/></Error>

      그래서 type 이 60이면 건너뛰기했습니다.
      int type = pU8(bis);
      if ( type == 60 ) return;

      우선 성공했구요... 좀 더 좋은 방법이 있으면 업데이트 부탁드려요~

    • 말씀하신대로, xdo 파일이 서버에 없을 경우 제일 첫 글자가 괄호(<)로 시작하는 문자열을 되돌려줍니다. 위 댓글에서 처리하신대로 괄호의 아스키코드값인 60을 확인하여 리턴(=예외처리)해주셔도 되고, 정상이 아닐 경우를 확인하여 리턴해주셔도 됩니다.

      정상적일 경우에는 type의 값이 8이 되어야 합니다.
      해당 부분 깃헙에 수정해 놓았습니다.

      그리고, 에러나는 파일 자체에 관해서는 브이월드에 문의하셔야 합니다.

  • Lee 2019.04.11 08:29

    쉽게 따라할 수 있게 올려주셔서 따라해보았습니다.
    그런데 몇번을 시도해도 똑같은 오류가 뜨는데
    Exception in thread "main" java.lang.NullPointerException
    at vworld.Building3dCrawler.getFileNames(Building3dCrawler.java:979)
    at vworld.Building3dCrawler.main(Building3dCrawler.java:85)
    이 오류거나
    Exception in thread "main" java.lang.NullPointerException
    at vworld.DEMCrawler.getFileNames(DEMCrawler.java:412)
    at vworld.DEMCrawler.main(DEMCrawler.java:111)
    이 오류가 뜹니다.. 해결방법이 혹시 있을까요

    • 리눅스나 맥 환경이라면 위의 댓글들을 참고해보세요.
      윈도 환경이라면 드라이브 이름과 파일 경로가 제대로 설정되었는지 게시글을 참고해서 확인하시기 바랍니다.

  • lee 2019.05.03 17:34

    280871 , 114583 | 280878 , 114589
    file :280871_114583세션 시작.....1/56
    final_object file280871_114583.obj저장시도.....1/56
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15
    at vworld.Building3dCrawler.xdosToObj(Building3dCrawler.java:206)
    at vworld.Building3dCrawler.main(Building3dCrawler.java:144)

    이게 왜 이렇게 되는 건가요. ㅠ_ㅠ

    • 간혹 데이터 오류가 있기도 합니다. 일단은 해당 부분을 피해서 다운로드 받는 방법밖에 없습니다.

  • 김민규 2019.06.28 00:08

    안녕하세요. 게시해주신 코드를 통해 지금까지 잘 사용하였습니다. 저 또한 브이월드가 발전하길 바라는 마음에 설문 조사도 성실히 했음에도 불구하고, 전화가 와서는 다운받은 데이터를 다 지우라고 하네요.

    담당자와 통화를 하는데 추후 좌표값 없이 데이터를 제공하는 등의 방안을 만들고 있다고 해요. 그리고 언급하신대로 데이터 저장 없이 API요청해서 렌더링을 하게 한다고 하는데, 이는 공급자 입장만을 고려한 서비스로 보여지네요. 답답하네요. 안 그래도 공간정보 산업이 점차 줄어들고 공공SI에만 치중되고 있는데, 이러한 규제가 공간정보 산업 발전을 막네요.

    작은 푸념으로 글을 남겨봅니다.

    브이더블유랩에 감사드립니다.

  • 김수정 2019.07.05 17:51

    그동안 맵핑파일 유용하게 활용할 수 있도록 도움을 주셔서 감사했습니다. 학생입장에서는 도시 공공성개념이 제도화된지 30년이상 된 것으로 배워왔는데 막상 사회나와서 실무하려고 보니 법이 되려 나서서 공공재를 사유재처럼 취급하는 세태네요

Category

Function

Date

2018.03.27 10:12

위로가기