여기에서는 ArcObject를 활용하여 Custom Plug-in Data Source를 구현했습니다. 일반적으로 ArcObject에서 Custom Data Source를 구현하는 방법은 3가지로 알려져 있으니 한번 확인해 보시기 바랍니다.
1. 구현 환경
- Microsoft Visual Studio 2008 Visual C# 및 .NET Framework 3.5
- ArcGIS Engine Developer Kit 9.3
2. 제약사항
- NGI 및 NDA, 즉 ASCII 포맷만 지원
- NGI 데이터에 읽기전용만 지원
- ArcGIS Desktop이나 ArcGIS Engine 9.3 이상에서 지원하며 반드시 .NET Support 옵션을 설치해야 함
- 국토지리정보원에서 제공하는 샘플 데이터 및 기타 샘플 데이터에서만 테스트 했으므로 다양한 환경에서의 테스트를 못함
- NGI 포맷에서 TEXT(주기) 유형은 포인트(Point)로 인식하도록 설정
- 만약 NGI(공간데이터)만 포함되어 있고 NDA(속성데이터)가 없을 경우에도 확인 및 불러오기 등이 가능하나 변환시 속성정보는 포함하지 않음
3. 향후 일정
- 내보내기 일괄작업을 위한 도구 제공
: 대량의 NGI 파일 레이어 분류 후 Merge 등
: 내보내기 일괄작업을 위한 UI
- 속도 개선
: 현재 그리기할 때 마다 파일 읽기 --> 캐쉬적용
- 기타 버그 수정
4. 프로그램 다운로드 및 라이센스
▣ 라이센스 공지
- 상업적 이용을 제외한 아무나 사용 가능하며, 사용상 오류에 대한 어떤 책임도 없음을 밝혀둡니다.
- 이 프로그램은 이 블로그에서만 배포될 수 있으며, 업데이트 역시 이 블로그를 통해서 이루어집니다.
▣ 프로그램 다운로드
5. 플러그인 데이터소스 설치 및 제거
▣ 설치
위 다운로드 받은 파일을 압축 해제 후 setup.exe 파일을 더블클릭하여 설치합니다.
▣ 제거
[제어판] -> [프로그램 추가/제거] -> [NGI Plugin for ArcGIS] 선택 후 제거 버튼을 눌러 프로그램을 제거합니다.
6. 활용 예
▣ ArcMap에서의 활용
◎ 레이어 불러오기
NGI 포맷은 Cad Dataset과 같이 Feature Dataset으로 인식하도록 구현하였으며, NGI 파일 하나를 Feature Dataset으로 인식한다. 다음 그림과 같이 [Add Data]버튼을 이용하여 레이어 불러오기가 가능하며 Feature Dataset을 불러오면 NGI 파일에 포함된 모든 레이어(Feaure Class)를 한번에 불러온다. Feature Dataset을 더블클릭하여 개별 레이어를 하나씩 불러올 수 있다.
◎ 레이어 등록정보
NGI 레이어 역시 Feature Layer이므로 레이어 등록정보의 모든 기능을 사용할 수 있음.
◎ 속성 확인
NGI 레이어 중 건물 레이어의 속성을 확인하는 예
◎ 레이어 내보내기 1
TOC(Table Of Contents) -> 레이어 선택 -> 팝업메뉴 -> Data -> Export Data... 메뉴를 실행하여 다양한 포맷으로 내보내기 실행
◎ 여러 레이어 한번에 Shapefile로 내보내기
ArcToolbox -> Conversion Tools -> To Shapefile -> Feature Class To Shapefile (multiple) 도구 실행 후 TOC에서 레이어를 한번에 선택 후 드래그 & 드랍하여 도구에 레이어 추가 후 변환.
현재까지는 반드시 Drag&Drop만 이용가능하며, 직접 불러왔을 경우 오류가 발생하며, 추후 수정 후 공지 예정
◎ 기타 기능
편집기능을 제외한 TIN, Raster 변환 등 레이어를 Source로 활용하는 분석 등 가능
▣ ArcCatalog에서의 활용
그런데문제는 ngi파일을 열고나서 쉐입으로변환하면 속성이 일부 짤립니다.
답글삭제예를들어 어느필드에(kid필드) 속성값이 1234678910e45454 라고있으면 변환하고나면 1234567810 만남고 뒤에가 없어지더군요..ㅠㅠㅠ
이것이 밀리는현상이라고 업계에서는그러던데요.
그냥 도형변환이 문제면 상관없는데 속성도 잘변환이 되어야하는사업이면 문제가 되더군요.지금현재 이렇게되서 사업을 진행해야하는데 걱정입니다.
그리고 ngimap이라고 국립지리원에 변환툴이있는데 이것이 용량이 크거나 자료가 좀뻑이난것은 변환이 아예안됩니다.ngi파일문제많아요...ㅠㅠㅠㅠㅠㅠㅠ
그래서 어느회사들은 자체적으로 만든 스크립트로 변환한다고 하더군요.
또한 이플러그인으로 아크지아이에스에서 변환하고 나면 새로운 필드가 하나생기더군요.오브젝트티아이디라고 필드가하나생기더군요.
그냥 원래 ngi테이블데로 변환하게는 안되는지요.
도와주세요
@666 - 2010/08/12 12:54
답글삭제혹시 문제가 되는 ngi 파일 샘플 얻을 수 있나요? 전 국토지리정보원에 나온 샘플만 테스트를 해본 상태라 어떤 문제가 있는지 몰라요...
가능하면 해결해 보도록 하겠습니다...
사업을 하는데 지금이문제로 고생이심합니다.메일주소알려주시면 보내드릴께요
답글삭제아니면 제 네이트온 아이디가 kimsunhoi 입니다.선생님도 네이트온이있으시면 아이디알려주십시요.보내드리게요
답글삭제@666 - 2010/08/12 13:50
답글삭제제 메일은 mapplus @ gmail.com 입니다.
메일보냈습니다.신경써주셔서고맙습니다.
답글삭제@666 - 2010/08/12 14:10
답글삭제네, 문제 확인 후 알려드리도록 하겠습니다. 좋은 하루 되세요
선생님정말고맙습니다.복받으세요
답글삭제지오매니아3.0에서도 변환이되는데 문제는 지오매니아는 속성은 잘변환이되는데 도형이 깨지는군요.
답글삭제역시 아크지아이에스에서 변환해야하는것이 맞다는결론인데.속성이난감하군요.
오늘도 좋은하루되세요
수정해주신 파일로하니 변환이 잘됩니다.정말고맙습니다.
답글삭제다만 기존에 ngi를 열면 문제의필드의속성이 스트링이고 테이터길이가 18이었습니다.지금보니 변환하고나서 길이가 34로 변했네요.
시스템에 올라가지않을가걱정이됩니다.
하지만 이만큼 해주신것도 고맙습니다.정말감사드립니다.시스템에올라가지않던올라가든 전만족합니다.
다시한번 고맙습니다.
복받으십시요.
참고로 오브젝트아이디필드는 그냥 생겨도 필드삭제로지워버렸습니다.그렇게해도되죠? 하하
다시한번 바쁘신데불구하고 수정을 해주셔서 고맙습니다.
그럼주말잘보내십시요.
건강하시죠.한가지이상한것은 20개이상의 ngi파일이어느폴더에있으면 아크지아이에스에서 그폴더로 들어가게되면 20개나되는 모든 ngi파일이 보이지않습니다.빈폴더로보이죠.
답글삭제한마디로 ngi파일이 많으면 용량이 꽤되죠.그런폴더는 들어가도 ngi파일이 보이지않습니다.
뭐이것은 어쩔수없는것같은데요.파일하나가 600메가되는 것은 한참있다가(7분걸립니다) 폴더로들어가지드라구요.용량문제가 큰거같습니다.
@666 - 2010/08/24 17:31
답글삭제NGI 파일의 경우 DXF(Drawing eXchange Format)와 같이 데이터 교환포맷이라 GIS엔진 전용의 포맷(Drawing 속도, 저장공간 등의 효율성 측면)으로 사용하기에는 무리가 있습니다. Ascii 포맷에 NGI 파일 내 헤더부분이 따로 없어, 여러 레이어의 메타정보를 얻을 수 없으므로 초기에 모든 파일을 전체스캔을 해야 레이어 정보를 알 수가 있습니다. 이런 이유로 같은 문제가 발생하는 것 같습니다.
아그렇군요.속시원하게 답해주셔서고맙습니다.아크지아이에스도 10버전이 나왔는데 업그래이드계획은없으신지요.아크10사용해보니 좋더군요.그럼수고하세요.
답글삭제9.3.1 버전에서는 데이터 추가에서
답글삭제ngi파일이 보이지 않습니다.
이럴경우에는 어떤걸 확인해야 하는지요
제가 9.3 버전과 10.0 버전의 ArcGIS만을 테스트해서 9.3.1 버전에서는 설치시 오류라든지 내용 파악이 현재 어렵습니다. 주변 분들께 알아보고 가능하면 문제점을 알아보도록 하겠습니다.
답글삭제국토지리정보원에서 ngi파일을 샀는데 ngi map 으로 변환시키려 하니 프로그램 오류가 뜨고 올려놓으신 플러그인을 설치했는데 add data에서 ngi 파일이 보이지 않습니다... ㅠ arc gis버전은 9.3.1 입니다
답글삭제