2010년 8월 25일 수요일

ArcSDE 관련 문제해결


문제발생 : 기존 사용자(아래 예에서는 BASEMAP)의 테이블스페이스, 데이터 파일, 사용자를 오라클에서 물리적으로 삭제 후 새로 BASEMAP 사용자를 생성한 상태에서 ArcCatalog 등에서 피쳐클래스 및 테이블을 업로드 할 경우 이미 테이블이 있다고 나오는 경우

 : 이는 SDE 시스템 테이블에 기존 데이터 정보가 남아 있어서 발생하는 오류이며 아래 순서대로 관련 테이블의 BASEMAP 사용자 관련 테이블 정보를 삭제하면 됨

 
1. SQL/PLUS 등에서 SDE 유저로 접속

2. SDE 시스템 테이블은 지오데이터베이스로 관리하는 GDB_*로 시작하는 테이블 및 SDE 관리테이블(LAYERS, SPATIAL_REFERENCES 등)이 있습니다.

 : 수정 대상 테이블은 다음과 같으며 하나씩 확인해 가면서 수정하세요.

 : UI 도구를 사용한다면 되도록이면 수정 전에 테이블에 어떤 내용이 들어 있는지 확인해 보세요. ArcSDE 테이블 이해에 도움이 됩니다.

: 만약 버저닝을 사용하면 더 많은 테이블이 관련되어 있습니다. 자세한 내용은 다음을 참고하세요

3. 테이블 수정 내용
▣ LAYERS
 : SELECT COUNT(*) FROM LAYERS WHERE OWNER = 'BASEMAP';
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM LAYERS WHERE OWNER = 'BASEMAP';
 
▣ GEOMETRY_COLUMNS
 : SELECT COUNT(*) FROM GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'BASEMAP';
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'BASEMAP';

▣ COLUMN_REGISTRY
 : SELECT COUNT(*) FROM COLUMN_REGISTRY WHERE OWNER = 'BASEMAP';
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM COLUMN_REGISTRY WHERE OWNER = 'BASEMAP';

▣ TABLE_REGISTRY
 : SELECT COUNT(*) FROM TABLE_REGISTRY WHERE OWNER = 'BASEMAP';
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM TABLE_REGISTRY WHERE OWNER = 'BASEMAP';
 
▣ GDB_USERMETADATA
 : SELECT COUNT(*) FROM GDB_USERMETADATA WHERE OWNER = 'BASEMAP';
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM GDB_USERMETADATA WHERE OWNER = 'BASEMAP';
 
▣ GDB_FIELDINFO
 : SELECT COUNT(*) FROM GDB_FIELDINFO WHERE CLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM GDB_FIELDINFO WHERE CLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');

▣ GDB_FEATUREDATASET
 : SELECT COUNT(*) FROM GDB_FEATUREDATASET WHERE OWNER = 'BASEMAP';
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM GDB_FEATUREDATASET WHERE OWNER = 'BASEMAP';

▣ GDB_FEATURECLASSES
 : SELECT COUNT(*) FROM GDB_FEATURECLASSES WHERE OBJECTCLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM GDB_FEATURECLASSES WHERE OBJECTCLASSID IN (SELECT ID FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP');
 
▣ GDB_OBJECTCLASSES
 : 마지막 수정해야 할 테이블입니다.
 : SELECT COUNT(*) FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP';
 : 갯수가 0개 이상이면 다음을 수행
 : DELETE FROM GDB_OBJECTCLASSES WHERE OWNER = 'BASEMAP';

마지막으로 커밋 하시면 됩니다.

2010년 8월 19일 목요일

수치지도 Ver.2.0(NGI 포맷)의 변환 및 활용 2

지난 시간에 수치지도 Ver 2.0(NGI 포맷, 국토지리정보원 내부포맷)에 대해서 간략히 살펴보았습니다. 앞서 살펴보았듯이 NGI 포맷의 변환 도구들을 쉽게 구할 수 없습니다.

여기에서는 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에서의 활용

2010년 8월 7일 토요일

[foursquare]Where Do You Go

foursquare에서 내가 체크인한 장소를 활용한 heatmap 서비스입니다.

foursquare 사용자라면 홈에 가서 다양한 App들을 활용해 보실 수 있습니다.

전 조만간 월별/시간대별로 SpiderMap 같은 지도를 만들어 보려고 합니다.

아마 이미 App들이 있을 지도 모르겠네요...

1. URL

2. 활동반경